匯入翻譯
遊戲與在地化
遊戲社群並非只有單一語言或文化,而是集合了來自世界各地、各種語言與文化的玩家,Godot 社群也是如此!如果你希望讓玩家能用自己的語言體驗你的遊戲,那你就需要加入多語系翻譯,而 Godot 內建就有支援國際化文字的功能。
一般桌面或手機應用程式的國際化文字通常都存在資源檔(或 GNU 類應用用 .po 檔)。但遊戲通常會用到比應用程式多得多的文字,因此需要更有效率的多語系文字處理方式。
要做多語系遊戲/應用程式,通常有兩種做法,都是 key:value(鍵值對)系統。第一種是直接用某語言(通常是英文)的原文當 key,第二種則用獨立的識別字串當 key。第一種如果是「先出英文、再慢慢加語言」的流程會很方便,但如果同時要維護多語言就會變成惡夢。
遊戲開發通常是採第二種,每段文字都給一個唯一的 ID。這樣一來,即使翻譯進行中要改原文,也不會影響其他語言。這個唯一 ID 可以用數字、字串、或任何唯一的組合。
備註
如果你需要更進階的格式,Godot 也支援 gettext .po 格式的翻譯檔。詳細說明請見 使用 gettext 進行在地化。
翻譯格式
為了讓多語系翻譯更方便,Godot 支援直接讀取 CSV 試算表檔案。大多數辦公軟體都可以匯出 CSV,唯一要注意的是格式必須配合,且 必須 用 UTF-8 編碼(不要加 BOM,參考 <https://zh.wikipedia.org/zh-tw/%E4%BD%8D%E5%85%83%E7%B5%84%E9%A0%86%E5%BA%8F%E8%A8%98%E8%99%9F>)。
CSV 檔案必須使用如下格式:
keys |
<語言1> |
<語言2> |
<語言N> |
|---|---|---|---|
KEY1 |
字串 |
字串 |
字串 |
KEY2 |
字串 |
字串 |
字串 |
KEYN |
字串 |
字串 |
字串 |
「lang」標籤必須代表一種語言,該語言必須是引擎支援的其中一個 有效地區設定,或它們必須以底線符號 (_) 開頭,這表示相關欄位被視為註解且不會被匯入。「KEY」標籤必須是唯一的,並全域性地代表一個字串 (它們通常為大寫,以區別其他字串)。這些金鑰將會在執行時由匹配的翻譯字串取代。請注意大小寫很重要,「KEY1」和「Key1」將會是不同的金鑰。左上角的儲存格將被忽略,且可以留空或包含任何內容。以下是一個範例:
keys |
en |
es |
ja |
|---|---|---|---|
GREET |
Hello, friend! |
Hola, amigo! |
こんにちは |
ASK |
How are you? |
Cómo está? |
元気ですか |
BYE |
Goodbye |
Adiós |
さようなら |
QUOTE |
"Hello" said the man. |
"Hola" dijo el hombre. |
「こんにちは」男は言いました |
下面是同一份 CSV 轉成純文字檔的長相,這通常是你用試算表編輯好之後存檔的結果。如果你直接編輯純文字 CSV,要特別注意:只要內容有逗號、換行或雙引號,整段一定要加雙引號,否則會被當成多個欄或多列,雙引號本身要用兩個連寫("Hello" 變成 ""Hello"")。也可以在 Godot 匯入時改用逗號以外的分隔符。
keys,en,es,ja
GREET,"Hello, friend!","Hola, amigo!",こんにちは
ASK,How are you?,Cómo está?,元気ですか
BYE,Goodbye,Adiós,さようなら
QUOTE,"""Hello"" said the man.","""Hola"" dijo el hombre.",「こんにちは」男は言いました
CSV 匯入器
Godot 會自動把 CSV 檔當作翻譯檔來處理,然後在同一目錄下產生一個或多個翻譯資源檔(壓縮格式)。
匯入時也會自動把這份翻譯檔加進專案設定(project.godot/專案選單)裡的載入清單。Godot 也支援在執行時動態載入或卸載翻譯。
選取 .csv 檔後,打開 匯入 面板,可以調整翻譯檔的壓縮選項與指定分隔符號(預設為逗號,可改成其他符號)。
只要改過這些設定,記得一定要點「重新匯入」。