我很早以前学习 Go 的时候,用的就是一个社区维护的 A Tour of Go 中文网站。
前段时间重新想起这个站点,发现已经打不开了。
与此同时,我也注意到,陆续有一些用户通过搜索来到我的网站,寻找 Go Tour 中文相关的内容。
这让我觉得,现在应该还是有人需要一个能够正常访问、并且持续跟随官方更新的 A Tour of Go 中文版。
于是我开始自己维护一个新的版本:
A Tour of Go 简体中文版
在线访问:
https://go-dev.shuijingwanwq.com/
GitHub:
https://github.com/shuijingwan/go-tour-i18n
不只是重新翻译一遍
最开始想得比较简单:把目前官方的 A Tour of Go 内容整理成中文,然后部署上线。
但真正做下去以后发现,翻译本身并不是最麻烦的部分。
A Tour of Go 里面除了普通文本,还有很多不能因为本地化而被改变的内容,例如:
- Go 代码和代码标识符
- URL 和链接
- Markdown 结构
- 页面指令
- 示例文件
- 特定术语
- 页面之间的结构和导航关系
只要其中某一部分处理不当,就可能出现一种情况:
文字看起来没什么问题,但课程页面、代码示例或者运行逻辑已经被破坏。
所以后来整个项目逐渐形成了一套比较完整的维护流程:
同步官方上游 → 术语约束 → TranslationUnit 本地化 → 自动校验 → 人工语言质量审核 → Locale Surface Review → 浏览器验收 → 生产发布
现在我更愿意把它理解成一个需要长期维护的软件项目,而不是完成一次翻译以后就基本结束的静态镜像。
核心目标还是持续跟进官方
这个项目对我来说比较重要的一点,就是尽量避免以前社区翻译项目很容易遇到的问题:
最开始很好用,但几年以后官方内容已经发生变化,翻译版本却停在原地。
所以现在项目直接以官方 A Tour of Go 为上游。
以后官方内容发生变化时,可以继续同步上游,然后重新经过本地化、质量检查、浏览器验收和发布流程。
也就是说,现在中文站不是一个历史快照,而是准备长期维护下去。
后来又从中文版逐渐扩展成了多语言项目
中文版的流程稳定以后,我开始尝试把同样的维护方式扩展到其他语言。
这样做的一个好处是:
所有语言可以共享同一套上游同步、质量检查、浏览器验收和生产发布工具链,而不是每增加一门语言,就重新维护一整套项目。
目前项目还在继续增加新的 Locale 。
其中:
简体中文、法语、德语、韩语
这 4 门由这个项目维护的翻译,已经进入了 Go 官方 A Tour of Go 的语言列表。
Go 官方对应页面:
这件事对我来说还是挺有意义的。
至少说明,一个社区维护的翻译项目,只要能够持续跟进官方上游,并认真处理翻译质量和生产维护,也有机会真正进入官方提供给用户的入口。
不过中文站仍然是目前比较重要的一个版本
虽然现在已经逐渐发展成一个多语言项目,但中文站是最早开始维护的版本。
最近一段时间:
也逐渐成为我目前几个网站中比较主要的流量来源之一。
所以这次想专门在中文社区介绍一下。
如果你正在学习 Go ,可以直接使用:
https://go-dev.shuijingwanwq.com/
课程内容会尽量持续跟随官方 A Tour of Go 。
如果使用过程中发现:
- 中文翻译不自然
- 某个 Go 术语有问题
- 页面内容与官方不一致
- 代码示例异常
- 页面布局或者功能存在 Bug
都欢迎直接反馈。
GitHub:
https://github.com/shuijingwan/go-tour-i18n
Issue:
https://github.com/shuijingwan/go-tour-i18n/issues
如果觉得这个项目对学习 Go 确实有帮助,也欢迎顺手给个 Star。
对这种需要长期维护的小型开源项目来说,我现在其实更希望能够慢慢积累一些真正的使用者。
有人实际使用、发现问题、提出反馈,甚至偶尔贡献一些改进,对项目长期维护的价值,都比单纯继续增加语言数量更大。