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


Функция 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.

Значение Значение
MUI_LANGUAGE_ID
Получение строк языка в формате идентификатора языка .
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

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

Значение Значение
MUI_FULL_LANGUAGE
Язык полностью локализован.
MUI_PARTIAL_LANGUAGE
Язык частично локализован.
MUI_LIP_LANGUAGE
Язык является языком LIP.
 

Кроме того, pdwAttributes включает один или оба из следующих флагов, если это необходимо.

Значение Значение
MUI_LANGUAGE_INSTALLED
Язык установлен на этом компьютере.
MUI_LANGUAGE_LICENSED
Язык имеет соответствующую лицензию для текущего пользователя.

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

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

  • ERROR_INSUFFICIENT_BUFFER. Указанный размер буфера был недостаточно велик или для него неправильно задано значение NULL.
  • ERROR_INVALID_PARAMETER. Любое из значений параметров было недопустимым. Дополнительные сведения см. в подразделе "Примечания".
  • ERROR_OBJECT_NAME_NOT_FOUND. Указанное имя объекта не найдено, либо оно не является допустимым, либо первый язык в списке входных данных не является установленным языком. Дополнительные сведения см. в подразделе "Примечания".
Если GetLastError возвращает любой другой код ошибки, параметры pcchFallbackLanguages и pdwAttributes не определены.

Комментарии

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
Чтобы получить резервные языки Lang1, приложение передает pwmszLanguage как "Lang1\0\0". При возвращении из функции pwszFallbackLanguages имеет значение "Lang2\0Lang3\0Lang4\0\0". Обратите внимание, что порядок этого списка указывает, что резервным языком по умолчанию является Lang2.

Чтобы получить резервные языки 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 не может быть проанализирован как многостроковый буфер идентификаторов языков или имен языков в зависимости от параметра флага.
Код ошибки ERROR_OBJECT_NAME_NOT_FOUND возникает, если 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

См. также

EnumUILanguages

GetFileMUIInfo

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

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