【Godot】多言語テキストに対応する方法

この記事では、Godot Engineで標準実装されている多言語(各言語に対応する翻訳)テキストに対応する方法を説明します。

多言語対応の方法

翻訳テキストを用意する

Godot Engineが標準で対応している翻訳データは「CSV」形式のファイルとなります。

例えば以下のような「カンマ」区切りのテキストファイルです。

keys,en,ja
GREET,"Hello, friend",こんにちは
ASK,"How are you?",元気?
BYE,Goodbye,さようなら

1行目には最初に「keys」と記述し、言語コードを指定します。使用可能な言語コードは公式ドキュメントの「ロケール」に記載されています。ここでは一般的に使われそうな言語コードを列挙しておきます。

  • ja: 日本語
  • en: 英語
  • fr: フランス語
  • de: ドイツ語
  • es: スペイン語
  • ko: 韓国語
  • zh_CN: 中国語(簡体字)
  • zh_TW: 中国語(繁体字)

先ほどのファイルは “en” と “ja” のみ定義しているので対応言語は 英語と日本語のみとなります。

そして、それぞれの先頭の行にテキストのキーを指定し、各言語のテキストをカンマ区切りで記述していきます。なおテキストの中でカンマ記号 (,) や改行文字を使用するテキストの場合は、ダブルクォーテーション(“) で囲ます

翻訳データをプロジェクトに追加する

先ほどのテキストを “greeting.csv” というファイル名にしてプロジェクトに追加します。

すると以下のファイルが生成されます。

  • greeting.en.translation: “en” の翻訳インポート設定
  • greeting.ja.translation: “ja” の翻訳インポート設定

それぞれの翻訳データを使用するにはこれらのファイルをプロジェクト設定に追加する必要があります

翻訳データをプロジェクトに設定する

エディタから「プロジェクト > プロジェクト設定」を選びます。

プロジェクト設定から「ローカライズ」タブを選択し「翻訳」カテゴリとなっていることを確認します。

そうしたら「追加」ボタンをクリックして「greeting.en.translation」「greeting.ja.translation」を追加します。

翻訳テキストを使用する方法

tr() 関数を使うことで翻訳テキストを使用できます。

extends Node2D

func _ready() -> void:

	$LabelGreet.text = tr("GREET") # キー"GREET"の文字をラベルに設定する
	$LabelAsk.text = tr("ASK") # キー"ASK"の文字をラベルに設定する
	$LabelBye.text = tr("BYE") # キー"BYE"の文字をラベルに設定する

OSの言語設定が「日本語」になっている場合、このように日本語が表示されます。

言語を切り替える方法

表示言語を英語に変更したい場合は「TranslationServer」の set_locale() を使用します。

extends Node2D

func _ready() -> void:

	# 英語に切り替える場合	
	TranslationServer.set_locale("en")
	
	$LabelGreet.text = tr("GREET")
	$LabelAsk.text = tr("ASK")
	$LabelBye.text = tr("BYE")

プロジェクトファイル

今回作成したプロジェクトファイルを添付しておきます。

参考

今回の記事では以下のドキュメントを参考にしました