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

没有 OpenAI API,我如何用 ChatGPT + GitHub 完成 A Tour of Go 103 页全量重译

图 2:GitHub 中的 chatgpt-zh-CN-008 重译批次。一个 Batch 同时保存 inputs、raw-responses、candidates、validation 和 retry 记录,GitHub 成为 ChatGPT 与本地翻译流水线之间的数据交接层。

作者:

A Tour of Go 多语言翻译项目

图 2:GitHub 中的 chatgpt-zh-CN-008 重译批次。一个 Batch 同时保存 inputs、raw-responses、candidates、validation 和 retry 记录,GitHub 成为 ChatGPT 与本地翻译流水线之间的数据交接层。

(1) 没有 OpenAI API,我如何用 ChatGPT + GitHub 完成 A Tour of Go 103 页全量重译

图3:访问过去的 Go Tour 简体中文站 tour.go-zh.org 时,当前已经无法正常建立连接。

(2) 从「A Tour of Go 中文版」这个搜索词开始:我决定做一个持续维护的 Go Tour 中文版

本地运行的 A Tour of Go「Methods continued」课程页面,左侧为课程说明,右侧为 Go 代码编辑器及运行结果。

(3) A Tour of Go 中文版项目设计冻结:从 101 页到 103 页,从 Gin 转向 Cobra CLI

A Tour of Go 中文版开发实战:英文基线、在线运行与 101 页上游同步体系

(4) A Tour of Go 中文版开发实战:英文基线、在线运行与 101 页上游同步体系

go-tour-i18n 项目完成首个简体中文课程页面 welcome/1 的整页翻译、结构校验和本地预览。

(5) A Tour of Go 多语言翻译项目实录:完成首个 zh-CN 页面翻译闭环

图 1:DeepSeek 官方更新日志显示,本次只更新 DeepSeek-V4-Flash,DeepSeek-V4-Pro API 与 APP、Web 模型均未更新

(6) A Tour of Go 中文翻译项目进展:完成前 8 页、修复 present 语法,并暂缓 DeepSeek 对比

图 1:generics/1 简体中文页面本地预览

(7) 一个页面重试五次:使用 GLM-5.2 翻译 A Tour of Go 时遇到的 Token 与 Present 结构问题

图 1:methods/16 简体中文页面浏览器预览

(8) A Tour of Go 中文翻译实录:如何只翻译教学代码注释,而不破坏 Go 代码

图 2:A Tour of Go methods/20「练习:错误」中文候选页面最终渲染效果

(9) A Tour of Go 多语言翻译:当正确的中文语序被受保护标记顺序校验误判

图 3:methods/24 中文页面,静态代码、Bounds 行内代码和链接内的 image.Rectangle 均正确渲染

(10) A Tour of Go 中文翻译完成 7 个代表页校准:最后 3 页又发现了哪些真实问题

图 2:首批 10 个普通页面经过试跑与流程校准后全部进入 ready

(11) A Tour of Go 多语言翻译项目:首批 10 个普通页面试跑,从 2 个 blocked 到全部 ready

图 2:flowcontrol/6 最终中文页面,return 与 v 为适应自然中文语序发生整体换位

(12) A Tour of Go 中文翻译第二批实跑:从 Inline Code 顺序误判到历史响应重新验证

图 1:flowcontrol/6 首次原始输入实验直接通过统一自动校验

(13) A Tour of Go 多语言翻译项目:从 swap 问题重新审视 Token 保护,原始输入与最小保护的一次真实实验

图 7:moretypes/1 最终中文页面预览。左侧课程正文、静态代码块、行内代码和教学注释均正常渲染,右侧官方 Go 示例继续保持原样。

(14) A Tour of Go 多语言翻译实战:第三批 10 页全部 Ready,继续校准 Protected Token 的结构角色

图 4:上游源码确认共有 103 个课程页面,zh-CN 最终达到 ready=103、pending=0、blocked=0

(15) A Tour of Go 多语言翻译项目:zh-CN 103 个课程页面全部 ready,课程正文翻译阶段完成

图 4:GitHub 与 ChatGPT 已成功连接

(16) ChatGPT 连接 GitHub 实测:让 AI 直接读取 go-tour-i18n 仓库参与译文审核

图 3:中文 Go 术语校准完成后,将确定的译法写入 zh-CN glossary

(17) 为什么 channel 最终选择“通道”:A Tour of Go 中文术语统一的一次实践

图 1:技术含义基本正确,但“返回一个返回……”已经明显影响阅读,因此仍被列入 C 类修订

(18) 103 页逐页审核后,只返修 16 页:A Tour of Go 中文正文发布前质量审计

图 2:中文课程页面以及已经完成本地化的编辑器控制区

(19) A Tour of Go 多语言翻译项目:公共 UI 本地化完成,从课程译文走向完整中文界面

图 2:完整 zh-CN 正式投影成功生成,103 个课程页面被重新组装为 7 个 .article

(20) 从 103/103 ready 到完整站点验收:A Tour of Go 中文版补齐正式投影与课程元数据本地化

图 3:从 production bundle 独立启动的 A Tour of Go 简体中文页面,课程正文、公共 UI 和官方 Go 示例均已进入最终发布形态。

(21) A Tour of Go 多语言翻译项目:103 页全部完成后,我终于生成了可独立部署的 zh-CN Production Bundle

图 1:A Tour of Go 简体中文版正式生产页面,远程运行已经成功输出“Hello, 世界”。

(22) A Tour of Go 多语言翻译项目:zh-CN 正式上线,从生产发布到 go.dev Playground 的完整部署记录

图 1:新生产域名 go-dev.shuijingwanwq.com 已正常访问,Go 示例远程运行成功

(23) A Tour of Go 多语言翻译项目:从 go-tour 到 go-dev,完成 EdgeOne、Nginx 与 HTTPS 生产域名迁移

图 1:A Tour of Go 多语言翻译项目正式生产首页

(24) A Tour of Go 多语言翻译项目正式上线:从项目首页、公共 Footer 到生产发布元数据的完整收尾

图 3:GA4 g/collect 请求返回 HTTP 204,并携带当前课程页面地址,确认 Google Analytics 已产生真实事件上报

(25) A Tour of Go 多语言翻译项目:接入 Google Analytics 与百度统计,从 systemd 注入到 EdgeOne 与真实上报验证

图 1:生产环境 robots.txt 与 sitemap.xml 已正确对外提供,Sitemap 共包含 104 个规范 URL。

(26) A Tour of Go 中文站上线后:补齐 robots.txt、Sitemap,并完成五大搜索引擎提交

图 4:发布生产并刷新 EdgeOne 缓存后,再次通过真实手机访问,顶栏项目名称已经完整保持在一行,最终移动端验收通过。

(27) A Tour of Go 多语言翻译项目:修复手机端首页顶栏标题换行,并完成真机验证

图 3:生产自动部署脚本第一次真实运行时,systemd 已经显示 active,但首次 localhost 探测仍然得到 HTTP 000;随后连续 3 次同时满足 active + HTTP 200 后,脚本才判定部署成功,并继续完成公网 HTTP 200 验收。这次真实运行验证了连续应用层健康检查的必要性。

(28) A Tour of Go 多语言翻译项目:从一次 203/EXEC 故障到生产自动部署脚本落地

图 1:阿里云生产环境访问 go.dev Playground 时出现 TLS 握手超时

(29) A Tour of Go 多语言翻译项目:为 Playground 搭建独立的 ZgoCloud 执行代理

图 3:清除 /tour/script.js 缓存后,Run 已直接请求 ZgoCloud /compile 并返回 HTTP 200

(30) A Tour of Go 多语言翻译项目:将生产 Run / Format 切换到 ZgoCloud 执行节点

【图 1:微信中运行 Go 示例时出现 Error communicating with remote server.】

(31) A Tour of Go 中文版手机端运行与格式化偶发失败排查:从间歇性报错到补强 Nginx 可观测性

【图 4:向 golang-dev 公开邮件列表发送 Playground 使用告知邮件并投递成功】

(32) A Tour of Go 多语言项目:为 Playground 代理增加唯一 User-Agent,并主动告知 Go 官方

【图 3:百度剩余 9 个核心 URL 提交成功,remain 归零】

(33) A Tour of Go 搜索引擎收录实测:从 Google 自然索引到百度主动提交与 Bing IndexNow

【图 1:当前正式中文 methods/24 页面,右侧示例代码运行成功】

(34) A Tour of Go 中文翻译完成后,我为什么重新评估 minimal-protect 翻译模式

【图 3:5 个页面 Request SHA256 完全一致,但 Response SHA256 全部不同】

(35) A Tour of Go 翻译实验:更多原始上下文为什么没有更好?从 157 个保护标记到 30 次重复盲评

图 3:3 个代表页 × 4 个评审模型,共 12 次匿名评审的完整排名与第一名票数。

(36) A Tour of Go 翻译质量再评估:minimal-protect 未达预期后,我开始比较 ChatGPT、Codex 与 GLM-5.2

上一篇文章中,我继续评估了 A Tour of Go 简体中文翻译流程。

当时真正发生变化的,已经不是 Protection Policy,而是 Translation Engine。

经过代表页独立翻译和多模型匿名评审以后,ChatGPT 的整体表现最好,也因此成为最值得继续扩大验证的翻译来源。

上一篇记录:

不过上一篇结束时,我还没有决定立即重新翻译全部 103 个正式课程页面。

当时能够确定的只是:

ChatGPT 值得扩大样本继续验证。

如果扩大以后仍然保持优势,再判断是否值得替换现有正式 zh-CN。

真正继续推进以后,这个“扩大样本”最终没有停留在十几页。

而是一路走到了:

Plaintext
103 / 103

A Tour of Go 当前全部 103 个正式课程页面,最终都重新生成了一份 ChatGPT 中文候选。

但这一阶段真正需要解决的,已经不再是:

“ChatGPT 能不能翻译一个 A Tour of Go 页面?”

真正的问题变成了:

没有 OpenAI API 的情况下,怎样把 ChatGPT 的高质量整页翻译能力真正接入现有工程流程,同时避免 103 页反复人工复制粘贴?

最终起到关键作用的,是:

Plaintext
ChatGPT
+
GitHub
+
现有本地翻译与校验工具

一、这次没有改变整页翻译原则

首先需要明确一点。

这次重译并没有改变 A Tour of Go 原来的基本翻译单元。

原来的 GLM-5.2 工作流就已经坚持:

Plaintext
一个完整 present.Section
=
一个完整课程页面

所以这次质量路线发生变化的根本原因,并不是从句子翻译改成了整页翻译。

两轮工作流本来都是整页翻译。

真正改变的是:

Plaintext
Translation Engine

原有这些能力继续保留:

Plaintext
完整课程页面

Default protection

完整页面翻译

restore

candidate

统一 validator

也就是说,我并没有因为换成 ChatGPT,就再建设一套新的页面切分、结构保护和校验体系。

这次希望做到的是:

只更换真正负责生成中文的 Translation Engine,尽可能继续复用已经成熟的工程部分。

二、103 页不能继续靠人工复制粘贴

代表页实验阶段,人工复制几个完整页面还可以接受。

但如果真正扩大到 103 页,问题马上就不一样了。

最直接的人工流程会变成:

Plaintext
本地找到英文页面

复制完整翻译输入

切换到 ChatGPT

粘贴

等待翻译

复制中文结果

切回本地

保存 raw response

继续下一页

如果 103 页全部这样处理,仅输入和输出就意味着两百多次机械性的复制粘贴。

而且还要不断确认:

Plaintext
当前是哪一个 Batch
当前是哪一个 page
输入有没有复制完整
输出有没有粘贴错文件
结构字符有没有在消息传递过程中发生变化

上一篇代表页实验中,其实已经遇到过人工传递造成结构漂移的问题。

所以真正开始全量重译以前,我越来越明确一件事:

如果最后真的要重新翻译 103 页,就应该尽可能消除人工搬运文本。

但我当时又没有适合直接接入现有工具链的 OpenAI API 条件。

于是最终采用了另外一种方式。

三、先把 103 页整理成固定的重译批次

本地项目首先增加了专门的 retranslation input 导出能力。

不再临时打开某个 .article 文件,再人工整理需要交给模型的内容。

而是让项目按照现有 Default protection 规则生成固定的翻译输入。

之后逐渐形成:

Plaintext
chatgpt-zh-CN-001
chatgpt-zh-CN-002
chatgpt-zh-CN-003
...
chatgpt-zh-CN-011

其中 Batch 001~008 完成 103 页第一次全量覆盖。

Batch 009~011 则不再增加新的课程页面,而是针对前面已经完成的页面继续产生 revision。

图 1:ChatGPT 重译最终形成 11 个批次,其中 Batch 001~008 完成全部 103 个正式课程页面的首次覆盖,Batch 009~011 用于后续 revision;Batch 004 和 Batch 008 各留下一个 retry 页面。
图 1:ChatGPT 重译最终形成 11 个批次,其中 Batch 001~008 完成全部 103 个正式课程页面的首次覆盖,Batch 009~011 用于后续 revision;Batch 004 和 Batch 008 各留下一个 retry 页面。

前几个批次主要按照每批 10 页推进。

等整个交接和校验方式稳定以后,部分批次扩大到了 20 页。

最终 Batch 008 完成时,第一次全量重译已经正式覆盖:

Plaintext
103 页

这里也需要注意:

11 个 Batch 中的 candidate 数量不能直接相加理解为页面总数。

课程页面始终只有 103 个。

后面的 Batch 009~011 是对已有页面产生的新 revision。

四、GitHub 成了 ChatGPT 与本地工具之间的交接层

这一阶段真正大幅减少复制粘贴工作的,是 ChatGPT 的 GitHub 连接能力。

本地项目先生成并提交固定 Batch input。

例如:

Plaintext
data/retranslation-runs/zh-CN/chatgpt-zh-CN-008/inputs/

之后 ChatGPT 可以直接通过 GitHub 读取已经提交的:

Plaintext
Batch input
glossary
翻译规则
必要的项目上下文

这样我就不再需要把每一个完整页面从本地终端或者编辑器复制到 ChatGPT。

ChatGPT 完成整页翻译以后,原始译文同样通过 GitHub 写回对应 Batch:

Plaintext
raw-responses/

于是原本需要大量剪贴板操作的过程,被改成了:

Plaintext
本地项目

生成固定 Batch input

GitHub

ChatGPT 读取 Batch

完成整页翻译

GitHub 写回 raw response

本地同步

process / restore / validator
图 2:GitHub 中的 chatgpt-zh-CN-008 重译批次。一个 Batch 同时保存 inputs、raw-responses、candidates、validation 和 retry 记录,GitHub 成为 ChatGPT 与本地翻译流水线之间的数据交接层。
图 2:GitHub 中的 chatgpt-zh-CN-008 重译批次。一个 Batch 同时保存 inputsraw-responsescandidatesvalidation 和 retry 记录,GitHub 成为 ChatGPT 与本地翻译流水线之间的数据交接层。

这里 GitHub 本身当然不负责翻译。

它承担的是:

稳定、可追踪的数据交换。

ChatGPT 不需要直接访问我的本地电脑。

本地项目也不需要为了这次重译专门开发一个新的 ChatGPT API Translation Engine。

双方通过 GitHub 中已经提交的文件交接。

最终分工逐渐变成:

Plaintext
ChatGPT
→ 读取正式翻译输入
→ 完成高质量整页翻译
→ 写回原始译文

GitHub
→ 保存和交接输入、输出及历史证据

本地工具 / Codex
→ input export
→ restore
→ validator
→ retry
→ candidate
→ 测试

这样一来,我实际需要人工关注的重点,也从:

Plaintext
不断复制和粘贴文本

变成了:

Plaintext
检查批次状态
处理异常页面
判断 revision
审核阶段结果

对于 103 页这种规模来说,这个区别非常明显。

五、每一批原始译文都单独进入 Git 历史

为了让 ChatGPT 的原始结果后续仍然能够追踪,这一阶段还坚持了一条比较简单的规则:

一批 ChatGPT raw response 对应一个独立 Git commit。

例如一个 Batch 会先有输入提交:

Plaintext
data: 添加第八批 ChatGPT 重译输入

然后再有原始译文:

Plaintext
data: 添加第八批 ChatGPT 原始译文

等本地 restore 和 validator 完成以后,再提交:

Plaintext
data: 添加第八批 ChatGPT 重译候选与校验结果

这样每个阶段的职责比较清楚。

也就是说:

Plaintext
输入是什么

ChatGPT 原始输出是什么

本地处理以后生成了什么 candidate

validator 最终得到什么结果

不会混在同一次修改里。

对普通手工翻译来说,这可能显得有些繁琐。

但到了后面需要追查某一个页面为什么产生新 revision,或者某一次 retry 到底发生了什么时,这些 Git 历史会变得很有价值。

六、ChatGPT 原始回复不会直接成为正式 candidate

这次另一个很重要的原则,是:

ChatGPT 返回的中文,不会因为语言看起来很好,就直接进入正式 candidate。

每个正常页面至少会留下四层内容:

Plaintext
inputs
raw-responses
candidates
validation

basics/1 为例:

图 3:以 basics/1 为例,一个正常页面分别保存实际翻译输入、ChatGPT 原始回复、restore 后的 candidate 和统一 validator 结果。ChatGPT 原始输出不会直接成为项目正式候选。
图 3:以 basics/1 为例,一个正常页面分别保存实际翻译输入、ChatGPT 原始回复、restore 后的 candidate 和统一 validator 结果。ChatGPT 原始输出不会直接成为项目正式候选。

它们承担的职责分别是:

Plaintext
inputs/basics-1.article

记录真正交给 ChatGPT 的内容。

Plaintext
raw-responses/basics-1.article

保存 ChatGPT 返回的原始译文。

Plaintext
candidates/basics-1.article

保存经过确定性 restore 后,准备进入项目统一校验的候选。

最后:

Plaintext
validation/basics-1.json

记录 validator 的结果。

这样一旦某个页面发生异常,就可以继续回答几个完全不同的问题:

Plaintext
原始 input 是否正确?
ChatGPT 是否改变了不该改变的内容?
restore 是否正确?
最终 candidate 是否符合结构要求?

如果只保存最后一个 candidate,这些问题很容易混在一起。

七、ChatGPT 继续接受原来的统一 validator

换了 Translation Engine,不代表降低工程门槛。

这一点在这次重译过程中始终没有改变。

不管译文来自:

Plaintext
GLM-5.2
ChatGPT
未来其他 Translation Engine

最终都应该回到同一套 validator。

换句话说:

Translation Engine 负责生成中文,validator 负责判断这个结果能不能继续进入项目。

ChatGPT 的语言质量再高,如果它破坏了:

Plaintext
present.Section
链接 target
代码
directive
不可翻译技术标识
其他必须保持的结构

一样不能直接通过。

这也是这次没有单独建设所谓:

Plaintext
ChatGPT validator
ChatGPT publisher
ChatGPT production workflow

的原因。

真正增加的是:

Plaintext
ChatGPT retranslation staging

后面的确定性校验尽量继续复用现有能力。

八、103 页并不是全部第一次就通过

批量流程真正有价值的地方,通常不是所有页面顺利的时候。

而是出现失败以后,是否还能继续追踪。

103 页第一次全量重译过程中,有两个页面最终留下了正式 retry history:

Plaintext
moretypes/1
concurrency/1

它们分别出现在:

Plaintext
chatgpt-zh-CN-004
chatgpt-zh-CN-008
图 4:moretypes/1 和 concurrency/1 在第一次处理后都留下 attempt-001-validation.json,随后重新生成 attempt-002.article。失败尝试没有被成功结果覆盖,而是作为独立 retry evidence 保留下来。
图 4:moretypes/1concurrency/1 在第一次处理后都留下 attempt-001-validation.json,随后重新生成 attempt-002.article。失败尝试没有被成功结果覆盖,而是作为独立 retry evidence 保留下来。

例如:

Plaintext
retries/moretypes-1/attempt-001-validation.json
retries/moretypes-1/attempt-002.article

第一次失败的校验结果会被保存。

第二次重新生成的译文同样作为新的 attempt 保存。

然后重新进入正常:

Plaintext
restore

validator

candidate

而不是:

Plaintext
第一次失败

删除

再翻一次

假装第一次没有发生

最终全部 103 页中,需要这种正式第二次尝试的只有两个页面。

九、历史 Batch 开始成为不可随意修改的 evidence

随着 Batch 数量逐渐增加,我后来又明确了一条规则:

已经形成的历史 Batch 不再直接手工修改。

如果后面发现某个页面还需要调整,不回头修改旧 candidate。

而是产生新的 revision batch。

这也是 Batch 009~011 存在的主要原因。

普通翻译草稿通常可以反复覆盖同一个文件。

但这里更需要知道:

Plaintext
当时给 ChatGPT 的输入是什么

ChatGPT 当时返回了什么

当时 restore 出了什么

validator 当时判断了什么

为什么后来又需要 revision

所以这些目录逐渐不再只是临时翻译文件。

它们开始承担:

历史 evidence

的角色。

后面真正把 ChatGPT 新译文提升成正式 canonical 时,这条原则尤其重要。

不过那已经属于下一篇文章的内容。

十、Batch 001~008 最终完整覆盖 103 页

第一次全量重译结束以后,最终统计为:

Plaintext
Initial full-translation batches : 8
Pages in initial full translation: 103

也就是说:

Batch 001~008 已经让全部 103 个正式课程页面拥有新的 ChatGPT 候选。

之后:

Plaintext
Batch 009
Batch 010
Batch 011

继续处理部分页面的 revision。

所以整个重译阶段最终可以概括成:

Plaintext
8 个首次全量翻译 Batch
+
3 个 revision Batch
=
11 个 ChatGPT Batch
图 5:ChatGPT 重译阶段最终汇总。Batch 001~008 首次完整覆盖 103 个正式课程页面,Batch 009~011 用于后续 revision;全部 Batch 涉及的唯一正式页面仍然是 103 个,其中 moretypes/1 和 concurrency/1 留下 retry history。
图 5:ChatGPT 重译阶段最终汇总。Batch 001~008 首次完整覆盖 103 个正式课程页面,Batch 009~011 用于后续 revision;全部 Batch 涉及的唯一正式页面仍然是 103 个,其中 moretypes/1concurrency/1 留下 retry history。

最终结果:

Plaintext
Initial full-translation batches : 8   (001-008)
Revision batches                 : 3   (009-011)
Total ChatGPT batches            : 11

Pages in initial full translation:
103

Unique pages across all batches:
103

Retry pages:
moretypes-1
concurrency-1

Repository status:
clean

到这里,上一篇文章中还只是“值得扩大样本”的实验方向,已经真正变成:

Plaintext
103 / 103

的完整 ChatGPT 重译结果。

十一、这次真正解决的不是“ChatGPT 会不会翻译”

回头来看,这一阶段真正解决的问题,并不是:

ChatGPT 能不能翻译 A Tour of Go?

上一篇三个代表页实验以后,这个问题其实已经有了比较明确的答案。

更难的问题是:

没有 OpenAI API,又不希望人工复制粘贴 103 个完整页面时,怎样把 ChatGPT 真正变成一个可以规模化使用的 Translation Engine?

这次最终找到的办法并没有重新建设一个复杂翻译平台。

而是尽可能复用已有能力:

Plaintext
现有完整页面翻译单元
+
现有 Default protection
+
自动导出的固定 Batch input
+
GitHub 数据交接
+
ChatGPT 整页翻译
+
原始 response evidence
+
现有 restore
+
现有 validator
+
有限 retry

其中 GitHub 的加入尤其关键。

它让 ChatGPT 和本地工程之间不再依赖大量剪贴板操作。

我不需要把 103 个页面逐个复制给 ChatGPT。

ChatGPT 也不需要直接控制我的本地电脑。

本地项目、GitHub 和 ChatGPT 各自负责自己最适合的部分。

最终,人的主要精力开始从:

Plaintext
搬运文本

转向:

Plaintext
判断质量
处理异常
决定 revision
控制发布边界

这才使 103 页全量重译真正变成了一件可以推进完的事情。

不过到这里仍然只能说明:

103 页新的 ChatGPT 候选已经完整生成。

它还不能自动推出另外一个结论:

这些新译文已经足够好,可以替换当前正式 zh-CN。

因为“翻译完成”和“允许成为正式 canonical”,本来就应该是两个不同阶段。

下一篇就继续记录这一部分。

到了那里,需要回答的将不再是:

Plaintext
103 页有没有翻完?

而是:

103 页全部翻完以后,怎样进一步做完整语义质量审核,为什么最终能够把整体评价从原来的约 94 分提高到约 98 分,以及这些 ChatGPT 候选又是怎样安全提升成正式 canonical 的。

从「A Tour of Go 中文版」这个搜索词开始:我决定做一个持续维护的 Go Tour 中文版

A Tour of Go 多语言翻译项目

本系列完整记录 A Tour of Go 多语言翻译项目从架构设计、整页翻译、结构保护、自动校验,到生产发布与后续维护的实际开发过程。

项目入口:
✅ 在线学习:A Tour of Go 简体中文版
✅ 项目源码:GitHub:shuijingwan/go-tour-i18n

当前第一阶段已完成简体中文版本。项目属于非官方社区多语言翻译项目,与 Go 官方无隶属或授权关系。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理