问题标签 [pseudolocalization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 如何在 Windows 中使用启用伪语言环境进行测试?
Windows Vista 引入了三个伪语言环境的概念:
启用Base区域设置很有用,因为您可以检查您的应用程序是否使用当前区域设置来格式化日期、时间、数字、货币等项目。
例如,当当前语言环境设置为Base时,日期将被格式化为:
[Шěđлеśđαỳ !!!], 8 ōf [Μäŕςћ !!] ōf 2006
Windows 的构建实际上是用 pseudo 完成的,然后本地化为英文:
为全球市场设计 Windows 7
伪本地化
为了防止常见的全球化错误,创建了伪本地化构建。伪本地化是用人工语言创建本地化产品的过程。该语言与英语相同,只是每个字符都用不同的字符书写,在视觉上类似于英语字符。除了完全由机器生成之外,我们创建伪本地化构建的方式与创建本地化构建的方式完全相同。因为即使是单语的美国软件开发人员也可以阅读伪本地化文本,它已被证明是在开发周期早期发现全球化问题的绝佳方法。在 Windows 7 测试版中,一些 UI 元素仍处于其伪本地化形式,从而引发了一些关于其含义的有趣理论。我们希望我们已经通过这篇博文解决了这个谜团。:-)
伪本地化 Windows 7 中的控制面板对话框
使用这些语言环境的另一个价值:它测试您的应用程序不假设 16 位PRIMARYLANGID
由以下内容组成:
- 8 位主要语言 ID
- 8 位子语言 ID
实际上,PRIMARYLANGID 是:
- 一个 10 位的主要语言 ID
- 一个 6 位的子语言 id
或以图形方式:
这三个伪语言环境终于离开了第 8 位的末尾(微软已经厌倦了破坏有缺陷的应用程序)。
如何在 Windows 中启用伪语言环境?
也可以看看
google-chrome - 如何将自定义接受语言添加到 Chrome 以进行伪本地化测试?
我正在测试网站的伪本地化。
我可以将 Internet Explorer 配置为具有自定义接受语言:
- 单击工具,Internet 选项
- 在常规选项卡上单击语言
- 在语言首选项对话框中单击添加。
- 输入用户定义的语言
qps-ploc
(即伪(基本)语言环境) - 点击确定
现在,当 Internet Explorer 发出 http 请求时,接受语言将以qpc-ploc
:
如何对 Chrome 执行相同的更改?火狐?
更新
还应该注意的是,Internet Explorer尊重我的 Windows 偏好。我的 Windows 配置为使用伪(基本) qps-ploc
语言环境。默认情况下,Internet Explorer 使用它。
谷歌浏览器忽略了我的 Windows 偏好,而是决定请求en-US
和en
语言:
.net - .NET Date to string 在 Vista 伪文化中提供无效字符串
我的计算机配置的文化不是en-US
.
使用本机 Win32GetDateFormat
函数时,我得到正确格式的日期:
- 22//11//2011 4::42::53 P̰̃M]
这是对的; 也是 Windows 呈现它的方式:
任务栏
区域和语言设置
Windows资源管理器
外表
当我尝试使用我当前的语言环境将日期转换为 .NET 中的字符串时,例如:
我得到一个不正确的日期:
- 22////11////2011 4::::42::::53 P̰̃M]
.NET 中的这个错误在 Windows 中使用有错误的 .NET 代码的任何地方都很明显:
Windows 事件查看器:
任务调度器:
SQL Server 管理工作室:
我如何使 .NET 不出错?
如何使用当前文化(正确)将日期和时间转换为字符串?
注意:允许用户将他们的Windows 设置为他们想要的任何区域设置首选项。就像现在一样,我的程序将无法正确处理 有效设置。告诉用户“不要那样做”是非常卑鄙的。
一个类似的例子来自 Delphi,它假设日期分隔符不能超过一个字符。当 Windows 配置了使用多个字符作为日期分隔符的语言环境时,例如:
- sk-SK(斯洛伐克 - 斯洛伐克):
.
日期应格式化为:
代码库无法接受超过一个字符的日期分隔符,并回退到:
在过去,有些人可能会建议您不要为这种边缘情况而烦恼。这样的建议对我来说毫无意义。
我会避免与想要通过更改标题来改变我的问题含义的人发生小便比赛。但问题不限于伪语言环境,专门用于查找应用程序中的错误。
奖金喋喋不休
以下是来自世界各地的独特日期格式列表:
- 11.11.25
- 11.25.2011
- 2011 年 11 月 25 日
- 2011.11.25
- 2011.11.25。
- 2011/11/25
- 2011-11-25
- 2011
- 25.11.11
- 25.11.2011
- 25.11.2011
- 2011 年 11 月 25 日。
- 25//11//2011
- 25/11 2011
- 25/11/2011
- 25/11/2554
- 25-11-11
- 25-11-2011
- 29/12/32
特别感兴趣的是最后一个不使用公历的例子:
- 阿拉伯语(沙特阿拉伯)
ar-SA
:29/12/32 02:03:07 - Divehi (马尔代夫)
dv-MV
: 29/12/32 14:03:07 - 达里语/普什图语(阿富汗)
prf-AF / ps-AF
:29/12/32 2:03:07 غ.و
尽管这些是您永远不必担心的极端情况。
2011 年 14 月 12 日更新:
该错误的另一个演示是Datetime.Parse
无法解析DateTime.ToString
:
.Parse
抛出异常。
更新 02//8, 2012 09::56'12:
除了不正确之外,日期分隔符的任何使用都被弃用。来自 MSDN:
LOCALE_SDATE
Windows Vista 及更高版本:不推荐使用此常量。改为使用
LOCALE_SSHORTDATE
。自定义语言环境可能没有单个统一的分隔符。例如,“2006 年 12 月 31 日”这样的格式是有效的。LOCALE_STIME
Windows Vista 及更高版本:不推荐使用此常量。改为使用
LOCALE_STIMEFORMAT
。自定义语言环境可能没有单个统一的分隔符。例如,“03:56'23”这样的格式是有效的。
resx - MSBuild AssignCulture 任务将空区域性分配给伪区域性(qps-ploc、qps-plocm)
我的项目中有许多本地化的 RESX 文件:
最后一个是用于测试目的的伪本地化文本资源。我希望将其编译为卫星程序集(即 project/qps-ploc/project.resources.dll)作为本地化的其余部分。但由于某种原因,AssignCulture 任务正在为该资源分配空区域性,并且它没有被编译为结果。
来自 MSBuild 日志的片段:
如此处所述,已在注册表中启用伪本地化文化,并
返回new CultureInfo("qps-ploc")
正确的伪文化。
这是AssignCulture 的预期行为还是只是我用错了?
visual-studio - 让 Visual Studio 构建伪语言 (qps-ploc) 附属程序集
我已经生成了应用程序资源文件的伪本地化版本(例如Order Summary and Payment
本地化为[[[[[Òŕd̂ër̊ S̀úm̂m̈år̀ý ân̈d̊ P̀áŷm̈e̊ǹ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 项目的一部分?
.net - 修改所有带有前缀的资源字符串以轻松发现 i18n 或 RTL 问题
我想轻松(即:不手动触摸每个字符串)为我的所有资源字符串添加前缀,例如“XXXSomeString”,这样我就可以发现两个非本地化字符串(它们没有前缀)或不RTL 兼容形式(前缀将在左侧)。
有没有一种工具可以做到这一点,或者可能有一种方法可以修改资源代码文件以在返回每个字符串值时添加前缀?或者,如果您对此问题有更好的解决方案,我很想听听。
windows - 如何在 Windows Phone 8 模拟器上启用伪语言
我似乎无法在 WP8 模拟器上启用伪语言。大多数教程建议通过开发操作系统设置本地化,并且这些设置以某种方式“滴入”到模拟器中,但这似乎对我不起作用——无论我如何,模拟器都默认为英语操作系统语言/键盘设置(控制面板 -> 语言 -> 上移 <语言> 到顶部 -> 重新启动模拟器)。
我可以在手机的“设置”中更改本地化设置,虽然其他语言在我的应用程序中成功翻译,但 Pseudo 不是一个选项。
我在 Google 上搜索了很多 MSDN 信息(包括有关如何解决此特定问题的文档),我似乎已经用尽了我的选择。
tl;dr 是否有人在将本地化设置“涓涓细流”到 Windows Phone 模拟器时遇到问题?你如何解决它?
android - 如何使用 Android 4.3 新增的伪本地化功能?
我找不到任何有关 android 4.3 的新伪本地化(zz_ZZ 语言环境)功能的文档。
我们如何使用它?
ios - Localizing buttons in Xcode
This is my first question so far so I would love some understanding!
I am localizing entire application. I have no problem with labels that while pseudolocation translate properly. However, trying to achieve the same with buttons it doesn't work.
The code is
and the .string file in en.plist content looks like this
The pseudolocation doesn't work and I would really appreciate some help. The simulator keeps showing Clear.
If you have any questions regarding this, I will answer!
Please don't eat me :P
internationalization - 用于测试的自动 gettext 翻译生成器(伪本地化)
我目前正在使网站具有 i18n 意识。将硬编码字符串标记为可翻译。
我想知道是否有任何自动化工具可以让我浏览该站点并快速查看哪些字符串已标记,哪些仍未标记。我看到了一些像django-i18n-helper这样的项目,它们尝试使用 HTML 工具突出显示已翻译的字符串,但这不适用于 JavaScript。
所以我认为 FДЦЖ CУЯILLIC 或ʇxǝʇ uʍop-ǝpısdn(或类似的东西)应该可以解决问题。易于在视觉上区分,仍然可读,但不依赖于除 Unicode 支持之外的任何富文本格式。
问题是,我找不到任何现成的工具可以吃掉 gettext .po
/ .pot
file(s) 并吐出这样的翻译。不过,我认为这个想法很明显,所以肯定已经有一些东西了。
就我而言,我使用的是 Python/Django,但我想这个问题适用于任何使用 gettext 兼容库的东西。该工具唯一应该注意的是,翻译字符串中可能存在 HTML 片段。