thegraybook.nodenodenode.net —— vvvv gamma 官方文档 the gray book 的社区中文翻译。
由 vvvv 中文社区维护,非官方站点。上游导航里的每一页,这里都有对应的中文。
我们用 AI 做初翻,再配合人工审校和一套机器检查(术语一致性、锚点、链接、渲染)来兜底。
理由很直接:灰皮书有十几万词,靠零散的业余时间逐页人译,现实里的结果是翻到一半就停了,然后上游又跑远了 —— 这个站此前就停了四年。AI 让「全部覆盖」和「跟上更新」第一次变得可能。
代价也要说清楚:有些地方会生硬,有些地方会走味,个别地方可能理解错了。 术语我们锁得很死(一份机器可读的术语表在把关),但语感和上下文判断,AI 仍然不如一个真正用过这个功能的人。
所以这个仓库最需要的贡献,不是「认领一章来翻」,而是把读着别扭的地方改顺。
按顺手程度排,随便挑一种:
| 方式 | 怎么做 |
|---|---|
| 直接改 | 每页底部有「编辑此页」,点开就是 GitHub 在线编辑器。改一个字也算 |
| 开 issue | 提一个 issue,说明哪页哪句、问题是什么 |
| 说一声 | 到 Discord 或发邮件到 info@nodenodenode.net |
哪怕只是「这句我读了三遍没读懂」,对我们也是有用的信息 —— 读不懂本身就是要修的缺陷。
每一页正文最上面都有「源文档地址」,一点就能对照英文原文。拿不准时以原文为准。
完整贡献流程见站上的如何加入。
站点用 Docusaurus 3 构建,需要 Node.js 20 或更高版本。
npm install
npm run gb:upstream # 建立上游工作副本(.upstream/,gitignored)
npm start # 本地预览;npm run start:lan 可在局域网访问| 文档 | 管什么 |
|---|---|
ARCHITECTURE.md |
设计思路与已踩过的坑。改动工具链前先读这份 |
MAINTENANCE.md |
上游更新之后怎么跟进。日常维护看这份 |
TRANSLATION-STYLE.md |
文风、排版、标点、链接规范 |
translation/terms.yml |
术语唯一真源(TERMINOLOGY.md 是它的产物,不要手改) |
| 站上的协作规范 | 给校对者看的精简版 |
npm run gb:check-terms # 术语一致性;看计数行,不要只看末尾
npm run gb:check-anchors # 上游锚点是否都能解析到真实标题
npm run build # 断链与坏锚点会直接让构建失败新定的术语必须写进 translation/terms.yml,和译文放在同一个提交里。 没进表就不算改完 —— 这是硬约束,检查器会拦。
上游是 vvvv/The-Gray-Book(DocFX + Markdig)。每页 frontmatter 里记着当时上游文件的 git blob SHA,据此判断谁过期了:
npm run gb:upstream # 更新上游副本
npm run gb:status # 覆盖率 + 谁过期了 + 谁还没翻
npm run gb:diff # 上游具体改了什么
npm run gb:touch <路径> # 跟进完之后回填账本仓库里有一个每周自动巡检上游的 GitHub Action,发现漂移会写进一个固定的 issue,不依赖谁记得去看一眼。
实测漂移率约 6 页 / 3 个月。跟进流程见 MAINTENANCE.md,原理与设计取舍见 ARCHITECTURE.md。
| 命令 | 作用 |
|---|---|
gb:upstream |
建立/更新上游工作副本 |
gb:status |
覆盖率与过期报告 |
gb:diff |
上游改了什么(跟进的起点) |
gb:touch |
跟进完之后回填账本 |
gb:termcard |
为某一页生成术语卡 |
gb:check-terms |
术语一致性检查 |
gb:fix-terms |
按术语表批量修正存量译文(只改正文区域) |
gb:terms-doc |
从 terms.yml 生成 TERMINOLOGY.md |
gb:check-anchors |
锚点门槛 |
gb:check-rewrite |
润色时断言只改了散文,没动结构 |
gb:prose-smell |
翻译腔嫌疑定位(只提示,不进门槛) |
gb:gen-sidebar |
从上游 toc.md 生成 sidebars.js |
gb:migrate |
结构迁移(一次性,默认 dry-run) |
sidebars.js ← gb:gen-sidebar
TERMINOLOGY.md ← gb:terms-doc
translation/navbar-sections.json ← gb:gen-sidebar
npm run build # 输出到 build/
npm run serve # 本地预览构建产物npm run serve:lan # 局域网预览,手机上开 http://<本机IP>:3000搜索只在构建产物上工作。 它的 Worker 里判断了 NODE_ENV === 'production',所以 npm start(dev)下搜索框能打开、能输入,但永远返回空结果 —— 要测搜索必须走 build + serve。
部署:Vercel,push 到 main 自动构建。 站点是 thegraybook.nodenodenode.net(DNS 指向 cname.vercel-dns.com)。仓库里没有部署 workflow,也不需要 —— 关联关系在 Vercel 后台。唯一的 CI 是上游漂移巡检,不参与部署。
package.json 里保留着 Docusaurus 自带的 npm run deploy(推 gh-pages 分支),不要用 —— 当前部署不走这条路径。
译文由 vvvv 中文社区维护,原文版权归 vvvv group 所有。本站为非官方社区翻译。
界面标题字体为 Fusion Pixel 12 的子集(static/fonts/),OFL 许可。