翻譯
譯文就是把英文檔案複製到你的語言資料夾中的相同路徑,只翻譯其中的文本。在任何一種語言中出現的事實,都要同步到其他所有語言
映象路徑
每個頁面在每個語言資料夾中都位於相同的路徑,使用相同的檔名:
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
ja/docs/2_editor/4_craft/3_difficulty-curve.md
ko/docs/2_editor/4_craft/3_difficulty-curve.md
es/docs/2_editor/4_craft/3_difficulty-curve.md
fr/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、第一段、標題、段落數量、列表項、表格行和標註框、連結目標、圖片、程式碼
含義檢查把各章節並排閱讀,尋找一個版本有而另一個版本沒有的事實:數字和單位,欄位、按鈕和按鍵的名稱,條件和例外,警告,操作步驟及其順序,示例
繁體中文由指令碼生成
zh-Hant/不手動翻譯。指令碼從zh/轉換得到它:OpenCC,繁體字加臺灣用語。繁體中文頁面的修正寫進zh/的頁面,下一次轉換會把它帶過去。直接在zh-Hant/中做的修改會被覆蓋
新語言
新語言完全在這個倉庫中新增,網站程式碼不需要改動:
- 把
frontend/en.yaml複製為frontend/<code>.yaml,例如frontend/de.yaml,然後翻譯其中的值。這些是網站自己的字串:選單、按鈕、搜尋、Cookie橫幅。鍵和每個{name}都保持原樣 - 在
en/、ru/、zh/、zh-Hant/、ja/、ko/和es/旁邊建立<code>/資料夾,把頁面翻譯到其中。沒有譯文的頁面會以英文顯示並附上提示
帶有one/few/many/other形式的鍵取決於數量。給它你的語言所需的每一種形式,構建會指出缺少哪些。未翻譯的鍵會以英文顯示。構建會把這些鍵列為警告
在進行大規模翻譯之前,先在bullet-hero/docs中開一個issue,以免兩個人翻譯同樣的內容