没有不值得去解决的问题,也没有不值得去学习的技术!

标签: 本地化

  • A Tour of Go 多语言翻译项目正在进入 v2。随着翻译范围从 Tour 扩展到 Site shell、Learn、Docs 以及未来更多 content package,原有围绕 Tour 构建的架构已经不足以继续扩展。本文记录为什么需要 v2,以及 TranslationUnit、统一术语表、内容包、历史复用与网站集成等设计背后的整体思路。

  • 在 Go 多语言翻译项目从 A Tour of Go 扩展到 Site、Learn、Docs 及 future content packages 后,原本用于避免无意义重复审核的 glossary compatibility 机制开始暴露出严重性能问题:部分 Quality Check、Reviewer Bundle、finalization 与 revision 命令需要数分钟才能完成。本文记录一次真实的架构决策过程,对比“继续优化 semantic-delta compatibility carry”和“退回 glossary SHA 变化即 full QC”两种方案,并说明为什么最终暂时保留 compatibility、采用全语言共享的 invocation-local prepared-state 优化。同时进一步确定,无论最终采用哪一种方案,提前基于更完整的 Go/go.dev 技术语境稳定 glossary,都是降低长期维护成本的关键。

  • 在完成 Go 多语言项目的 65 个 community locale 后,我进一步整理出一套可跨项目复用的语言选择与商业优先级体系。文章解释为什么跨项目语言池应扩展为包含 en-US 的 66 个目标 locale,以及为什么语言排序不应简单按照人口、单一广告平台支持情况或某个项目的特殊需求决定,而应以长期广告收入潜力为核心,综合考虑语言人口、主要国家和地区、经济体量、数字广告市场、开发者人口等因素。同时区分“商业基础顺序”与“项目级战略 override”:例如 Swahili、Kazakh、Persian、Amharic 在需要申请官方链接或生态合作时可以提前,但不改变基础商业排名。最终目标不是精确预测每一种语言的收益,而是冻结一套足够合理、长期可复用的 66 locale 顺序,避免未来每启动一个多语言项目都重新做语言选择。

  • 在为 A Tour of Go 多语言项目新增阿拉伯语版本时,我第一次真正处理 RTL(从右到左)语言。翻译本身仍沿用既有 TranslationUnit、Quality Check、Course SEO 和 Locale Surface Review 流程,但 RTL 很快暴露了桌面双栏重叠、移动端编辑器被压窄、课程导航方向语义变化、代码区必须保持 LTR 等问题。最终通过调整共享布局、响应式规则和浏览器回归测试完成阿拉伯语正式上线,并在排查 PageUp/PageDown 快捷键时进一步确认了一个可在官方 go.dev/tour 复现的上游焦点问题。整门阿拉伯语实际投入约 7 小时,相比普通 LTR 语言多出的时间,主要来自首个 RTL locale 的一次性基础设施建设。

  • 完成 A Tour of Go 西班牙语 es-ES 首次 Production 上线后,我没有停在“能上线”这一步,而是继续根据真实失败 evidence 收敛新增 locale 的生产流程。本文记录这次连续处理的 6 类问题:Cloudflare API 瞬态失败容错、首次 Production 公网验收去重、finalization 自动化、current-live locale 状态来源统一、Google/Bing 搜索引擎提交收口,以及 Locale Surface Review A gate 的 freshness scope 优化。最终目标不是让流程越来越复杂,而是让每一门新语言踩过的坑,都变成下一门语言可以直接复用的标准能力。

  • A Tour of Go 韩语翻译在 codex-ko-KR-004 中首次出现 13 个 TranslationUnit 里 3 个 validation failure。进一步排查发现,其中 concurrency/2 与 concurrency/6 并不是 Go identifier 真正丢失,而是韩语助词直接附着在 ASCII 标识符后,触发了 validator 的词法边界误判;concurrency/4 则属于真实的 present font span 结构错误。本文记录如何区分“应该改译文”与“应该改 validator”,并通过 ko-KR 窄规则、正反测试与 revalidate 流程,将结果从 10/13 提升到 12/13,最后再修正真实 candidate 问题达到 13/13。核心原则是:validator 的目标应保护技术身份,而不是强迫目标语言适应源语言的书写边界。

  • A Tour of Go 韩语版原本预计约 6 小时完成,但最终从初始化到 production 收尾跨越约 44 小时。根据 76 次 Git 提交按 30 分钟封顶方式估算,实际活跃投入约 15 小时 43 分,结合 ChatGPT、Codex、浏览器、服务器、Cloudflare 和 Naver 等未完整进入 Git 的操作,最终更适合记作约 16~18 小时。本文复盘韩语为什么明显慢于法语:包括多轮 Quality Check 与 revision、Final Review 后再次返工、韩语语法触发新的 validator 边界、5 小时模型额度影响生产节奏,以及 TranslationUnit 完成后仍持续出现的 preview、production、Cloudflare、课程目录和 Naver 上线问题。最终也重新认识到,成熟流程的价值并不是保证每门语言都越来越快,而是遇到真实问题时,能够正确地慢下来并留下可复用的改进。

  • A Tour of Go 法语版在约 9 小时内完成上线后,我没有立即开始下一门韩语,而是先继续完善新增 locale 的执行流程。这一轮优化不再重复讨论“如何建立一套标准流程”,而是进一步减少已经可以机械化的重复操作:新增 locale init 初始化能力、自动生成语言骨架与状态文件、完善首次 production 自动化与 production identity、精简命令执行成本,并建立 Deferred Issues 机制记录已经真实发现但暂缓处理的问题。目标不是减少 Quality Check、Final Review 或 production acceptance 等质量 gate,而是把人的时间更多留给真正需要判断的翻译质量和生产风险。

  • A Tour of Go 第三门社区语言 de-DE 已正式上线。从开始推进到完成 TranslationUnit 质量审核、Locale Surface Review、production 部署和最终验收,这一轮粗略投入约 16 小时。 但这 16 小时并不是从零开始完成一门语言的全部成本,而是建立在此前数百小时的项目开发、质量流程、服务器基础设施和第二门语言标准化工作之上的增量成本。de-DE 真正值得复盘的,是第三次完整执行以后又暴露出了哪些历史流程债、哪些人工操作已经可以交给工具,以及为什么下一门语言的目标可以进一步压缩到 8 小时以内。

  • 在完成 A Tour of Go 简体中文 103 个课程页面翻译与发布前全局质量审计后,项目继续推进公共 UI 本地化。本阶段建立独立的 JSON 多语言目录,通过 Go embed、严格 key 校验和 JavaScript 消息注入,将页面框架、课程列表、模块说明、TOC、反馈入口、编辑器操作以及 Program exited 等界面文案接入 zh-CN,同时保留 upstream 原有富文本语义,并有意识地不处理 on/off、标准库 404 和部分低收益技术状态。浏览器实际预览验证通过后,公共 UI 本地化阶段正式完成,下一步将进入 103 页完整 zh-CN 正式发布投影预览与最终发布验收。

👨‍💻 个人品牌

王世强|技术实践者 · 独立博客作者

15+ 年 Web 与系统实践经验,持续关注网站基础设施、系统优化、AI 工具与自动化。

持续运营技术博客 10+ 年,累计发布 1000+ 篇原创技术文章。

长期建设个人项目,也欢迎合适的技术交流、咨询与合作。

👉 关于我

.env (14) 404 (14) add (16) AI 翻译 (36) Array (19) A Tour of Go (79) CentOS (23) ChatGPT (31) ChatGPT Plus (18) chrome (19) Cloudflare (40) Codex (28) composer (42) composer.json (22) composer update (14) console (16) Container (25) curl (16) delete (31) Docker (33) Dockerfile (15) EdgeOne (35) environment variable (19) error (24) file (15) filter (20) Git (28) GitHub (23) Gitlab (15) GLM-5.2 (27) Go (87) go-tour-i18n (16) Google AdSense (30) Go 文档 (19) Go 语言 (24) GraphQL (24) GraphQL API (14) Gutenberg (36) http (21) https (23) Interface (19) json (24) Laravel (37) Laravel 6 (55) Laravel 9 (25) Lighthouse (17) Lighthouse 5 (14) Linux (22) Module (17) MySQL (78) MySQL 5.7 (22) Nginx (63) normalize.css (28) OKX (15) OneinStack (23) PHP (68) php-fpm (21) php.ini (24) PHP 7.1.12 (22) PHP 7.4 (26) phpmyadmin (15) PhpStorm (24) Polylang (59) postman (18) Query (17) queue (16) Rancher (24) Redis (53) RESTful (27) RESTful API (23) SEO (14) Shell (14) Shopify (19) SlyTranslate (22) SQL (24) String (14) TortoiseGit (14) Twenty Twenty-Five (20) Ubuntu (43) update (20) VPN (17) W3 Total Cache (41) Windows 10 (46) WireGuard (29) WordPress (136) WPCode (23) Wstunnel (16) Yii (40) Yii 2 (70) Yii 2.0 (51) 国际化 (17) 多语言翻译 (51) 开源项目 (16) 技术博客 (15) 故障排查 (21) 数据库迁移 (16) 本地化 (22) 浏览器 (14) 阿里云 (20) 页面缓存 (14)

2026 年 10 月
一 二 三 四 五 六 日
 1234
567891011
12131415161718
19202122232425
262728293031