Поделиться через


Функция GetSystemPreferredUILanguages (winnls.h)

Извлекает предпочитаемые системой языки пользовательского интерфейса. Дополнительные сведения см. в разделе Управление языком пользовательского интерфейса.

Синтаксис

BOOL GetSystemPreferredUILanguages(
  [in]            DWORD   dwFlags,
  [out]           PULONG  pulNumLanguages,
  [out, optional] PZZWSTR pwszLanguagesBuffer,
  [in, out]       PULONG  pcchLanguagesBuffer
);

Параметры

[in] dwFlags

Флаги, определяющие языковой формат и фильтрацию. Следующие флаги определяют формат, используемый для предпочитаемых системой языков пользовательского интерфейса. Флаги являются взаимоисключающими, а значение по умолчанию — MUI_LANGUAGE_NAME.

Значение Значение
MUI_LANGUAGE_ID
Получение строк языка в формате идентификатора языка .
MUI_LANGUAGE_NAME
Получение строк языка в формате имени языка .
 

Следующий флаг указывает, должна ли функция проверять список языков (по умолчанию) или получать список предпочитаемых системой языков пользовательского интерфейса точно так, как он хранится в реестре.

Значение Значение
MUI_MACHINE_LANGUAGE_SETTINGS
Получите список хранимых системных предпочитаемых языков пользовательского интерфейса, проверяя только, соответствует ли каждое имя языка допустимому языковому стандарту NLS. Если этот флаг не установлен, функция извлекает предпочитаемые системой языки пользовательского интерфейса в pwszLanguagesBuffer, если список не пуст и соответствует критериям проверки. В противном случае функция получает системный язык пользовательского интерфейса по умолчанию в языковом буфере.

[out] pulNumLanguages

Указатель на количество языков, полученных в pwszLanguagesBuffer.

[out, optional] pwszLanguagesBuffer

Необязательный элемент. Указатель на буфер, в котором эта функция получает упорядоченный список системных языков пользовательского интерфейса с разделителями NULL в формате, определенном dwFlags. Этот список заканчивается двумя символами NULL.

Кроме того, если для этого параметра задано значение NULL , а для pcchLanguagesBuffer задано значение 0, функция извлекает требуемый размер буфера языка в pcchLanguagesBuffer. Требуемый размер включает два символа NULL.

[in, out] pcchLanguagesBuffer

Указатель на размер (в символах) для буфера языка, указанного pwszLanguagesBuffer. При успешном возвращении из функции параметр содержит размер извлеченного языкового буфера.

Кроме того, если для этого параметра задано значение 0, а для pwszLanguagesBuffer задано значение NULL, функция получает требуемый размер буфера языка в pcchLanguagesBuffer.

Возвращаемое значение

Возвращает значение TRUE в случае успешного выполнения или false в противном случае. Чтобы получить расширенные сведения об ошибке, приложение может вызвать Метод GetLastError, который может возвращать один из следующих кодов ошибок:

  • ERROR_INSUFFICIENT_BUFFER. Указанный размер буфера был недостаточно велик или для него неправильно задано значение NULL.

Если функция завершается сбоем по какой-либо другой причине, параметры pulNumLanguages и pcchLanguagesBuffer не определены.

Комментарии

При указании MUI_LANGUAGE_ID извлекаемой строкой языка будут шестнадцатеричные идентификаторы языка.

не включают в себя 0x в начале и будут содержать 4 символа. Например, возвращается en-US

как "0409" и en как "0009".

Системные предпочитаемые языки пользовательского интерфейса не могут содержать более одного языка интерфейса пользователя , соответствующего дополнительному языковому стандарту. Если список содержит более одного из этих языков и если приложение указывает MUI_LANGUAGE_ID в вызове функции, буфер языка содержит "1400" для этого языка. Эта строка соответствует шестнадцатеричным значениям LOCALE_CUSTOM_UI_DEFAULT.

Если установлен флаг MUI_MACHINE_LANGUAGE_SETTINGS, эта функция проверяет каждый язык в списке, который представляет допустимый языковой стандарт NLS. Полученный список может содержать следующие элементы:

  • Языки, не установленные в системе
  • Повторяющиеся записи языка
  • Пустая строка
Если установлен флаг MUI_MACHINE_LANGUAGE_SETTINGS, а список предпочитаемых в системе языков пользовательского интерфейса пуст, функция извлекает пустую строку в буфере языка (два символа NULL, так как это буфер с несколькими строками), 0 — для количества языков и 2 — для размера буфера.

Если флаг MUI_MACHINE_LANGUAGE_SETTINGS не задан, полученный список языков имеет следующие характеристики:

  • Каждый язык представляет допустимый языковой стандарт NLS.
  • Каждый язык установлен в операционной системе.
  • Список содержит одну запись для каждого языка без повторяющихся записей.

Подпись C#

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

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header winnls.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

GetSystemDefaultUILanguage

GetThreadPreferredUILanguages

GetThreadUILanguage

GetUserPreferredUILanguages

Многоязыковой интерфейс пользователя

Функции многоязыкового пользовательского интерфейса

SetThreadPreferredUILanguages