Función GetUILanguageInfo (winnls.h)

Recupera una variedad de información sobre un idioma de interfaz de usuario instalado:

  • ¿Está instalado el idioma?
  • ¿El usuario actual tiene licencia para usar el idioma?
  • ¿El idioma está totalmente localizado? ¿Localizado parcialmente? ¿Parte de un paquete de instalación de idioma (LIP)?
  • Si se localiza parcialmente o forma parte de un LIP:
    • ¿Cuál es su idioma de reserva?
    • Si ese idioma de reserva es un idioma parcialmente localizado, ¿cuál es su base?
    • ¿Cuál es el idioma de reserva predeterminado?

Sintaxis

BOOL GetUILanguageInfo(
  [in]                DWORD    dwFlags,
  [in]                PCZZWSTR pwmszLanguage,
  [out, optional]     PZZWSTR  pwszFallbackLanguages,
  [in, out, optional] PDWORD   pcchFallbackLanguages,
  [out]               PDWORD   pAttributes
);

Parámetros

[in] dwFlags

Marcas que definen el formato del idioma especificado. Las marcas son mutuamente excluyentes y el valor predeterminado es MUI_LANGUAGE_NAME.

Valor Significado
MUI_LANGUAGE_ID
Recupere las cadenas de idioma en formato de identificador de idioma .
MUI_LANGUAGE_NAME
Recupere las cadenas de idioma en formato de nombre de idioma .

[in] pwmszLanguage

Puntero a los idiomas para los que la función va a recuperar información. Este parámetro indica una lista ordenada delimitada por valores NULL de identificadores de idioma o nombres de idioma, según la configuración de la marca. Para obtener información sobre el uso de este parámetro, vea la sección Comentarios.

[out, optional] pwszFallbackLanguages

Puntero a un búfer en el que esta función recupera una lista ordenada delimitada por null de idiomas de reserva, con el formato definido por la configuración de dwFlags. Esta lista termina con dos caracteres NULL.

Como alternativa, si este parámetro se establece en NULL y pcchLanguagesBuffer está establecido en 0, la función recupera el tamaño necesario del búfer de idioma en pcchLanguagesBuffer. El tamaño necesario incluye los dos caracteres NULL.

[in, out, optional] pcchFallbackLanguages

Puntero al tamaño, en caracteres, para el búfer de idioma indicado por pwszFallbackLanguages. Si la función se devuelve correctamente, el parámetro contiene el tamaño del búfer de idioma recuperado.

Como alternativa, si este parámetro se establece en 0 y pwszLanguagesBuffer se establece en NULL, la función recupera el tamaño necesario del búfer de idioma en pcchLanguagesBuffer.

[out] pAttributes

Puntero a marcas que indican los atributos de la lista de idiomas de entrada. La función siempre recupera la marca que caracteriza al último idioma enumerado.

Valor Significado
MUI_FULL_LANGUAGE
El idioma está totalmente localizado.
MUI_PARTIAL_LANGUAGE
El idioma se localiza parcialmente.
MUI_LIP_LANGUAGE
El idioma es un idioma LIP.
 

Además, pdwAttributes incluye una o ambas marcas, según corresponda.

Valor Significado
MUI_LANGUAGE_INSTALLED
El idioma está instalado en este equipo.
MUI_LANGUAGE_LICENSED
El idioma tiene la licencia adecuada para el usuario actual.

Valor devuelto

Devuelve TRUE si es correcto o FALSE en caso contrario. Para obtener información de error extendida, la aplicación puede llamar a GetLastError, que puede devolver los siguientes códigos de error:

  • ERROR_INSUFFICIENT_BUFFER. Un tamaño de búfer proporcionado no era lo suficientemente grande o se estableció incorrectamente en NULL.
  • ERROR_INVALID_PARAMETER. Cualquiera de los valores de parámetro no era válido. Para obtener más información, vea la sección Comentarios.
  • ERROR_OBJECT_NAME_NOT_FOUND. No se encontró el nombre de objeto especificado o no era válido o el primer idioma de la lista de entrada no es un idioma instalado. Para obtener más información, vea la sección Comentarios.
Si GetLastError devuelve cualquier otro código de error, los parámetros pcchFallbackLanguages y pdwAttributes no están definidos.

Comentarios

MUI_LANGUAGE_NAME se recomienda en MUI_LANGUAGE_ID porque permite a la función realizar un mejor trabajo de control de los lenguajes LIP que no corresponden a configuraciones regionales predefinidas, sino que se corresponden con una configuración regional complementaria. Los lenguajes LIP que corresponden a configuraciones regionales predefinidas se controlan igual que los lenguajes que no son LIP.

Si se especifica la marca MUI_LANGUAGE_ID, las cadenas de idioma proporcionadas deben

use identificadores de idioma hexadecimales que no incluyan el 0x inicial y que tienen una longitud de 4 caracteres.

Por ejemplo, en-US debe pasarse como "0409" y en como "0009". Las cadenas de idioma devueltas estarán en

mismo formato.

Cuando se especifica MUI_LANGUAGE_ID y si hay un idioma de este tipo en la lista de idiomas preferidos de la interfaz de usuario del usuario, solo puede haber uno de estos idiomas en la lista. Ese idioma se puede especificar en pwmszLanguage como "1400", que corresponde al valor hexadecimal de LOCALE_CUSTOM_UI_DEFAULT. No se puede especificar ningún otro lenguaje de este tipo mediante MUI_LANGUAGE_ID. El uso de "1000", que corresponde al valor hexadecimal de LOCALE_CUSTOM_UNSPECIFIED, en la cadena indicada por pwmszLanguage dará como resultado un código ERROR_INVALID_PARAMETER.

Un idioma localizado parcialmente puede tener un idioma de reserva localizado parcialmente, lo que requiere llamadas repetidas a GetUILanguageInfo para obtener información completa. Considere el caso de un idioma parcialmente localizado Lang1 que ofrece una opción de tres idiomas de reserva. El idioma de reserva Lang3 se localiza parcialmente y ofrece una opción de dos idiomas de reserva. Las dependencias son las siguientes, con la reserva predeterminada que se muestra primero:

  • Lang1
    • Lang2
    • Lang3
      • Lang5
      • Lang6
    • Lang4
Para obtener los idiomas de reserva de Lang1, la aplicación pasa pwmszLanguage como "Lang1\0\0". A cambio de la función, pwszFallbackLanguages se establece en "Lang2\0Lang3\0Lang4\0\0". Tenga en cuenta que la ordenación de esta lista indica que Lang2 es el idioma de reserva predeterminado.

Para obtener los idiomas de reserva de Lang3 en relación con Lang1, la aplicación pasa pwmszLanguage como "lang1\0\lang3\0\0\0". Al volver de la función, pwszFallbackLanguages se establece en "Lang5\0Lang6\0\0".

Esta función devuelve ERROR_INVALID_PARAMETER para cualquiera de las siguientes opciones:

  • pwmszLanguage es NULL o está vacío.
  • Se establecen MUI_LANGUAGE_ID y MUI_LANGUAGE_NAME.
  • Se establecen marcas que no sean MUI_LANGUAGE_ID o MUI_LANGUAGE_NAME.
  • pcchFallbackLanguages es mayor que 0, pero pwszFallbackLanguages es NULL.
  • pwmszLanguage no se puede analizar como un búfer de varias cadenas de identificadores de idioma o nombres de idioma, según la configuración de la marca.
El código de error ERROR_OBJECT_NAME_NOT_FOUND se produce si pwmszLanguage se puede analizar, pero no es válido. El código también se puede devolver para un identificador de configuración regional no válido, o si el primer idioma de la lista de entrada no es un idioma instalado, o si un idioma totalmente localizado ha definido un idioma de reserva.

Firma de C#

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.Boolean GetUILanguageInfo(
            System.UInt32 dwFlags,
            System.String pwmszLanguage,
            System.IntPtr pwszFallbackLanguages,
            ref System.UInt32 pcchFallbackLanguages,
            ref System.UInt32 pdwAttributes
            );

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winnls.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

EnumUILanguages

GetFileMUIInfo

Interfaz de usuario multilingüe

Funciones de interfaz de usuario multilingüe