我正在测试一个网站的伪本地化.
我可以将Internet Explorer配置为具有自定义接受语言:
qps-ploc(即Pseudo(Base)语言环境)
现在,当Internet Explorer发出http请求时,接受语言将引导qpc-ploc:
GET https://stackoverflow.com/ HTTP/1.1
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Accept-Language: qps-ploc,en-US;q=0.5
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: stackoverflow.com
Run Code Online (Sandbox Code Playgroud)
如何对Chrome执行相同的更改?到Firefox?
更新
还应注意,Internet Explorer 尊重我的Windows首选项.我的Windows配置为使用 …
localization google-chrome internationalization pseudolocalization http-accept-language
我的电脑配置的文化不是en-US.
使用本机Win32 GetDateFormat函数时,我得到了正确格式化的日期:
这是对的; 以及Windows呈现它的方式:
任务栏
区域和语言设置
Windows资源管理器
外表
当我尝试使用我当前的语言环境将日期转换为.NET中的字符串时,例如:
DateTime.Now.ToString();
DateTime.Now.ToString(CultureInfo.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)
我得到一个不正确的日期:
在使用有缺陷的.NET代码的Windows中,.NET中的这个错误很明显:
Windows事件查看器:
任务计划程序:
SQL Server Management Studio:
我如何使.NET没有错误?
如何使用当前文化(正确)将日期和时间转换为字符串?
注:允许用户设置自己的Windows任何区域的喜好,他们想要的.就像现在一样,我的程序将无法正确处理 有效设置.告诉用户,"不要这样做"是非常卑鄙的.
类似的例子来自Delphi,它假设日期分隔符永远不能超过一个字符.当Windows配置了使用多个字符作为日期分隔符的区域设置时,例如:
- sk-SK(斯洛伐克 - 斯洛伐克):
.日期应格式化为:
Run Code Online (Sandbox Code Playgroud)22. 11. 2011代码库无法接受长于一个字符的日期分隔符,并回退到:
Run Code Online (Sandbox Code Playgroud)22/11/2011在过去,有些人可能会建议你不要打扰这种边缘情况.这些建议对我没有任何影响.
我会避免与想要通过更改标题来改变我的问题含义的人进行一场惹人喜爱的比赛.但问题不仅限于伪语言环境,专门用于查找应用程序中的错误.
以下是来自世界各地的日期格式的唯一列表:
.net localization internationalization datetime-format 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

使用这些语言环境的另一个值:它测试您的应用程序不会假设16位PRIMARYLANGID由以下内容组成:
或图形化:
+-----------------------+-------------------------+
| Sublanguage ID | Primary Language ID |
+-----------------------+-------------------------+
15 10 9 0 bit
Run Code Online (Sandbox Code Playgroud)
这三个伪语言环境终于走到了第8位的末尾(微软一直厌倦了打破错误的应用程序).
如何在Windows中启用伪语言环境?
windows localization internationalization windows-7 pseudolocalization
我已经生成了应用程序资源文件的伪本地化版本(例如Order Summary and Payment本地化为[[[[[O?r?d?e?r? S?u?m?m?a?r?y? a?n?d? P?a?y?m?e?n?t?]]]]]),以便我们可以在获得实际翻译之前测试本地化错误。
我使用 qps-ploc 资源标识符命名它们以匹配现有的伪语言环境标识符,例如我的伪本地化版本Details.resx是 named Details.qps-ploc.resx。
但是,当我将这些 resx 文件添加到项目时,Visual Studio 会忽略它们。如果我使用“真实”语言代码(例如Details.fr-FR.resx)重命名它们,那么 Visual Studio 会创建一个以该语言代码命名的子文件夹并构建附属程序集。
所以在我看来,Visual Studio 拒绝 qps-ploc(甚至没有构建警告)。我是否遗漏了什么,或者有人可以建议一种方法来将这些 qps-ploc 资源构建为我的 Visual Studio 项目的一部分吗?
resources localization resx visual-studio pseudolocalization
我正在尝试使用伪本地化,如官方 android 文档中所示:
https://developer.android.com/guide/topics/resources/pseudolocales
我遵循每个步骤:
pseudoLocales true到 debug buildconfig 下的 gradle 文件中但不幸的是我找不到英语(XA)。也许我错过了一些东西。
在三星 Galaxy A7 上测试