匯入翻譯

遊戲與國際化

The world is full of different languages and cultures, so nowadays games are released in several languages. To handle this, internationalized text must be supported in any modern game engine.

在傳統的桌面與行動端應用程式中,國際化文字通常存放於資源檔 (GNU 的東西則使用 .po 檔)。但,遊戲則會比應用程式用上更多的文字內容,因此,遊戲必須要使用更有效率的方法來處理大量文字內容。

要產生多語言遊戲與應用程式有兩種主要的方法。這兩種都是基於索引鍵/值配對系統的。第一種方式是使用一種語言來當作索引鍵 (通常為英文),而第二種則是使用特定的識別項。第一種方法對於先以英文版發行後才發行其他語言的遊戲來說會比較容易開發,但若用在同時開發多語言的遊戲則完全是個惡夢。

通常來說,遊戲都是用第二種方法,並為各個字串使用一個唯一的 ID。這樣一來即使正在將遊戲內容翻譯為另一個語言,也能同時修改文字。唯一 ID 可以是數字、字串或是有數字的字串 (但總之就是唯一字串就是了)。

備註

如果需要更強大的檔案格式,Godot 還支援讀取寫成 gettext .po 格式的翻譯。詳情請參考 Localization using gettext

翻譯格式

為了有效率地解決翻譯問題,Godot 中有個特別的匯入工具,可以讀取 CSV 檔案。大多數的試算表軟體都支援匯出為 CSV 格式,只需要注意匯出設定即可。翻譯檔 CSV 必須 以無 BOM 的 UTF-8 編碼保存。

警告

Microsoft Excel 會預設以 ANSI 來保存 CSV 檔案,而不是 UTF-8。在 Excel 中目前還沒有內建方法來保存為 UTF-8,但 這裡 (英文) 有一個臨時的解決方法。

我們建議用 LibreOffice 或 Google 表格來代替。

CSV 檔案必須使用如下格式:

keys

<語言1>

<語言2>

<語言N>

KEY1

字串

字串

字串

KEY2

字串

字串

字串

KEYN

字串

字串

字串

上面的「<語言>」標籤必須使用 Godot 支援的 有效地區碼 來代表語言。而「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.

「こんにちは」男は言いました

下方為同一個例子,但以逗號分隔純文字檔來顯示,即為以試算表編輯後的結果。編輯純文字檔版本時,請記得要以雙引號來包住有逗號、換行或雙引號的訊息,避免逗號被判斷成分隔字元、避免換行字元變成新的欄位、也避免有雙引號的訊息被另一個雙引號給截斷。或者,也可以在匯入選項中改用逗號以外的其他符號來作為分隔字元。

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 檔案當作翻譯來處理。匯入工具會將 CSV 匯入並與 CSV 檔一起建立壓縮翻譯資源。

匯入時也會在遊戲執行時能載入的翻譯列表中新增一個翻譯,該列表設定於 project.godot 中 (或專案設定)。Godot 也可以執行時動態載入或移除翻譯。

選擇 .csv 檔,並在 匯入 Dock 中設定匯入選項。可以選擇是否壓縮翻譯資源,並選擇解析 CSV 檔用的分隔字元。

../../../_images/import_csv.png

更改選項後請記得點擊 重新匯入