如何在Windows中使用启用伪语言环境进行测试?

2023-12-26

Windows Vista引入了三个概念伪语言环境 http://msdn.microsoft.com/en-us/library/dd319106%28v=vs.85%29.aspx:

Pseudo Locale        Locale Name  LCID           
===================  ===========  ======
Base                 qps-ploc     0x0501
Mirrored             qps-mirr     0x09ff
East Asian-language  qps-asia     0x05fe

启用Base区域设置很有用,因为您可以检查应用程序是否正在使用当前区域设置来格式化日期、时间、数字、金钱等项目。

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

[Шěđлеśđαỳ !!!], 2006 年第 8 期 [Maŕςћ !!]

构建于Windows实际上是用伪代码完成的 http://www.siao2.com/2011/04/11/10152035.aspx,然后本地化为英文:

面向全球市场设计 Windows 7 https://learn.microsoft.com/en-us/archive/blogs/e7/engineering-windows-7-for-a-global-market

伪本地化

为了防止常见的全球化错误,创建了伪本地化版本。伪本地化是用人工语言创建本地化产品的过程。该语言与英语相同,只是每个字符都是用视觉上与英语字符相似的不同字符书写的。除了完全由机器生成之外,我们创建伪本地化构建的方式与创建本地化构建的方式完全相同。因为即使是单一语言的美国软件开发人员也可以阅读伪本地化文本,因此它已被证明是在开发周期早期发现全球化问题的绝佳方法。在 Windows 7 Beta 中,一些 UI 元素仍处于伪本地化形式,从而引发了一些关于其含义的有趣理论。我们希望通过这篇博文能够解开这个谜团。 :-)

伪本地化 Windows 7 中的控制面板对话框

使用这些区域设置的另一个值:它测试您的应用程序是否假设 16 位PRIMARYLANGID http://msdn.microsoft.com/en-us/library/dd319102由以下部分组成:

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

when 实际上 PRIMARYLANGID 是 http://www.siao2.com/2005/03/02/383458.aspx:

  • 10 位主要语言 ID
  • 6 位子语言 ID

或以图形方式:

+-----------------------+-------------------------+
|     Sublanguage ID    |   Primary Language ID   |
+-----------------------+-------------------------+
 15                   10 9                       0   bit

这三个伪语言环境最终脱离了第 8 位的末尾(微软已经厌倦了这样做来破坏有缺陷的应用程序)。

如何在 Windows 中启用伪区域设置?

See also

  • MSDN:伪语言环境 http://msdn.microsoft.com/en-us/library/dd319106%28v=vs.85%29.aspx
  • MSDN:使用伪语言环境进行本地化测试 http://msdn.microsoft.com/en-us/library/dd374118%28v=vs.85%29.aspx
  • MSDN 博客:Windows Vista Beta 2 中的伪区域设置 http://blogs.msdn.com/b/shawnste/archive/2006/06/27/647915.aspx
  • MSDN 博客:我的一位同事是“伪人”(对话中双关语的丰富来源!) http://www.siao2.com/2011/04/11/10152035.aspx
  • MSDN 博客:走出第八位的末尾 http://www.siao2.com/2006/08/16/702877.aspx

如何在 Windows 中启用伪区域设置?

最初四个伪语言环境在控制面板中不可见 http://msdn.microsoft.com/en-us/library/dd374118%28v=vs.85%29.aspx: (Archive.org https://web.archive.org/web/20120121193858/http://msdn.microsoft.com/en-us/library/dd374118(v=vs.85).aspx)

请注意,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)

这可以在 RegEdit 中完成:

然后你可以去区域和语言选项在控制面板中:

并选择伪区域设置:

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

Base The qps-ploclocale 用于类似英语的伪本地化。它的字符串是英语字符串的较长版本,使用非拉丁字符和重音字符而不是正常的脚本。此外,简单的拉丁字符串应与此语言环境按相反的顺序排序。

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

东亚 qps-asia旨在利用大型 CJK 字符库,这对于测试也很有用。


Warning: Do not尝试改变“系统区域设置”:

到一个新的伪语言环境:

否则重启后:

Windows 将无法启动:

唯一的解决方法是从故障恢复控制台手动编辑注册表 https://superuser.com/questions/110210/how-to-edit-registry-from-vista-recovery-tool;恢复旧的en-US locale.


Warning

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

  • SQL Server Management Studio1 crashes when presented with other locales (Microsoft Connect http://connect.microsoft.com/SQLServer/feedback/details/683992/error-from-ssms-table-designer-when-current-locale-doesnt-use-single-hyphen-as-negative-symbol):

  • Microsoft Excel 将不再让您输入函数(comma用于分隔参数不再起作用)

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

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

  • .NET 在日期和时间格式方面存在错误,显示22////11////2011 4::::42::::53 P̰̃M]

  • Windows 事件查看器:

  • 任务调度程序:

  • SQL Server 管理工作室:

祝你好运,让微软测试他们自己的产品。

110.50.1617.0


2012 年 4 月 10 日更新:

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

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

通过改变固定负号符号 from -- to -.

奖励阅读

  • Windows Vista Beta 2 中的伪区域设置 https://blogs.msdn.microsoft.com/shawnste/2006/06/27/pseudo-locales-in-windows-vista-beta-2/ (档案库.is https://archive.fo/PMUum)
  • 如何测试您的应用程序的 Iñtërnâtiônàlizætiøn? (国际化?) https://stackoverflow.com/q/3054942/12597
  • 迈克尔·卡普兰:我的一位同事是“伪人”(谈话中双关语的丰富来源!) http://archives.miloush.net/michkap/archive/2011/04/11/10152035.html (RIP) (档案库.is https://archive.fo/bRY7E)
  • https://en.wikipedia.org/wiki/Pseudolocalization https://en.wikipedia.org/wiki/Pseudolocalization
  • MSDN: Using pseudo-locales for localizability testing https://learn.microsoft.com/en-us/windows/win32/intl/using-pseudo-locales-for-localization-testing#:%7E:text=The%20names%20of%20the%20pseudo-locales%20are%20%22qps-ploc%22%2C%20%22qps-ploca%22%2C,use%20GetLocaleInfoEx%20to%20retrieve%20information%20about%20a%20pseudo-locale. archive https://archive.vn/GjlSM
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Windows中使用启用伪语言环境进行测试? 的相关文章

随机推荐

  • PackageInstaller 完成(自我)更新后启动应用程序

    PackageInstaller 成功 自行 更新应用程序后 应用程序将关闭并且不会再次启动 可能重复 Android PackageInstaller 更新后重新打开应用程序 https stackoverflow com questio
  • Erlang 节点的数量可能/实用吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 1 Erlang 网络中可以存在的最大理论节点数是多少 理论 可能意味着 语言允许或不允许的任何内容 2 Erlang 网络中实际可以
  • 用于从故事板实例化的 UIViewController 扩展

    我正在尝试用 Swift 编写一个小扩展来处理 a 的实例化UIViewController来自故事板 我的想法如下 既然UIStoryboard的方法instantiateViewControllerWithIdentifier需要一个标
  • 为什么我们需要主干js或任何JS MVC框架?

    如果我们已经使用后端 MVC 框架 例如 Django 或 ROR 为什么还需要使用 JS MVC 框架 主干 我无法理解两个 MVC 框架的概念以及它们如何组合在一起 我认为所有前端相关文件或逻辑 html css js 都位于后端框架的
  • 如何获取 docker 镜像的准确日期?

    I run docker images并得到这样的东西 REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker io postgres latest a7d662bede59 2 weeks
  • 如何使用列标题引用 Google Apps 脚本电子表格中的单元格

    我有几个 Google 表格 可以连接并更新它们之间的单元格 现在我必须使用 R1C1 或 A1 类型引用来定义基于特定列的获取或设置单元格 如果添加新列 所有这些引用现在都会关闭 每个工作表的第一行都将列标题作为这些单元格中的值 我可以以
  • Solr 查询唯一整数字段

    我在 schema xml 中定义了一个字段
  • Django Forms clean() 方法 - 需要客户端的 IP 地址

    我正在重写 Django 表单上的 clean 方法 我想要访问客户端的 IP 地址 假设这是绑定表单 如果我有对请求对象的引用 我可以从 META REMOTE ADDR 轻松获取它 但是 我没有参考该请求 关于如何做到这一点有什么想法吗
  • 如何在 Keras 中实现自适应损失?

    我正在尝试使用 Keras 来实现中完成的工作通用的自适应鲁棒损失函数 https arxiv org abs 1701 03077 作者提供了处理困难细节的张量流代码 我只是想在 Keras 中使用他的预构建函数 他的自定义损失函数正在学
  • 是否可以收听“风格改变”事件?

    是否可以在 jQuery 中创建一个可以绑定到任何样式更改的事件侦听器 例如 如果我想在元素更改尺寸或样式属性中的任何其他更改时 执行 某些操作 我可以执行以下操作 div bind style function console log t
  • 将字符串转换为代码

    我想知道是否有任何方法可以转换String为Java可编译代码 我有一个比较表达式保存在数据库字段中 我想从数据库中检索它 然后在条件结构内对其进行评估 有什么办法可以做到这一点吗 如果您使用 Java 6 您可以尝试 Java 编译器 A
  • PHP MySQL 小查询超时,必须将限制设置为 10

    在为相对较小的查询调用 mysql query 时 我收到 PHP 超时错误 因此我必须将限制设置为 10 Fatal error Maximum execution time of 120 seconds exceeded in C xa
  • 角度路由when()无需映射到控制器或模板

    可以使用when 而不映射到任何控制器或模板吗 这就是我配置路线的方式 app config function routeProvider locationProvider locationProvider html5Mode true r
  • 如何在签署 pdf 文件时将时间戳属性添加到认证详细信息

    我想在证书中显示时间戳属性 如图所示 我应该在签名中设置什么 这是我添加标志信息的代码 private SignerInformation signTimeStamp SignerInformation signer throws IOEx
  • python“字符串”模块?

    所以我正在阅读这个旧模块 我认为是 2002 年左右 它有这一行 导入字符串 Python 是否要求您在能够使用字符串类型变量或其他东西之前显式导入字符串模块 我没有看到它在代码中这样使用 string something The stri
  • 天青错误。您没有权限查看该目录或页面

    当我导航到部署的 azure 网站时 出现错误 You do not have permission to view this directory or page 在我的 web config 中
  • 如何生成像github这样的个人访问令牌?

    这是理论问题 我想在 net core webapi 中创建类似 Github 个人访问令牌 的机制 该机制已经与 Identity Server 4 具有 ResourceOwnerPassword 流 理论上 我想根据用户请求手动生成令
  • 用分隔符分割字符串

    我目前正在尝试拆分字符串1128 2这样我就可以有两个不同的值 例如 value1 1128 和 value2 2 这样我就可以单独使用每个值 我努力了split 但没有成功 Grails 是否有特定的方法来处理这个问题 或者有更好的方法
  • 在 UML 中包含或扩展?

    据我所知 扩展关系是当用例是可选的时 但包含是当需要用例的操作时 但不是所有时候 我想为注册系统建模一个用例 但对使用哪种关系有疑问 我有两个可能的选择 我更热衷于 b 表示此操作的方式 因为修改数据和删除数据的部分不应该是可选的 它们用于
  • 如何在Windows中使用启用伪语言环境进行测试?

    Windows Vista引入了三个概念伪语言环境 http msdn microsoft com en us library dd319106 28v vs 85 29 aspx Pseudo Locale Locale Name LCI