【Unity】【Localization】スクリプトから言語切り替え

Unity

はじめに

Localizationのパッケージを使用している場合、ゲームビューから言語切り替えができますが、ビルド後やゲーム内設定などのプログラムからも言語切り替えがしたい時もあるかと思います。
本記事では、スクリプトから言語切り替え方法の紹介します。

検証環境

Unity
2022.3.12f1

Localization
1.4.5

言語の切り替え

言語を切り替えるためにはLocaleを指定する必要があります。
Locale は LocalizationSettings.AvailableLocales.Locales に格納されています。

以下のようなスクリプトで言語切り替えができます。
言語切り替え後は初期化処理が走るため、待ちの処理を入れています。

using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Localization.Settings;

public sealed class Example : MonoBehaviour
{
    private async Task ChangeLocale(string key)
    {
        // 指定したLocaleを取得
        var locale = LocalizationSettings.AvailableLocales.Locales.Find((x) => x.Identifier.Code == key);

        // Localeの設定
        LocalizationSettings.SelectedLocale = locale;

        // 初期化待ち
        await LocalizationSettings.InitializationOperation.Task;
    }
}

LocalizationSettings.AvailableLocales.Locales には、Locale Generator で作成した Locale のリストを持ちます。
Identifier.Code は Locale Generator の Code になります。

今回のスクリプトではこの Code を検索して Locale を取得するようにしています。
引数の key に、英語の場合は “en” 、日本語の場合は ja” を指定します。

この Locale Generator の画面は、
Project Settings > Localization > Locale Generator から確認できます。

Locale の変更後に初期化処理が走りますが、非同期なので注意が必要です。

参考

コメント