翻译
各语言版本如何相互对应,没有译文时网站显示什么,以及如何让每种语言保持完整
镜像路径
每个页面在每个语言文件夹中都位于相同的路径,使用相同的文件名:
en/docs/2_editor/4_craft/3_difficulty-curve.md
ru/docs/2_editor/4_craft/3_difficulty-curve.md
zh/docs/2_editor/4_craft/3_difficulty-curve.md
要翻译缺失的页面,把英文文件复制到你的语言文件夹下的相同路径,然后翻译文本
保持不变的内容:
- 文件名和所有文件夹名,包括前缀
- frontmatter中的
date和tags(title要翻译) [[wiki-links]]:它们的目标是文件名,在所有语言中都相同- 外部链接、图片名、代码块和行内代码:文件、字段、按键、数值、命令
- 结构:相同的标题、相同的顺序,相同的列表、表格和标注框
标注框的标题要翻译成页面所属的语言。更多:风格指南
英文是后备语言
某种语言缺少某个页面时,网站会显示英文页面并附上提示。反过来则不行:只存在于ru/中的页面,会让英文读者看到404
注意
在页面出现在en/之前,永远不要把它添加到其他语言中。所有其他语言的读者都会遇到失效的链接
每种语言都包含每一条事实
英文只在地址上起主导作用,内容上不是。一条事实可以先加到任何一种语言中,然后再同步到其他所有语言。修改之后,每个版本都应包含所有版本所知道的全部内容
- 只添加,不删除。缺失的信息要写进每一种缺少它的语言
- 不靠猜测解决矛盾。两个版本给出不同的数字或相反的说法?请核对来源(游戏、SDK),并在pull request中提出
- 未经询问不删除任何内容,包括看起来已经过时的文本
措辞上的差异不是问题。读者从中了解到的内容有差异才是问题
比较版本
仓库附带一个用于Claude Code的技能compare-translations(位于.claude/skills/)。它负责做这种比较。没有它的话,请手动完成同样的两轮检查
结构检查逐个元素比较各版本:frontmatter、H1、第一段、标题、段落数量、列表项、表格行和标注框、链接目标、图片、代码
含义检查把各章节并排阅读,寻找一个版本有而另一个版本没有的事实:数字和单位,字段、按钮和按键的名称,条件和例外,警告,操作步骤及其顺序,示例
添加新语言
新语言完全在这个仓库中添加,网站代码不需要改动:
- 把
frontend/en.yaml复制为frontend/<code>.yaml,例如frontend/de.yaml,然后翻译其中的值。这些是网站自己的字符串:菜单、按钮、搜索、Cookie横幅。键和每个{name}都保持原样 - 在
en/、ru/和zh/旁边创建<code>/文件夹,把页面翻译到其中。还没有翻译的页面会以英文显示并附上提示
带有one/few/many/other形式的键取决于数量。给它你的语言所需的每一种形式,构建会指出缺少哪些。还没有翻译的键会以英文显示。构建会把这些键列为警告
在进行大规模翻译之前,先在bullet-hero/docs中开一个issue,以免两个人翻译同样的内容