如何在Windows中使用enable pseudo-locale进行测试?

Ian*_*oyd 19 windows localization internationalization windows-7 pseudolocalization

Windows Vista引入了三种伪语言环境的概念:

Pseudo Locale        Locale Name  LCID           
===================  ===========  ======
Base                 qps-ploc     0x0501
Mirrored             qps-mirr     0x09ff
East Asian-language  qps-asia     0x05fe
Run Code Online (Sandbox Code Playgroud)

启用Base语言环境非常有用,因为您可以检查应用程序是否使用当前语言环境来设置日期,时间,数字,金钱等项目的格式.

例如,当前区域设置设置为Base时,日期将格式化为:

[Шěđлеśđαỳ!!!],8ōf[Μäŕςћ!!]ōf2006

Windows的构建实际上是用伪完成的,然后本地化为英文:

在此输入图像描述

使用这些语言环境的另一个值:它测试您的应用程序不会假设16位PRIMARYLANGID由以下内容组成:

  • 8位主要语言ID
  • 8位子语言id

在现实中PRIMARYLANGID是:

  • 一个10位的主要语言ID
  • 一个6位的子语言id

或图形化:

+-----------------------+-------------------------+
|     Sublanguage ID    |   Primary Language ID   |
+-----------------------+-------------------------+
 15                   10 9                       0   bit
Run Code Online (Sandbox Code Playgroud)

这三个伪语言环境终于走到了第8位的末尾(微软一直厌倦了打破错误的应用程序).

如何在Windows中启用伪语言环境?

也可以看看

Ian*_*oyd 22

如何在Windows中启用伪语言环境?

最初,在控制面板中看不到三个伪语言环境:

请注意,NLS不会自动枚举伪语言环境或在控制面板的区域和语言选项部分中公开它们.如果在注册表中设置了值,则它们只是可枚举的.

您通过添加一些注册表项来启用它们:

[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)
Run Code Online (Sandbox Code Playgroud)

可以在RegEdit中完成:

在此输入图像描述

然后,您可以转到"控制面板"中的" 区域和语言选项 ":

在此输入图像描述

并选择伪语言环境:

在此输入图像描述

三种不同的伪语言环境用于测试3种语言环境:

基地qps-ploc区域用于英文般的伪本地化.它的字符串是英文字符串的较长版本,使用非拉丁字母和重音字符而不是普通脚本.此外,简单的拉丁字符串应该使用此语言环境以相反顺序排序.

镜像 qpa-mirr用于从右到左的伪数据,这是测试的另一个感兴趣的领域.

东亚地区 qps-asia旨在利用大型CJK角色曲目,这对测试也很有用.


警告:不要试图改变"系统区域设置":

在此输入图像描述

到一个新的伪语言环境:

在此输入图像描述

否则重启后:

在此输入图像描述

Windows将无法启动:

在此输入图像描述

唯一的解决方法是从故障恢复控制台手动编辑注册表 ; 恢复旧的en-US区域设置.


警告

使用伪语言环境用于在软件中查找本地化错误.不幸的是,这也会让你发现其他人软件中的错误; 包括微软的:

  • 与其他语言环境一起呈现时,SQL Server Management Studio 1崩溃(Microsoft Connect):

    在此输入图像描述
    在此输入图像描述 在此输入图像描述

  • Microsoft Excel将不再允许您输入功能(用于分隔参数的逗号不再起作用)

  • Visual Studio将不再允许您编辑逗号分隔的属性

  • SQL Server Management Studio图表设计器报告错误

  • .NET在日期和时间格式中有一个错误,显示 22////11////2011 4::::42::::53 P??M]

  • Windows事件查看器:

    在此输入图像描述

  • 任务计划程序:

    在此输入图像描述

  • SQL Server Management Studio:

    在此输入图像描述

好运让微软为他们自己的产品喂食.

1 10.50.1617.0


更新4 // 10/2012:

尝试在SQL Server Management Studio中编辑表的前200行:

在此输入图像描述

执行SQL语句SELECT TOP(200)...
错误源:Microsoft.SqlServer.Management.DataTools
错误消息:对象引用未设置为对象的实例

通过改变固定负号标志---.


Ian*_*oyd 5

您还可以更改Internet Explorer Accept-Languages以请求qps-ploc语言:

在此输入图像描述

您可以使用它来测试您的网站是否支持psuedo-locale,并检查任何缺少的本地化:

在此输入图像描述

您可以看到我在此示例网站中错过了两位文本.