惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Jina AI
Jina AI
V
Vulnerabilities – Threatpost
Security Latest
Security Latest
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
量子位
H
Help Net Security
Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
L
LINUX DO - 最新话题
A
Arctic Wolf
博客园_首页
S
Securelist
S
Secure Thoughts
Google DeepMind News
Google DeepMind News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Cyberwarzone
Cyberwarzone
小众软件
小众软件
T
Threatpost
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Blog — PlanetScale
Blog — PlanetScale
N
News and Events Feed by Topic
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
博客园 - 聂微东
F
Fortinet All Blogs
Simon Willison's Weblog
Simon Willison's Weblog
H
Heimdal Security Blog
罗磊的独立博客
S
Security @ Cisco Blogs
B
Blog
T
Troy Hunt's Blog
Engineering at Meta
Engineering at Meta
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Hacker News
The Hacker News
The Last Watchdog
The Last Watchdog
Hacker News - Newest:
Hacker News - Newest: "LLM"
I
Intezer
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
The Cloudflare Blog
S
Schneier on Security
月光博客
月光博客
L
LINUX DO - 热门话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
在「机器翻译」盛行的时代,「伪本地化」是否还有必要? - 少数派
2024-07-16 · via 少数派

Matrix 首页推荐 

Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。

文章代表作者个人观点,少数派仅对标题和排版略作修改。


作者按:我并不是本地化的专业人员,只是借助一些资料谈谈我对伪本地化与本地化的理解,如果出现错误请大家及时指出,也谢谢大家的包涵。

引入

几年前,微软发布 Windows 11 之后,远景论坛(pcbeta.com)出现了这样一张有关 Windows 11 小组件的图:

来源:远景论坛(pcbeta.com)

图中圈出的「Mǿґê oρτîǿйs !!!」引发了人们的讨论。一些人猜测这是乱码,但最终证明这只是一个产品测试中常用的方式:伪本地化(pseudo-localization)。

虽然不是本地化的专业人员,但我依然想刨根问底,了解伪本地化的目的。当时在我看来本地化与翻译差不太多,只是将源语言替换为目标语言而已。既然如此,为什么还需要一个看似「多此一举」的伪本地化,将文本变成了一个看起来不像英文实则是英文的东西,目的何在?带着这样的疑问,我上网去寻求有关伪本地化的更多信息。

维基百科是这么解释伪本地化的:

伪本地化是软件测试中用来测试软件是否符合国际化与本地化的方法之一。与正式本地化中将软件文本翻译成外语不同,伪本地化只是改变原始文本的呈现方式而不改变文本本身。这些特定的改变使得原始文字看起来仍可按源语言阅读,但却包含了不同语言间最可能存在的差异:文本或字符的长度变化、语言方向、界面适应等等。

原来,不同语言间的显示差异使得本地化并不是单纯的翻译那么简单,因此,在正式本地化之前,需要测试软件是否具备「可本地化」的能力。下面列举了在本地化中的出现的常见问题。

本地化中的常见问题

一、字符不同

字符不同是不同语言间最直观的差别。比如都使用拉丁字母,相比英语,许多欧洲语言都会有变音符号(diacritical mark),而除了拉丁字母以外,又有西里尔字母、阿拉伯字母等等其它字母系统;相对于字母,中日韩(CJK)字符又另成一类。

如果编写软件时采用了覆盖范围有限的字符集(比如 ASCII),在本地化时很可能会导致其它语言需要用到的字符无法正常显示。(如下图)

字符无法正常显示

二、文本长度

除了字符之外,文本长度也是一个需要考虑的问题。如果翻译后的语言过长,而显示空间比较有限,可能会导致文本显示不全。

以源语言是英语为例,常见情况下:

  • 法语、西班牙语、葡萄牙语、意大利语、阿拉伯语、希伯来语和波兰语等文本会扩展 15% 到 30%;
  • 德语和荷兰语等文本会扩展 35% 或更多;
  • 中文、日文或韩文文本会收缩 10% 到 55%。

不同资料的统计数据可能有所不同,尤其是日语差别比较大(见下图)1,但大体趋向是:由英语翻译为其它语言文本长度一般会增长,而翻译到东亚语言时一般会缩短。

从英语翻译成不同语言后文本长度的变化,来源:InText

一般来说文本变短不会出现太大问题(空白过多总比显示不全好),但如果文本变长,显示空间又比较有限的情况下,就会出现文本被截断,显示不全的情况,如下图:

来源:Netflix

原来英文的「Don't miss out. 」(不要错过)到了德文中变成了「Lassen Sie sich nichts entgehen!」,文本长度几乎多了一倍,因此原来适应英文的显示空间到德文中就不够了。

三、语言方向

这个相信大家并不陌生。现在世界上的语言在横向上(不考虑垂直书写)多采用两种书写方式:从左往右(Left-to-Right, LTR)或从右往左(Right-to-Left, RTL),下图展示了两种语言(以英语/阿拉伯语为例)在界面上的差别。注意在软件中,RTL 语言不仅文本需要右对齐,其它控件也需要以从右向左的形式排列(但播放按钮、进度条等元素无需反向)。

另一个需要考虑的是「双向文本(Bidirectional text)」。在一些从右往左书写的语言中(比如阿拉伯语)数字,日期等却需要从左往右书写,如果需要包含其它从左往右书写的语言,这些语言仍将保持从左往右书写的形式。

英语/阿拉伯语界面对比。来源:Microsoft

四、字符串分割/硬编码(hard code,即将数据直接嵌入到程序中,而非从外部获取数据或在运行时生成数据)

上面说的是不同语言本身存在的差异,而这里则是在代码层面可能出现的问题。

字符串分割,表现为一个字符串被拆分成两个或多个部分。这可能会增加翻译的难度,因为翻译人员必须独立地翻译每个部分,而不知道这些部分是相关的。而且,不同的语言可能会要求以不同的顺序组织各个部分或采用完全不同的句子结构。这可能会导致翻译出的句子结构混乱。,

在 Windows 中,由字符串分割引起的最为知名的翻译问题应该就是「该内存不能为 read/written」(正确翻译应为「该内存不能被读取/写入」)了,该语段的英文原文是:The memory could not be %s. (其中 %s 表示占位符,将视情况被替换为 read 或 written),由于 read/written 在原句中仅表示为占位符,与原句分开了,所以该词无法被翻译。同时翻译人员将 could not be 理解为「不能为……」,实际应是「不能被……」。(不只是中文。这一翻译问题在其它语言中也广泛存在)

该提示的中英文界面对比
该提示的俄语界面,可以看到 "read" 同样未被翻译

至于硬编码,其弊端已被许多人指出,这里不做详述。从本地化的角度来说,一旦一些字符串被直接写进了源代码中,而并非可用于本地化的资源文件中,在本地化过程中这种字符串可能不会被翻译,从而导致本地化的不完全。其实上面的「该内存不能为 read/written」也可以被看作是硬编码的问题(read/written 被硬编码进程序中)。

另外一个类似于硬编码的情况是图像包含文本,在准备本地化时,很容易忘记这些元素,从而导致图像中的文本未被本地化。

伪本地化的具体方式

那么,伪本地化又是通过什么方式发现本地化潜在的问题呢?

替换字符

对于字符不同的问题, 伪本地化采用添加来自其它语言的重音符号,或将这个字母替换为其它语言中与这个字母形态相似的字母。

如 a 可以替换成 ā á ǎ à ă ä å α ά ,t 可以替换成 ț ţ ť ŧ т ,等等。

以「Turn off the power(关闭电源)」 为例,它可以被“翻译”成 Țùŗη ôƒƒ ţђë ρõẃēя

一个字母的替换对象可以只是一个固定的字母(如 a 可以统一替换成 α),也可以是一个字符集。

t 的几种替代字母

扩展文本长度

有不同的方法可以扩展字符串。

微软采取了在字符串后加 ! 的方法,具体做法为:一个词组 3 个 ! ;一个单词 1-3 个 ! ,或者直接加空格。

如 [Гзƒгēśн ţћĕ рáġ℮ īŋ а ƒêω мīлúтęş. !!! !!! !](Refresh in a page in a few minutes,几分钟后再刷新页面)

Windows Terminal 的伪本地化

而安卓则采取了向文本后添加 1-20 的英文基数词(one two three……,到了 20 再从 1 开始,不断循环)的方法。

安卓的伪本地化

不过,上面两种方法可能会引起混淆,开发人员可能难以区分这些文本是伪本地化添加的,还是原本就存在于文本中的。因此,又出现了一些新的一些扩展文本的方式。一种选择是重复书写元音,例如:

原文:find Help Online(在线寻求帮助)

原来方式:[ƒîกี้ð Ĥéļþ Öกี้ļîกี้é one two]

重复元音:[ƒîîîกี้ð Ĥéééļþ ÖÖÖกี้ļîîîกี้ééé]

这样一来,文本长度没有显著变化,但引起混淆的可能降低了。

重复元音

添加分隔符

至于字符串分割,可以通过添加分隔符的方式来判断,常见的做法是将文本用 [] 包裹起来,如 [Turn off the power,][Sit back and relax.]

Windows 8 的伪本地化

此外,如果伪本地化后文本仍以源语言环境显示,则表明可能是硬编码字符串,尚未外部化到资源文件中。

语言书写方向

为了模拟不同语言的书写方向,在伪本地化过程中,可以选择将原始语言更换书写方向。下图展示了将英语从右往左书写的效果:

将英语从右往左书写。图源:Google

东亚字符(CJK)的伪本地化

上面介绍的替换字符能解决与英文类似的字母文字的问题,那中日韩(CJK)等东亚字符呢?

对此,一些软件采取了直接在原文后添加中日韩(CJK)字符的方法。下图展示了 Windows Phone 的东亚伪本地化方式。

Windows Phone 的东亚伪本地化

而为了更轻松地识别字符串,可以采用添加唯一标识符的做法以标识字符串。

[1Dw2L][Čômрµτ℮ř !]

微软是这么解释的:

添加唯一标识符,以便您可以轻松地在源中定位资源。标识符可以是资源标识符的哈希值,也可以是其它一些用于唯一标识资源的数据。

(在 Windows 中这一标识符被称为“Hash ID”,而在 Windows 的伪本地化构建中会包含一个“Hash ID Spy”应用程序,可以查询标识符所对应的字符串等信息。)

Hash ID Spy

伪本地化的意义

对于伪本地化的意义,维基百科是这样解释的:

传统上,软件本地化独立于软件开发过程。在典型情况下,软件将以一种基本语言(例如英语)构建和测试,并将任何可本地化的元素提取到外部资源中。这些资源被交给本地化团队,以翻译成不同的目标语言。这种方法的问题在于,许多细微的软件错误可能会在本地化过程中发现,但那时修复它们为时已晚(或更可能是成本太高)。

针对一些已然成熟且多数的目标语言翻译已经可以获取的软件而言,或是仅会有少量界面变更的软件,直接将翻译套用至该软件并进行多个语言的测试,可能是最直接且最好的测试方式。而针对一些新开发的软件,或是将会有庞大的界面变更的软件,等待翻译完毕之后再进行界面测试,则可能因此延迟了整个测试的进程。并且,在软件开发的初期也不见得会开始进行界面文字的翻译,因为界面有很大的几率会被调整甚至重新设计。若要等到产品比较成熟后,开始进行界面翻译,然后才进行翻译的界面测试,产品的上市时程将可能因此被延误。在这样的状况之下,伪本地化将会是最佳的选择,原因之一是无需进行真正的翻译。

也就是说,很多时候软件开发与本地化是分离的,如果本地化团队在本地化过程中发现了显示存在问题,就得联系开发团队修改代码,开发团队修改代码再返回本地化团队,这样一来一回很容易影响开发效率。(见下图)

伪翻译
传统流程与伪本地化流程对比

而且,如果需要本地化成多种目标语言,而每种语言都存在相同的问题,那么问题数量将成倍增加,修复难度也将直线上升,这会是一件非常可怕的事情。

而通过伪本地化,开发团队就可以在正式的本地化开始之前就找出潜在的本地化问题,有效减少了本地化过程中出现问题的概率。

同时,伪本地化可以帮助开发人员无需实际进行真正的翻译,就可了解产品在翻译后的界面外观。

你可以把伪本地化看作是定期去看牙医。这样你就能尽早发现潜在的蛀牙,避免严重的治疗。

但是,如果你等到牙痛发作时才去治疗,你将不得不忍受巨大的痛苦。除了浪费时间和金钱进行更复杂的治疗外,你还需要……

开发人员在开发或调试产品时,甚至可以直接将伪本地化作为默认语言环境,这有助于他们将本地化视为优先事项而不是事后考虑,并让他们有机会在设计阶段,或在本地化开始之前解决问题。

正如微软前软件开发人员 Michael S. Kaplan 所说,

实际上,我们用伪本地化构建了很多 Windows,并将它们「本地化」为英语!
伪本地化就像一个热心、勤奋但天真的实习本地化人员,他(她)将「翻译」每一个字符串,并且可以找到我们从来没有希望在每种语言中都有相同覆盖率的问题——而且比我们以前任何时候都要快。

伪本地化的语言环境

尽管伪本地化并不被视为一门真正的语言,但它仍拥有自己的语言环境。国际统一码部件(International Components for Unicode,缩写 ICU)提供了两个伪本地化语言环境名称:

  • en-XA(用于类似英语的语言的伪本地化)
  • en-XB(用于从右往左书写(RTL)的语言的伪本地化)

许多软件和操作系统都有提供这两个语言环境,下图展示了安卓系统的两个伪本地化语言环境显示效果(需要开启安卓的「开发者模式」):

安卓系统「语言设置」中的伪本地化选项(前两个),需要开启安卓的「开发者模式」
左:en-XA;右:en-XB。图源:Google

而微软拥有一套自己的伪本地化语言环境:

伪本地化环境语言环境名称
基本qps-ploc
镜像(RTL)qps-plocm
东亚语言qps-ploca

Windows 10 又新增了 qps-Latn-x-sh 伪本地化语言环境。

这些语言环境可以在 Windows 中启用,具体方法可见 使用伪本地化测试应用 - Microsoft Learn 以及 使用伪本地化环境进行本地化测试  - Microsoft Learn

Image
Windows 11 中的伪本地化

(关于 Windows 伪本地化的历史和更多细节,可参见 Windows 伪本地化简史

机器翻译与伪本地化

在中文维基百科的「伪本地化」词条上有这样一段话:

近年来,随着机器翻译技术的进步,借由机器翻译也可达到与伪本地化相当的效果。

早些时候使用伪本地化确实是考虑到开发人员可能不了解其它语言,而现在随着机器翻译的成熟,开发人员也可以直接选择机翻原文来查看本地化效果。那么,如今「伪本地化」是否还有必要呢?

在我看来还是有必要的,原因如下:

  1. 伪本地化可以同时对多种语言特征进行模拟,比如既可以测试不同的字符集,也可以模拟文本扩展的情况。这对于需要本地化为多种语言的软件来说还是必要的。
  2. 伪本地化不对源语言本身进行调整,只是改变了它的呈现方式。这样开发人员在伪本地化环境下仍然可以阅读文本。而如果使用机翻的话,如果开发人员不了解翻译后的语言,就仍需回到原始语言开发软件。因此,伪本地化可帮助开发人员发现本地化问题,仍可保证原文(对于开发人员)的可读性。

这也是直到现在,伪本地化仍然是测试本地化的一种重要方式,被许多公司所采用,经久不衰的其中一些原因。


参考资料

  1. 小组件右上角三个点...提示字符显示乱码 - 远景论坛
  2. 伪本地化 - 维基百科(英文)
  3. 伪本地化 - Microsoft Learn
  4. 伪本地化 - Netflix Technology Blog
  5. 伪本地化可尽早捕获 i18n 错误 - Google 开源博客
  6. 伪本地化:独特的三大优势 - Transphere
  7. 使用伪本地化语言区域测试您的应用 - Android Developers
  8. 文本大小的变化及其解决方法 - tcworld
  9. 从右到左书写 - 维基百科(英文)
  10. 该内存不能为“read/written”的错误提示是否存在翻译不严谨,比较“该内存无法被读取/写入”? - 知乎
  11. 雷蒙德·陈 - Windows 本地化的简史(不完整)

> 关注 少数派公众号,解锁全新阅读体验 📰

> 实用、好用的 正版软件,少数派为你呈现 🚀