Función SetThreadPreferredUILanguages (winnls.h)

Establece los idiomas de interfaz de usuario preferidos para el subproceso actual. Para obtener más información, consulte User Interface Language Management.

Nota El sistema operativo también usa esta función para identificar los idiomas que son seguros de usar en la consola de Windows.
 

Sintaxis

BOOL SetThreadPreferredUILanguages(
  [in]            DWORD    dwFlags,
  [in, optional]  PCZZWSTR pwszLanguagesBuffer,
  [out, optional] PULONG   pulNumLanguages
);

Parámetros

[in] dwFlags

Marcas que identifican el formato y el filtrado de los idiomas que se van a establecer.

Las marcas de formato siguientes especifican el formato de idioma que se va a usar para los idiomas preferidos de la interfaz de usuario del subproceso . Las marcas son mutuamente excluyentes y el valor predeterminado es MUI_LANGUAGE_NAME.

Se recomienda usar MUI_LANGUAGE_NAME en lugar de MUI_LANGUAGE_ID.

Valor Significado
MUI_LANGUAGE_ID
Las cadenas de idioma del parámetro de entrada están en formato de identificador de idioma .
MUI_LANGUAGE_NAME
Las cadenas de idioma del parámetro de entrada están en formato de nombre de idioma .
 

Las siguientes marcas de filtrado especifican el filtrado de la lista de idiomas. Las marcas son mutuamente excluyentes. De forma predeterminada, no se establece ni MUI_COMPLEX_SCRIPT_FILTER ni MUI_CONSOLE_FILTER. Para obtener más información sobre las marcas de filtrado, vea la sección Comentarios.

Valor Significado
MUI_COMPLEX_SCRIPT_FILTER

GetThreadPreferredUILanguages debe reemplazar por la reserva adecuada todos los lenguajes que tengan scripts complejos. Cuando se especifica esta marca, se debe pasar NULL para todos los demás parámetros.

MUI_CONSOLE_FILTER

GetThreadPreferredUILanguages debe reemplazar por la reserva adecuada todos los idiomas que no se pueden mostrar correctamente en una ventana de consola con la configuración actual del sistema operativo. Cuando se especifica esta marca, se debe pasar NULL para todos los demás parámetros.

MUI_RESET_FILTERS
Restablezca el filtrado de la lista de idiomas quitando cualquier otra configuración de filtro. Cuando se especifica esta marca, se debe pasar NULL para todos los demás parámetros. Después de establecer esta marca, la aplicación puede llamar a GetThreadPreferredUILanguages para recuperar la lista completa sin filtrar.

[in, optional] pwszLanguagesBuffer

Puntero a un búfer de varias cadenas con terminación NULL doble que contiene una lista ordenada delimitada por null, en el formato especificado por dwFlags.

Para borrar la lista de idiomas preferidos de la interfaz de usuario del subproceso, una aplicación establece este parámetro en una cadena nula o en una cadena doble terminada en NULL vacía. Si una aplicación borra una lista de idioma, debe especificar una marca de formato o 0 para el parámetro dwFlags .

Cuando la aplicación especifica una de las marcas de filtrado, debe establecer este parámetro en NULL. En este caso, la función se realiza correctamente, pero no restablece los lenguajes preferidos del subproceso.

[out, optional] pulNumLanguages

Puntero al número de idiomas que la función ha establecido en la lista de idiomas preferidos de la interfaz de usuario del subproceso. Cuando la aplicación especifica una de las marcas de filtrado, la función debe establecer este parámetro en NULL.

Valor devuelto

Devuelve TRUE si la función se realiza correctamente o FALSE de lo contrario.

Comentarios

Cuando la aplicación carga los recursos después de una llamada a esta función, las preferencias específicas del subproceso tienen prioridad sobre los idiomas preferidos por el usuario.

Esta función puede configurar hasta cinco idiomas preferidos para el subproceso, en orden de preferencia. Si el búfer de idioma contiene más de cinco idiomas válidos, la función establece los cinco primeros idiomas válidos y omite el resto.

Si la aplicación llama a esta función con la marca MUI_LANGUAGE_ID establecida, las cadenas de la lista de idiomas deben usar el idioma hexadecimal.

identificadores que no incluyen el 0x inicial y tienen 4 caracteres de longitud. Por ejemplo, en-US debe ser

pasó como "0409" y en como "0009".

Cuando se especifica MUI_LANGUAGE_ID, los valores hexadecimales de la lista de idiomas deben representar cada uno un identificador de idioma real. En concreto, no se pueden usar los siguientes valores de identificador de configuración regional para corresponder al identificador de idioma:

Llamar a esta función con una lista de idioma vacía y establecer la marca de MUI_CONSOLE_FILTER tiene el mismo efecto que llamar a SetThreadUILanguage con el identificador de idioma establecido en 0. El idioma se establece correctamente para su uso en una ventana de consola.

Una vez que se devuelve esta función, la aplicación puede llamar a GetThreadPreferredUILanguages para comprobar y examinar la lista de idioma resultante. Cuando SetThreadPreferredUILanguages establece MUI_CONSOLE_FILTER o MUI_COMPLEX_FILTER, la función GetThreadPreferredUILanguages reemplaza por la reserva los idiomas que la consola no puede mostrar con la configuración actual del idioma del sistema operativo. La reserva de un idioma se determina en función del valor de LOCALE_SCONSOLEFALLBACKNAME para el idioma.

Al establecer la marca de MUI_COMPLEX_SCRIPT_FILTER en la llamada a SetThreadPreferredUILanguages , GetThreadPreferredUILanguages se quitan los idiomas que la consola no puede mostrar con idiomas que solo se pueden representar mediante Uniscribe e insertar el idioma de reserva como la reserva definitiva. Algunos ejemplos de estos idiomas son árabe o los distintos idiomas indices.

Al establecer la marca de MUI_CONSOLE_FILTER en la llamada a SetThreadPreferredUILanguages , GetThreadPreferredUILanguages quitar idiomas, la consola no puede mostrarse con la configuración actual del sistema e insertar el idioma de reserva como reserva definitiva, ya que la consola está limitada a mostrar caracteres de una sola página de códigos. Por ejemplo, si el idioma del usuario es japonés (Japón), pero la página de códigos de la consola actual es la página de códigos de Ruso (Rusia), la consola muestra texto en japonés principalmente como una serie de símbolos de caracteres no encontrados. GetThreadPreferredUILanguages elige un idioma de la lista de reserva que será legible en la consola.

Nota Las funciones de carga de recursos, como LoadString, LoadImage y FindResource, también realizan llamadas a GetThreadPreferredUILanguages.
 
Para cambiar la página de códigos, la aplicación usa la función setlocale o equivalente.

Firma de C#

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.Boolean SetThreadPreferredUILanguages(
            System.UInt32 dwFlags,
            System.String pwszLanguagesBuffer,
            ref System.UInt32 pulNumLanguages
            );

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 (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

GetThreadPreferredUILanguages

Interfaz de usuario multilingüe

Funciones de interfaz de usuario multilingüe

SetThreadUILanguage