Функция GetUILanguageInfo (winnls.h)
Извлекает различные сведения об установленном языке пользовательского интерфейса:
- Установлен ли язык?
- Имеет ли текущий пользователь лицензию на использование этого языка?
- Язык полностью локализован? Частично локализовано? Часть пакета языковой установки (LIP)?
- Если она частично локализована или является частью lip:
- Каков его резервный язык?
- Если этот резервный язык частично локализован, какова его основа?
- Какой резервный язык используется по умолчанию?
Синтаксис
BOOL GetUILanguageInfo(
[in] DWORD dwFlags,
[in] PCZZWSTR pwmszLanguage,
[out, optional] PZZWSTR pwszFallbackLanguages,
[in, out, optional] PDWORD pcchFallbackLanguages,
[out] PDWORD pAttributes
);
Параметры
[in] dwFlags
Флаги, определяющие формат указанного языка. Флаги являются взаимоисключающими, а значение по умолчанию — MUI_LANGUAGE_NAME.
Значение | Значение |
---|---|
|
Получение строк языка в формате идентификатора языка . |
|
Получение строк языка в формате имени языка . |
[in] pwmszLanguage
Указатель на языки, для которых функция получает сведения. Этот параметр указывает упорядоченный список идентификаторов языков или имен языков с разделителями NULL в зависимости от параметра флага. Сведения об использовании этого параметра см. в разделе Примечания.
[out, optional] pwszFallbackLanguages
Указатель на буфер, в котором эта функция извлекает упорядоченный список резервных языков с разделителями NULL, отформатированный в соответствии с параметром dwFlags. Этот список заканчивается двумя символами NULL.
Кроме того, если для этого параметра задано значение NULL , а для pcchLanguagesBuffer задано значение 0, функция извлекает требуемый размер буфера языка в pcchLanguagesBuffer. Требуемый размер включает два символа NULL.
[in, out, optional] pcchFallbackLanguages
Указатель на размер (в символах) для языкового буфера, указанного pwszFallbackLanguages. При успешном возвращении из функции параметр содержит размер извлеченного языкового буфера.
Кроме того, если для этого параметра задано значение 0, а для pwszLanguagesBuffer задано значение NULL, функция получает требуемый размер буфера языка в pcchLanguagesBuffer.
[out] pAttributes
Указатель на флаги, указывающие атрибуты списка языков ввода. Функция всегда получает флаг, характеризующий последний указанный язык.
Значение | Значение |
---|---|
|
Язык полностью локализован. |
|
Язык частично локализован. |
|
Язык является языком LIP. |
Кроме того, pdwAttributes включает один или оба из следующих флагов, если это необходимо.
Значение | Значение |
---|---|
|
Язык установлен на этом компьютере. |
|
Язык имеет соответствующую лицензию для текущего пользователя. |
Возвращаемое значение
Возвращает значение TRUE в случае успешного выполнения или false в противном случае. Чтобы получить расширенные сведения об ошибке, приложение может вызвать Метод GetLastError, который может возвращать следующие коды ошибок:
- ERROR_INSUFFICIENT_BUFFER. Указанный размер буфера был недостаточно велик или для него неправильно задано значение NULL.
- ERROR_INVALID_PARAMETER. Любое из значений параметров было недопустимым. Дополнительные сведения см. в подразделе "Примечания".
- ERROR_OBJECT_NAME_NOT_FOUND. Указанное имя объекта не найдено, либо оно не является допустимым, либо первый язык в списке входных данных не является установленным языком. Дополнительные сведения см. в подразделе "Примечания".
Комментарии
MUI_LANGUAGE_NAME рекомендуется использовать в MUI_LANGUAGE_ID, так как это позволяет функции лучше работать с языками LIP, которые не соответствуют предопределенным языковым параметрам, а соответствуют дополнительному языковому стандарту. Языки LIP, соответствующие предопределенным языковым параметрам, обрабатываются так же, как и языки, не относящиеся к lip.
Если указан флаг MUI_LANGUAGE_ID, необходимо использовать строки указанного языка.
используйте шестнадцатеричные идентификаторы языка, которые не содержат начального значения 0x и имеют длину 4 символа.
Например, en-US должен быть передан как "0409", а en как "0009". Возвращенные строки языка будут находиться в
тот же формат.
Если указан MUI_LANGUAGE_ID и в списке предпочитаемых пользователем языков пользовательского интерфейса есть такой язык, в списке может быть только один такой язык. Этот язык можно указать в pwmszLanguage как "1400", что соответствует шестнадцатеричным значениям LOCALE_CUSTOM_UI_DEFAULT. Другой такой язык не может быть указан с помощью MUI_LANGUAGE_ID. Использование "1000", соответствующего шестнадцатеричное значение LOCALE_CUSTOM_UNSPECIFIED, в строке, указанной pwmszLanguage , приведет к ERROR_INVALID_PARAMETER коду.
Частично локализованный язык может иметь частично локализованный резервный язык, требующий повторяющихся вызовов GetUILanguageInfo для получения полных сведений. Рассмотрим случай частично локализованного языка Lang1, который предлагает выбор из трех резервных языков. Резервный язык Lang3 частично локализован и предлагает два резервных языка. Ниже приведены зависимости, а в первую очередь указан резервный вариант по умолчанию:
- Lang1
- Lang2
- Ланг3
- Ланг5
- Lang6
- Lang4
Чтобы получить резервные языки Lang3 относительно Lang1, приложение передает pwmszLanguage как "lang1\0\lang3\0\0\0". При возвращении из функции pwszFallbackLanguages имеет значение "Lang5\0Lang6\0\0".
Эта функция возвращает ERROR_INVALID_PARAMETER для любого из следующих элементов:
- pwmszLanguage имеет значение NULL или пусто.
- Заданы MUI_LANGUAGE_ID и MUI_LANGUAGE_NAME.
- Устанавливаются все флаги, отличные от MUI_LANGUAGE_ID или MUI_LANGUAGE_NAME.
- pcchFallbackLanguages больше 0, но pwszFallbackLanguages имеет значение NULL.
- PwmszLanguage не может быть проанализирован как многостроковый буфер идентификаторов языков или имен языков в зависимости от параметра флага.
Подпись 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
);
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | winnls.h (включая Windows.h) |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |