在决定保留 A Tour of Go 原有 SPA 架构之后,广告问题从“要不要整页刷新”转变成了“广告应该放在哪里、又该如何跟随 SPA 页面生命周期”。本文记录了从 AdSense Preview 识别 footer 下方候选广告位,到方案 A 使用 MutationObserver 跟踪 DOM 变化,再到方案 B 将广告直接绑定 Angular route-owned course view 生命周期的完整演进。最终通过 mount() / $destroy / unmount() 管理每一页独立广告节点,并保留 Auto Ads 继续服务其他已正常运行的站点和域名。
在排查 A Tour of Go 展示广告始终不出现的问题时,一个看似直接的方案是放弃 SPA,让每一节课程都通过完整页面刷新来简化 AdSense、统计和 SEO。但进一步对比后发现,最大的代价并不是一次性的前端改造,而是长期偏离 golang/website 上游架构,持续增加同步与维护成本。本文结合官方 A Tour of Go 的 SPA 导航、上游 _content/tour/ 目录以及项目自身的 upstream baseline 管理方式,对“保留 SPA”与“放弃 SPA”进行完整权衡,并最终确定:让广告适配 A Tour of Go,而不是为了广告重新设计 A Tour of Go。
在 A Tour of Go 多语言站点接入 Google AdSense 后,课程页虽然存在大片视觉空白,但普通展示广告始终没有出现。本文从 Auto Ads 配置、adsbygoogle.js 加载状态以及官方 A Tour of Go 的 DOM / layout 结构入手,分析为什么“页面看起来有空白”并不等于“Google 认为这里存在可插入广告的位置”。最终将问题范围收敛到 A Tour of Go 特殊的左右分栏和交互式页面结构,并引出后续一个更重要的架构选择:是否值得为了 AdSense 放弃原有 SPA。
A Tour of Go 日语版 ja-JP 正式上线后,我没有立即开始第三门语言,而是先复盘第二门语言从开发、翻译、质量审核、projection、production 部署到公网验收的完整过程,并将此前依赖临时分析和上下文记忆的环节固化为正式规范。项目新增 NEW_LOCALE_RUNBOOK.md 和 LOCALE_SURFACE_REVIEW.md,明确新增 locale 的统一入口、TranslationUnit 之外的完整语言质量审核、Rendered Surface Acceptance、首次生产部署与日常维护部署边界,以及 glossary 作为全站术语权威来源的职责,为后续第三门及更多语言建立可重复执行的标准化扩展流程。
A Tour of Go 多语言翻译项目的第二门社区语言 ja-JP 于 2026 年 8 月 24 日正式完成生产上线。日语版覆盖 103 个课程 Page 和 19 个 eligible Example,共 122 个 TranslationUnit,全部经过 automatic validation、Quality Check、Final Review 与 promotion,并完成公共 UI、课程目录、独立生产部署、Cloudflare Free、共享静态资源、Playground、SEO 与真实浏览器验收。Google Search Console 已成功处理 ja-JP sitemap 并发现 105 个公开网页。这次上线也真正验证了项目从 zh-CN 扩展到第二门语言的完整多语言架构。
本次重新评估 A Tour of Go 的 TranslationUnit 翻译方案,根本原因不是单纯比较模型能力,而是 ChatGPT 作为批量翻译引擎在实际工作中出现持续稳定性问题,即使从 ZIP 交付简化为 JSON,翻译任务仍可能卡住。实验使用 5 个正式 TranslationUnit、完整 zh-CN glossary、protected token、独立随机匿名和 Engineering Gate,对 ChatGPT GPT-5.6 High、Codex GPT-5.6 Sol High 与 Extra High 进行四模型匿名评审。结果显示,ChatGPT High 的外部评审平均分为 96.67,Codex High 为 95.73,Extra High 为 95.87,三者已进入相近的高质量梯队,而 Extra High 并未表现出稳定优势。综合翻译质量与本地批量执行能力,后续默认翻译引擎准备调整为 Codex GPT-5.6 Sol High,ChatGPT 则重点用于统一 Quality Check,并以所有 TranslationUnit 最终达到 A 作为质量验收目标。
在 go-tour-i18n 多语言翻译项目推进过程中,我曾经通过 ChatGPT + GitHub batch 完成 A Tour of Go 简体中文 103 页全量重译验证。后续扩展 ja-JP 翻译时,继续沿用了基于 TranslationUnit 的翻译流程,并尝试从 GitHub 写入调整为 raw-responses artifact 导入模式。实际测试发现,ChatGPT 能够理解项目流程、读取 batch 和 manifest,但在新任务中无法稳定完成从 TranslationUnit 翻译结果到 raw-responses 文件和 artifact 交付的完整闭环。本文记录这次 AI 辅助翻译流程稳定性验证过程,并分析翻译能力与工程执行能力之间的差异。
在 go-tour-i18n 多语言翻译项目中,最初计划让 ChatGPT 完成翻译后直接写入 GitHub 仓库。实际验证后发现,当前会话环境中的 GitHub 写入、commit、push 流程不适合作为稳定依赖。因此项目调整为:ChatGPT 负责读取 GitHub 输入并生成 raw-responses artifact,本地环境通过新增的 retranslation import 命令完成导入、process、validation、review 和 Git 操作。本文记录这次翻译交付流程调整,以及 AI 与工程环境职责重新划分的实践经验。
Post Views: 7 项目当前流程 当前日语翻译任务采用: 项目已经明确: 相关规则已经记录在项目文档中。 Git 提交记录出现变化 在日语翻译初期: chatgpt-ja-JP-001 提交信息 […]
A Tour of Go 多语言翻译项目完成简体中文版本后,开始进入第二语言扩展阶段。本文记录选择日语(ja-JP)作为第二语言的原因,以及首批日语翻译任务、batch 管理、raw response 和自动 validation 流程验证过程。
👨💻 个人品牌
王世强|PHP / Go 技术顾问
15+ 年 Web 后端开发经验,专注于系统维护、架构优化、性能调优及 Linux 运维。
持续运营技术博客 10+ 年,累计发布 1000+ 篇原创技术文章。
为创业团队、中小企业及独立开发者提供长期技术支持与远程合作服务。
.env (14) 404 (13) add (16) AI 翻译 (30) Apache (13) Array (19) A Tour of Go (52) Cache (13) CentOS (23) ChatGPT (19) ChatGPT Plus (14) chrome (19) Cloudflare (29) Codex (17) composer (42) composer.json (22) composer install (13) composer update (14) console (16) Container (25) curl (15) delete (31) Docker (32) Dockerfile (15) EdgeOne (31) environment variable (19) error (24) file (15) filter (20) Git (27) GitHub (23) Gitlab (15) GLM-5.2 (26) Go (54) go-tour-i18n (14) Google AdSense (23) Go 语言 (23) GraphQL (24) GraphQL API (14) Gutenberg (34) http (21) https (22) Interface (19) Jquery (13) json (24) Laravel (37) Laravel 6 (55) Laravel 9 (25) Lighthouse (17) Lighthouse 5 (14) Linux (21) Migrate (13) Module (17) MySQL (78) MySQL 5.7 (22) Nginx (63) normalize.css (28) OKX (15) OneinStack (21) PHP (67) php-fpm (18) php.ini (24) PHP 7.1.12 (22) PHP 7.4 (26) phpmyadmin (15) PhpStorm (24) Polylang (57) postman (18) Query (17) queue (16) Rancher (24) Redis (49) response (13) RESTful (27) RESTful API (23) Shell (13) Shopify (19) SlyTranslate (20) SQL (24) String (14) TortoiseGit (14) Twenty Twenty-Five (20) Ubuntu (40) update (20) VPN (17) W3 Total Cache (35) Windows 10 (46) WireGuard (27) WordPress (126) WPCode (23) Wstunnel (14) Yii (40) Yii 2 (70) Yii 2.0 (51) 多语言翻译 (31) 技术博客 (15) 故障排查 (14) 数据库迁移 (16) 浏览器 (14) 阿里云 (19)