Welcome to my site

多言語化

Andord版のユーザーの半分以上が日本以外の方なので、せめてメッセージだけでも多言語化できないかと考えた備忘録になります。
Godotは「CSV」形式のファイルを翻訳データとして扱うので、まず、翻訳データを作成します。
内容は、以下のような感じです。1行目の最初に「keys」と記述し、言語コードを指定します

keys,en,it,id,es,th,de,fr,pt,ja #1行目

START,"Princess has been...,... #2行目

キー名,英語文,イタリア語文,インドネシア語文,スペイン語文,タイ語文,ドイツ語文,フランス語文,ポルトガル語文,日本語文 #3行目

という感じで翻訳データを作って行きました。グーグル翻訳があるからこそ実現できる作業です。
注意点は翻訳文の途中に「,」カンマがある場合は翻訳文を "(ダブルコーテーション)でくくらねばならないことです。これをしないとカンマの位置で次の翻訳文だと判断されてしまいます。

翻訳文ができたら、次はGodotの設定です。
多言語用のcsvファイルをアセットに入れると以下のようになります。

作成されたtranslationファイルをプロジェクトで使えるようにします。
エディターからプロジェクトウィンドウを開いて
1.ローカライズのタグをクリックします。
2.追加をクリックします。

translationファイルを全部追加します。

スクリプトで選んだ言語を表示できるようにします。

var _df = DataIo._font_set(_lcode) #_lcodeは en it id es th de fr pt ja のどれか。

# 言語ごとにフォントサイズを指定する
    if _lcode == "ja":
        _df.size = 64
    elif _lcode == "th":
        _df.size = 64
    elif _lcode == "zh":
        _df.size = 60
    elif _lcode == "ko":
        _df.size = 64
    else:
        _df.size = 56
_caption.set("custom_fonts/font", _df)

TranslationServer.set_locale(_lcode) #この命令で翻訳文が使用できるようになります。

_caption.text = tr("TITLE") #  キー"TITLE"で指定した翻訳文を_captionのテキストに表示させる

## フォントの設定 DataIo.gd 言語ごとにフォントを設定する
func _font_set(_id):
    var df = DynamicFont.new() # ダイナミックフォントオブジェクト生成
    if _id == "ja":
        var font_data:DynamicFontData = load("res://assets/fonts/KosugiMaru-Regular.ttf")
        df.font_data = font_data
    elif _id == "th":
        var font_data:DynamicFontData = load("res://assets/fonts/THSarabunNew Bold.ttf")
        df.font_data = font_data
    elif _id == "zh":
        var font_data:DynamicFontData = load("res://assets/fonts/MFYaYuan_Noncommercial-Regular.otf")
        df.font_data = font_data
    elif _id == "ko":
        var font_data:DynamicFontData = load("res://assets/fonts/Dovemayo_gothic.ttf")
        df.font_data = font_data
    else:
        var font_data:DynamicFontData = load("res://assets/fonts/Butler_Medium.otf")
        df.font_data = font_data

    return df