使用伪区域设置进行可本地化性测试

伪区域设置内置于 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 10 版本 1709 及更早版本:通过向 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)。