遊戲自帶日文、簡體中文、繁體中文、英文、韓文五種閱讀語言。語言包可以再加一種:裝好、啟用、重啟遊戲之後,設定裡的語言選單和語言切換鍵(F7)都會出現它。沒翻譯到的介面文字、名稱和臺詞,顯示你指定的退回語言;退回語言也沒有的,顯示日文原文。
同一個包也可以只改現有語言,比如換一套英文譯文。
包的安裝和管理見 MOD 包:安裝與製作。需要 0.5.3 或更新的版本。
包裡放什麼
yourname.korean/
mod.json
dialogue/ko/language.json 這種語言的聲明(新語言必須有)
dialogue/ko/terms.json 介面文字與名稱
dialogue/ko/story/… 劇情臺詞
dialogue/ko/battle/… 戰鬥臺詞
dialogue/ko/fonts/… 字型(我們的字型沒有這種文字時)
art/ko/scene-images/… 按語言換的圖(可選)
art/ko/plates/… 世界地圖名牌(可選)
ko 是語言代碼,資料夾名和 language.json 裡寫的必須一樣。只放用得到的東西:沒翻的臺詞檔案、沒換的圖都可以不放。
完整的範例是「韓文(第一關演示)」,原始檔在 config/recomp/mods/lang.ko(韓文已內建到遊戲裡,這個包不再提供下載)。真實系男主第一關的劇情、戰鬥臺詞、全部介面文字都是韓文,其餘顯示英文。
製作步驟
下面的工具都在原始碼倉庫裡,需要 Python 3。
1. 從一種現有語言匯出起點
python3 tools/mods/language_template.py --locale ko --name 한국어 --fallback en --id yourname.korean -o korean-source
它把退回語言(這裡是英文)的全部文字按上面的結構寫進 korean-source:terms.json 裡是全部介面文字和名稱,dialogue/ko/ 下是全部臺詞檔案,mod.json 和 language.json 也寫好了。--id 是包的唯一名字,寫成「作者.名字」,發布後不要再改。
2. 翻譯
把 terms.json 和臺詞檔案裡的退回語言換成你的語言,規則見下面幾節。不翻的條目可以留著,也可以刪掉——沒寫的地方遊戲會顯示退回語言。只翻一部分也是一個能用的包,範例包就只翻了第一關。
3. 放字型、寫名字
我們的字型沒有這種文字時,把字型檔案放進 dialogue/ko/fonts/,寫進 language.json 的 fonts。在 mod.json 裡填作者和許可證(見 MOD 包)。
4. 檢查、打包
python3 tools/mods/validate.py korean-source
python3 tools/mods/pack.py korean-source -o build/mods
validate.py 按遊戲的規則檢查檔案結構、語言代碼、字型和各個欄位;pack.py 打出 yourname.korean-0.1.0.srw64mod,打完再檢查一遍。控制碼和原文對不對、臺詞頁數對不對,要遊戲讀到 ROM 才能核對:進遊戲後看日誌裡有沒有 SRW64_MOD_LANGUAGE_PROBLEM,使用者目錄的 dialogue/dialogue-report.txt 裡列著每一條有問題的臺詞。
5. 安裝、選語言
像別的 MOD 一樣安裝(電腦上拖進遊戲視窗,安卓上放進 Documents/Marchwind64/mods 或在 MOD 頁面「從檔案安裝」),重啟遊戲,然後在設定的語言選單裡選它,或者按語言切換鍵(F7)。選好的語言會記住,下次啟動直接是它。
邊改邊看:把正在改的臺詞檔案放進使用者目錄的 dialogue/ko/,它會蓋在包上面;在遊戲裡按 F5 重新讀取,當前這句馬上按新文本顯示,改好了再抄回包裡。戰鬥臺詞用標題畫面的「戰鬥鑑賞」看最快,不用玩到那一關。
倉庫的 docs/guide/language-mods/ 資料夾裡有翻譯流程、規則清單和韓文演示包用的專名錶,可以整個交給 AI 助手,讓它照著翻。
language.json
{
"schema": "srw64.language.v1",
"locale": "ko",
"name": "한국어",
"fallback": "en",
"fonts": { "text": ["fonts/MyGothic.ttf"], "title": "fonts/MyBrush.ttf" }
}
| 欄位 | 說明 |
|---|---|
locale |
語言代碼:ko、fr、pt-BR、es-419 這樣的寫法。不能是 ja、zh-Hans、zh-Hant、en |
name |
語言選單裡顯示的名字,用這種語言自己寫,最多 24 個字 |
fallback |
可選,沒譯到的地方用哪種語言:ja、zh-Hans、zh-Hant、en,預設 en |
fonts.text |
可選,正文和介面用的字型,最多 4 個,排在退回語言的字型前面 |
fonts.title |
可選,章節標題卡用的字型 |
排版跟退回語言走:退回英文的語言,詞與詞之間留空格、在空格處換行;退回中文或日文的,按中日文的方式排。韓文、法文這類用空格分詞的語言選 en。
字型:只能放在 fonts/ 裡,.ttf 或 .otf,每個不超過 32 MB。西文字母我們的字型都有,法文、西班牙文這類不用自帶;韓文、泰文等我們字型裡沒有的字,要放字型檔案,否則顯示不出來。字型的許可證要允許隨包分發。
terms.json:介面文字與名稱
{
"schema": "srw64.language-terms.v1",
"ui": { "title_start": "시작" },
"entries": { "base:t00_00000": "평지<END>" }
}
ui:介面文字,鍵和遊戲自帶語言的一樣(模板裡全有)。{A}這類按鍵記號、{n}這類數字位要原樣保留,少了或多了的那條不用。entries:人物名、機體名、武器名、地形、能力名、系統提示等,記錄號 0–5643。<BR>(換行)、<STOP>(翻頁)、<END>(結尾)這些控制碼要和原文一樣。條目可以寫成字串,也可以寫成{"text": "…", "ja": "…"},ja只是給你對照的日文原文,遊戲不讀它(模板在有 ROM 文本匯出時會填上)。- 武器選單名(
entries裡開頭帶「格」「射」的那些)要保留這個開頭字,它在遊戲裡顯示成格鬥/射擊圖示。 - 沒寫的條目顯示退回語言的。
臺詞
劇情、戰鬥臺詞和文字頁(開場、結局)寫成純文本,格式和玩家自己改臺詞的檔案一樣,見倉庫裡的臺詞純文本格式。檔案放在 dialogue/ko/ 下面任意位置,一條記錄一段:
@17410 로렌스
“아가씨, 차가 준비되었습니다. 오늘은 러시안 티입니다.
---
어디로 가져다 드릴까요?”
頁數(---)、選項個數、{HeroName} 這類名字佔位符要和原文一致,不一致的那條不用,顯示退回語言的。玩家自己的臺詞資料夾裡也可以有 ko/,蓋在包的上面。
按語言換圖
閱讀這種語言時,下面的圖換成包裡的:
art/ko/scene-images/<檔名>:場景圖,例如標題畫面的 logoart/ko/scene-images/title-logo.png。檔名和 HD 包裡的一樣,需要裝著 HD 包。art/ko/plates/<編號>.png:世界地圖上艦船和地點的名牌,編號是我們名牌檔名去掉.plate.ja.png的部分(例如5590、5599.6),尺寸要和我們的一樣。沒給的名牌先用 HD 包裡這種語言的(HD 包從下一版起自帶韓文名牌),再沒有就用退回語言的。
別的包裡的這種語言
裝著語言包時,其他 MOD 也可以寫這種語言的文字:mod.json 的名字和說明、追加劇本的名字和章節標題、名字 MOD、曲名。沒寫的照樣按退回語言顯示。
注意
- 啟用、停用、更新語言包後都要重啟遊戲。正在用的語言包被停用或刪除,下次啟動回到系統語言。
- 韓文(
ko)只在空格和標點處換行,詞中間不斷開。 - 需要詞典斷行的語言(泰文、寮國文、高棉文、緬甸文)只能在空格處換行;從右往左書寫的語言(阿拉伯文、希伯來文)暫不支援。
- 有問題的語言包不會出現在語言選單裡,原因寫在遊戲日誌裡(
SRW64_MOD_LANGUAGE_PROBLEM)。發布前用tools/mods/validate.py檢查一遍。