导航:生成的文件如何运作
每个语言区域有四个导航产物,由该语言区域的主题生成,而不是手写(外加 README.md,它只为参考语言区域 en-gb-oxendict 生成一次):
README.md(仓库主页上的目录;仅限参考语言区域)locales/<locale>/index.md(已发布站点的主页)locales/<locale>/front-matter/table-of-contents.mdlocales/<locale>/topics/09-07-index.md(主题索引,带链接)
它们全都由 tools/gen_nav.py生成。
不要手工编辑它们,因为下一次生成会覆盖你的改动。
何时重新生成
每当你:
- 添加、删除、重命名或重新编号某个主题,或
- 更改某个主题的
# N.M Title标题(目录会用到它)
就运行 just nav(或 python3 tools/gen_nav.py)。
如果你改动了 locales/en-gb-oxendict/ 下的任何内容,请先运行 python3 tools/localize.py,使其他三个语言区域的主题(以及它们产生的标题)
在 gen_nav.py 读取之前保持最新;参见 spec/locales.md。
工作原理
对每个语言区域,gen_nav.py 读取 locales/<locale>/topics/*.md 中的每个文件,按小数编号排序,按部分分组,然后:
- 根据每个主题的 H1 标题,逐部分构建目录,
- 把它写入
locales/<locale>/index.md和locales/<locale>/front-matter/table-of-contents.md(仅对参考语言区域,还写入README.md), - 扫描内容主题(第 1 至 8 部分)中的一份固定关键术语列表,并把主题索引写入
locales/<locale>/topics/09-07-index.md。
共享的样板文字(引言段落、“如何阅读本书”、“贯穿始终的主题”和各部分标题)的本地化方式与主题正文相同,
通过 tools/localize.py 的语言区域函数完成,因此生成的页面在每个语言区域中读起来都很自然。
各部分标题保存在脚本靠前位置的 PART_TITLES 字典中。生成器使用冒号式的部分标题(“Part 2: Delivery and Flow Metrics”),
绝不使用长破折号。
对于手工翻译的语言区域,主页和目录页是手写的(译后的标题和各部分的 N.0 导言行),
而 tools/gen_translated_nav.py 会根据该语言区域各主题的 H1 标题刷新主题列表。
它不会触及什么
仓库根目录的规格(spec/index.md、spec/structure.md 及其同伴)是手写的事实来源。生成器不会写它,它也不属于已发布站点。
如果你更改了结构,请自己更新 spec/structure.md,然后运行 just nav 处理派生文件,再运行 just test 确认一切一致。