GetUILanguageInfo 函式 (winnls.h)
擷取已安裝UI語言的各種資訊:
- 是否安裝語言?
- 目前的使用者是否授權使用語言?
- 語言是否完全當地語系化? 部分當地語系化? 語言安裝套件的一部分 (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 也會視需要包含下列其中一個或兩個旗標。
值 | 意義 |
---|---|
|
此電腦已安裝語言。 |
|
語言已針對目前用戶適當授權。 |
傳回值
如果成功或 FALSE,則傳回 TRUE 。否則傳回 TRUE 。 若要取得擴充錯誤資訊,應用程式可以呼叫 GetLastError,其可傳回下列錯誤碼:
- ERROR_INSUFFICIENT_BUFFER。 提供的緩衝區大小不夠大,或設定為 NULL 不正確。
- ERROR_INVALID_PARAMETER。 任何參數值都無效。 如需詳細資訊,請參閱<備註>。
- ERROR_OBJECT_NAME_NOT_FOUND。 找不到指定的物件名稱,或無效,或輸入清單中的第一種語言不是已安裝的語言。 如需詳細資訊,請參閱<備註>。
備註
建議使用MUI_LANGUAGE_NAME而非MUI_LANGUAGE_ID,因為它可讓函式更妥善地處理未對應至預先定義地區設定的LIPS 語言,而是對應至 補充地區設定。 對應至預先定義地區設定的LIP 語言會像非LIP 語言一樣處理。
如果指定MUI_LANGUAGE_ID旗標,則所提供的語言字串必須
使用不包含前置 0x 且長度為 4 個字元的十六進位語言標識碼。
例如,en-US 應該以 “0409” 傳遞,en 作為 “0009”。 傳回的語言字串將會位於 中
相同的格式。
指定MUI_LANGUAGE_ID時,如果在使用者慣用UI語言清單中有這類語言,則清單中只能有一種這類語言。 該語言可以在 pwmszLanguage 中指定為 “1400”,其對應於 LOCALE_CUSTOM_UI_DEFAULT的十六進位值。 您可以使用 MUI_LANGUAGE_ID 來指定任何其他這類語言。 使用 「1000」,其對應於 LOCALE_CUSTOM_UNSPECIFIED的十六進位值, 在 pwmszLanguage 所指示的字串中,將會產生ERROR_INVALID_PARAMETER程式代碼。
部分本地化的語言可以有部分本地化的後援語言,需要 重複呼叫 GetUILanguageInfo 以取得完整資訊。 請考慮部分當地語系化語言 Lang1 的案例,該語言提供三種後援語言的選擇。 Lang3 後援語言已部分當地語系化,並提供兩種後援語言的選擇。 相依性如下所示,並先列出預設後援:
- Lang1
- Lang2
- Lang3
- Lang5
- Lang6
- Lang4
若要取得與 Lang1 相關的 Lang3 (後援語言) ,應用程式會將 pwmszLanguage 傳遞為 “lang1\0\lang3\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 |
標頭 | winnls.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |