匯入翻譯

遊戲與在地化

遊戲社群並非只有單一語言或文化,而是集合了來自世界各地、各種語言與文化的玩家,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 檔後,打開 匯入 面板,可以調整翻譯檔的壓縮選項與指定分隔符號(預設為逗號,可改成其他符號)。

../../_images/import_csv.webp

只要改過這些設定,記得一定要點「重新匯入」。