- Unity6 (6000.0.25f1)
- Localization 1.5.3
UnityのLocalizationを使用してテキストの多言語対応をしていきます。
このページでは「日本語(Japanese)」と「英語(English)」の2種類に対応させていきます。
多言語対応テーブル作成
まずは各言語に対応する文字列のテーブルを作成します。

テーブル作成用ウィンドウが開きます。

さらに詳細ウィンドウが表示され、テーブルの種類や名前を設定します。
このページでは「SampleTable」という名前で作成します。

String Table Collection | 文字列 |
Asset Table Collection | アセット |
テーブルの詳細を設定したら保存先を選択します。

これでテーブルの作成は完了です。
各言語のローカライズ設定・編集
テーブルの作成が完了したらテーブルを編集していきます。
編集したいテーブルが表示されていない場合は「Selected Collection」で任意のテーブルを選択します。

「Key」、「English(en)」、「Japanese(ja)」という3種類の入力エリアが表示されるのでそれぞれ入力していきます。

上記の設定だと、日本語対応時は「サンプル」、英語対応時は「Sample」と表示されるようになります。
キー名は自分が後から見た時に分かる名前であれば何でもOKです。
これをローカライズしたい文字列の分だけ作成していきます。
ローカライズ用のテーブル編集はこれで完了です。
ロケールデータの適用
ロケールデータが作成できたら実際に適用していきます。
このページではUI用のTextMeshProにアタッチしていきます。

「Localize String Event」コンポーネントが自動的に追加されます。
「String Reference」で作成したキーを選択して、このTextMeshProに設定します。


これでTextMeshProへのアタッチが完了です。
この状態でUnityを実行して文字列が言語ごとに切り替わるか確認してみます。


想定通り、日本語では「サンプル」、英語では「Sample」と表示されました。
スクリプトでロケール切替
各言語ごとにテキストの切替ができる状態になったので、最後にスクリプトから切り替えられるようにしていきます。
今回はToggleを2つ用意して、選択した言語に切り替わるようにします。
以下のスクリプトをToggleにアタッチします。
using UnityEngine;
using UnityEngine.Localization.Settings;
using UnityEngine.Localization;
using UnityEngine.UI;
public class ToggleLocale : MonoBehaviour
{
private Toggle toggle;
private string localeKey;
void Start()
{
toggle = GetComponent<Toggle>();
localeKey = toggle.name;
toggle.onValueChanged.AddListener(Change);
}
public async void Change(bool isOn)
{
if (isOn)
{
LocalizationSettings.SelectedLocale = Locale.CreateLocale(localeKey);
//初期化のため待機
await LocalizationSettings.InitializationOperation.Task;
}
}
}
Unityを実行します。


Toggleを切り替えることで、テキストも各言語に対応して表示されました。
以上でテキストのローカライズ対応は完了です。

Toggleについてはこちらをどうぞ!