Windows 伪本地化 & 本地化小史
这是下面这期视频的后半部分的文字版

上期回顾:

Windows 是什么时候引入伪本地化的?
据前微软员工 Michael S. Kaplan 称,
在开发 XP 或 Server 2003 或 Server 2003 R2 时,它(指伪本地化)并不存在。
事实上,它始于 Vista 的早期设计阶段。在当时,它被称为 Longhorn。
伪本地化构建首先在 Vista 的 Beta 1 中可用。

但我们能在 Server 2003 的源代码中找到对XP测试版的伪本地化构建的引用。
可以在 Windows Server 2003 的源代码中找到对此构建的伪本地化版本的引用
"NT\tools\ploc\run\readme.txt"
:ie:autoploc -p:\\ntdev\release\main\usa\2499\x86fre\bin -w:tst -l:mir
——betawiki(https://betawiki.net/wiki/Windows_XP_build_2499)
那么,至少有两种可能:
1.那位员工记错了;
2.Windows XP 当时的“伪本地化”并没有与对应的语言环境,伪本地化的原理也与后来的 Windows 不同。
(这个问题我们先存疑,但我们可以确定,在 Vista(或者说,Longhorn)时就已经引入伪本地化了。)
而在已泄露的版本中,最早留有伪本地化痕迹的是 Build 5712,出现在命令提示符中。

(在已泄露的版本中)
而拥有伪语言语言包的构建大多出现在 Win8/8.1 的构建中,如 8331,7973-8102,9457 甚至 Win8 RTM 中。
而非 Win8 测试版有伪语言语言包的构建有 Build 9907。
伪语言语言包未泄露,但拥有局部伪本地化的版本有 9370,9466 等。


而在 7973-8102 中,伪语言语言包并未直接泄露,但可以用特殊方法手动开启。
(方法可以去看MicrosoftRTX2080 的 Build 8056 那期的后半部分,这里不再赘述)

一直到 Win11,我们也还能看到伪本地化的痕迹。(当然,已经修复)

而在一开始,因为出于架构原因,不得不使用现有的语言环境,
所以当时微软内部选择了 tk-TM 作为伪语言的语言环境,当时它被认为是“永远不会成为 Windows 或 Office 中的本地化目标语言”的语言环境。
但是,到了 Win7 ,tk-TM 被用于标识土库曼语。
(其实在 Win7 之前,微软就已经不再使用 tk-TM 作为伪语言的语言环境。)
现在,微软选用三种名称来标识伪语言的语言环境,上期已经讲过,这里不再赘述。
最后,是 Windows 本地化的历史。
(引自雷蒙德 · 陈的博客 https://devblogs.microsoft.com/oldnewthing/20120726-00/?p=7043)
早在 16 位 Windows 时代,Windows 只针对单一目语言进行开发:英语。
尽管其中有可用于本地化的资源文件,但源代码中经常有针对英文的假设。
比如,它可能会假设文本阅读方向是从左到右,这就不适用于阿拉伯语等从右往左书写的语言。它可能还会假设单个字符对应单个字节(当时 Unicode 还没有被发明出来) ,这就不适用于使用 DBCS(双字节字符集)的中文、日文和韩文等语言。
Windows 的本地化团队进行了必要的代码更改,以使 Windows 在上述这些语言环境中工作,结果是出现了三个不同的版本 Windows 的代码库,通常称为西方、中东和远东。
比如,如果你想让 Windows 支持中文,你必须购买远东版本的 Windows。
而在当时,如果你遇到了西方语言的问题,比如德语,那么你就不走运了,因为没有德语 Windows 代码库;它与英语等语言使用同一个西方代码库。
举个例子,德语中的“是/否”为“J/N”(Ja/Nein),但如果想回答“是”,你必须输入“Y”。
Windows 95 尝试了一个疯狂的想法:在开发周期中将 Windows 翻译成德语,以帮助解决这些仅限于德语的问题,当然,这会产生大量的额外费用,因为微软必须在整个产品周期中都需要有翻译人员,而不是到了最后阶段才雇用他们。
多年来,Windows 团队开发了一些技术,用于在开发周期的早期识别这些潜在的本地化问题。Windows 被“早期本地化”为德语和日语,以覆盖西方和远东的案例。后来添加了阿拉伯语,将覆盖范围扩大到了中东,并且在 Windows 7 中添加了印地语以涵盖仅适用于 Unicode 的语言。
翻译 Windows 的每个内部版本都有其优点和缺点:优点是它可以使得在仍有时间修改代码以解决问题时就能发现问题。缺点是在本地化时代码可能会发生变化,而这些代码更改可能会使您迄今为止所做的工作无效或者毫无意义。
例如,有人可能会编辑您已经花时间翻译的语段,这将迫使您重新翻译它,或者至少验证旧的翻译仍然有效。
最终,Windows 的本地化人员想出了一个“聪明的解决方案,它可以在避免大多数缺点的同时有效地发现问题”这个解决方案就是刚刚介绍的“伪本地化”。
这期专栏到这里就结束了,感谢大家的阅读!