【Godot】国際化:テキスト翻訳の基本

GodotEngine
今回のポイント
  • 翻訳シートはUTF8形式のCSVファイルで出力(Excelから出力する際は指定に注意)
  • 言語コードは 公式Doc ロケールコードで、確認可能
  • 翻訳文の反映方法は、大きく以下2種類
    • UIのTextプロパティに直接Key値を指定(静的な要素向け)
    • tr("キー値")関数で設定
  • 言語設定はデフォルトでOSの言語が適用。変更する際は、TranslationServer.set_locale("言語コード")を使用

Step1. 翻訳シートの作成

まずは各言語と、表示テキストを対応図けるための翻訳シートを作成していきます。
翻訳シートは、以下形式で構成され、それぞれのキー値と言語コードに対応する形でテキストを定義していきます。

  • keys: 翻訳対象のキー(後述の tr(“START_GAME”) などで参照)
  • ja,en : 言語コードに対応する列

※各言語ごとの言語コードは 公式Doc ロケールコードで、確認できます。

作成したシートは、文字化け防止のためUTF-8 エンコーディングを設定し、CSVで出力します。

Step2. Godotへのインポート

作成したCSVファイルを、Godotエディタのファイルシステムへドラッグアンドドロップし、インポートします。

Godotは、先ほど作成した形式のCSVをインポートすることで、自動的に指定した言語コードごとの翻訳ファイルを生成します。

CSVを翻訳シートとして扱いたくない場合は、インポート設定から、「ファイルを保持(そのままエクスポート)」を選択します。

生成された翻訳ファイルは、
プロジェクト設定 > ローカライズ > 翻訳 > 追加…
から、設定を行う必要があります。

以下のように、各翻訳ファイルが追加されていればOKです。

Step3. 翻訳テキストの反映

翻訳テキストのの反映方法には、大きく以下2種類があります。

① 直接Key値を設定(静的な要素向け)

ButtonノードのTextなど、テキストを扱うプロパティに、シートの「キー値」を入力・実行すると、現在の言語設定(デフォルトではOSと同言語)に対応したテキストが反映されることを確認できます。

➁ tr("キー値")関数による設定 (動的な設定)

GDScriptから、動的にキー値によるテキストの反映を行いたい場合は、 Object.tr( ) 関数を使用します。

以下の例では、ApplyというButton押下時のシグナルでキー値の反映を行っています。

func _on_apply_button_pressed():
    text = tr("LANGUAGE")

Step4. 言語設定の変更

言語設定は、デフォルトでOSの言語( 日本語 )が適用されています。
これを変更する際は、TranslationServer.set_locale("言語コード") 関数を使用します。

以下の例では、各ボタンを押した際に以下のような言語切替処理を行っています。

func _on_pressed():
    TranslationServer.set_locale("ja")

Step5. フォーマット文字列の利用

翻訳シートでは、以下のような構成で、フォーマット文字列を使用することも可能です。

翻訳シート構成例:

コードの設定例:

text = tr("TEST_FORMAT_TEXT").format({"item" : tr("TEST_ITEM")})

上記で実行すると、以下のように、「TEST_FORMAT_TEXT」、「TEST_ITEM」それぞれを反映した形で、翻訳テキストを適用できます。

参考ページ

以下は、Godotにおける国際化に関する参考ページです。
今回扱ったテキストに限らず、画像やゲーム名称などの国際化についても対応することが可能です。

おすすめの本①
おすすめの本➁(Godot)
GodotEngineゲームエンジン
ひらまめ(hiramame)をフォローする

コメント

タイトルとURLをコピーしました