使用虛擬地區設定進行當地語系化測試

虛擬地區 設定內建于 Windows Vista 和更新版本,因此您可以透過國家語言支援 (NLS) API 存取它們。 您可以使用虛擬地區設定來測試應用程式的 當地語系化能力 。 本主題包含使用虛擬程式碼的程式。

注意

在虛擬地區設定方面需要特別考慮的一項工作是列舉它們;無論是在您的程式碼中,還是主控台的區域和語言選項部分。 本主題稍後會進一步瞭解。

虛擬地區設定的名稱為 「qps-ploc」、「qps-ploca」 和 「qps-plocm」。 從Windows 10起,虛擬地區設定 「qps-Latn-x-sh」 也提供。

擷取虛擬地區設定的相關資訊

您可以使用 GetLocaleInfoEx 來擷取虛擬地區設定的相關資訊。 傳入函式特定虛擬地區設定的名稱, (請參閱上述名稱清單) 。 例如,鏡像虛擬地區設定的 「qps-plocm」。

wchar_t languageIdentifier[5];
int rc{ ::GetLocaleInfoEx(L"qps-plocm", LOCALE_ILANGUAGE, languageIdentifier, 5) };

搭配虛擬地區設定使用 LocaleNameToLCID

您可以使用虛擬地區設定的名稱呼叫 NLS 對應函式 LocaleNameToLCID

LCID lcid{ ::LocaleNameToLCID(L"qps-plocm", 0) };

啟用列舉的虛擬地區設定

在您的應用程式中,您可以呼叫 EnumSystemLocalesEx 來列舉系統辨識的地區設定。 主控台的區域和語言選項部分也會呼叫EnumSystemLocalesEx來建置顯示的地區設定清單。 不過,根據預設,系統無法辨識上述四個虛擬地區設定,因此 EnumSystemLocalesEx不會傳回它們。 針對從 Windows Vista 到 1709 版和包含 Windows 10 版的系統,解決方案是藉由將金鑰新增至 Windows 登錄來啟用虛擬地區設定。

編輯是在作業系統上安裝語言的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls機碼底下進行。 您可以進行這些設定來啟用虛擬地區設定。 以下顯示的每個索引鍵都是對應至所啟用虛擬地區設定的十六進位 LCID。 每個值的類型都是字串 (REG_SZ) 。

[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Nls\Locale]
"00000501"="1" // qps-ploc (Windows Vista and later)
"000005fe"="7" // qps-ploca (Windows Vista and later)
"00000901"="1" // qps-Latn-x-sh (Windows 10 and later)
"000009ff"="d" // qps-plocm (Windows Vista and later)

對於 Windows 10 1803 版,編輯 Windows 登錄,如下所示沒有任何作用。 但您仍然可以使用虛擬地區設定的名稱呼叫非列舉 NLS API, (請參閱上述程式碼範例,) 填入使用者介面 (UI) 。