系列: Go 学习与文档多语言本地化项目
本系列完整记录 Go 学习与文档多语言本地化项目从 A Tour of Go 起步,逐步扩展到站点首页、项目说明页、Learn、Docs 及 future content packages 的实际开发过程,包括架构设计、统一术语治理、整页翻译、结构保护、自动校验、独立质量审核、Site v2 扩展、生产发布与长期维护。
项目源码:
✅ GitHub:shuijingwan/go-tour-i18n
语言版本:
当前跨项目目标语言池共包含 66 个 locale。Go 项目本身目前提供 65 个 community Production locale,下面每一门 Go 语言版本都直接链接到其当前公开站点。语言列表沿用项目首页现有的展示顺序。
en-US 仅作为跨项目目标语言纳入列表,并不是单独的 Go Production locale。当前 Go 的 English source authority 仍为 generic en,因此英语(美国)链接到 Go 官方英文站点,而不是不存在的本地社区部署。
- 阿姆哈拉语
- 阿拉伯语
- 孟加拉语
- 葡萄牙语(巴西)
- 保加利亚语
- 加泰罗尼亚语
- 克罗地亚语
- 捷克语
- 丹麦语
- 荷兰语
- 英语(澳大利亚)
- 英语(加拿大)
- 英语(印度)
- 英语(新加坡)
- 英语(南非)
- 英语(英国)
- 英语(美国)(官方 generic English source,不是单独的 Go Production locale)
- 爱沙尼亚语
- 菲律宾语
- 芬兰语
- 法语(法国)
- 法语(加拿大)
- 德语(德国)
- 德语(奥地利)
- 德语(瑞士)
- 希腊语
- 古吉拉特语
- 希伯来语
- 印地语
- 匈牙利语
- 印度尼西亚语
- 意大利语
- 日语
- 卡纳达语
- 哈萨克语
- 韩语
- 西班牙语(拉丁美洲)
- 拉脱维亚语
- 立陶宛语
- 马来语
- 马拉雅拉姆语
- 马拉地语
- 书面挪威语(Bokmål)
- 波斯语
- 波兰语
- 葡萄牙语(葡萄牙)
- 旁遮普语(果鲁穆奇文,印度)
- 罗马尼亚语
- 俄语
- 塞尔维亚语(西里尔文)
- 简体中文(中国大陆)
- 简体中文(新加坡)
- 斯洛伐克语
- 斯洛文尼亚语
- 西班牙语(西班牙)
- 斯瓦希里语(坦桑尼亚)
- 瑞典语
- 泰米尔语
- 泰卢固语
- 泰语
- 繁体中文(台湾)
- 繁体中文(香港)
- 土耳其语
- 乌克兰语
- 乌尔都语
- 越南语
项目正在持续扩展新的 Go 学习与文档内容,并长期维护各语言版本的术语一致性、翻译质量、独立审核、生产发布与后续更新。
本项目属于非官方社区多语言本地化项目,与 Go 官方无隶属、授权或背书关系。
-
在 Go Learning & Documentation v2 的独立审核流程中,我遇到过一种反复出现的情况:Reviewer 首轮判定为 B,并列出了几个具体问题;Generation 按照这些 examples 完成修订,机器校验也通过,但 successor re-QC 仍然因为同一类别的残留再次判 B。问题并不一定是 Generation 没有修,而是工作流把“Reviewer 举出的例子”和“完整修订边界”混在了一起。本文介绍为什么 finding-anchored 不等于 example-anchored,以及 Reviewer 如何通过 defect category、exact predicate 和 bounded scope 做 same-class scan,Generation 又如何在不扩大修订范围、不进行无关润色的前提下完成 locally complete 的 same-class sweep。核心结论是:真正需要关闭的是审核发现的问题类别,而不是几个碰巧被列出来的实例。
-
在 Go Learning & Documentation v2 的翻译流程中,protected representation 用来防止 Generation 修改 Go identifier、URL、链接绑定和其他机器语义内容。但保护机制本身也可能出错:一次正式 QC 已经明确指出某个可见自然语言需要修订,可当前 protector 却把它错误分类成 opaque protected content,导致 Generation 即使完全理解 Reviewer finding,也没有合法方式修改它。本文介绍为什么“保护得更多”并不一定更安全,为什么不能让模型直接修改 protected token,也不能从目标译文重新 Protect 来猜 token mapping,以及为什么修正 parser 后仍不能改写旧 batch。文章进一步说明 representation successor 如何在保留历史 evidence 的同时,把同一个 physical Page 从旧 formal representation 安全衔接到新的可编辑表示。核心结论是:语言质量授权和编辑能力是两层不同的 authority;当 representation 无法表达一个合法修订时,应该修复表示能力,而不是放宽模型边界。
-
在为 site-v2-shell 首页创建候选快照时,本应只有 1 个页面翻译单元,结果却意外生成了 122 个单元。问题并非数据损坏,而是命令没有显式绑定内容包,底层流程落入了 Tour 的默认范围。本文记录这次真实故障的发现与修复过程,以及为什么错误的正式产物不能直接删除、为什么内容包本身就是工作流的权威边界,以及正式命令为什么宁愿多写一个参数,也不应该依赖隐式范围猜测。
-
一次 Generation Bundle 当前性检查中,我误用了不存在的 generation-bundle check 命令。脚本虽然检测到失败并打印了 RESULT=FAILED,却因为在顶层子 Shell 中错误使用 return,没有真正停止执行,最终又打印出了一个伪造的 RESULT=PASS。本文记录这次故障的发现、恢复和修正过程,并讨论为什么 FINAL 只是摘要而不是权威状态、为什么后续成功不能覆盖必要检查失败,以及正式工作流中的 Shell 控制流为什么同样必须遵循“无法确认时按失败处理”的原则。
