Blog

ローカライズ(4) スクリプトで言語を変更する

Unityでのローカライズ(4) スクリプトで言語を変更する

今回はLocalizationパッケージでC#スクリプトで言語を切り替える方法を説明していきたいと思います。
まだパッケージのインストールや初期設定を行っていない方は、まずは前の記事をご覧ください。
 → ローカライズ(1) Localizationの導入
 → ローカライズ(2) 文字列のローカライズ
 
→ ローカライズ(3) 画像のローカライズ

スクリプトで言語を切り替える

オプション画面などで言語を動的に切り替えたい場合があると思います。
C#スクリプトから言語を切り替える方法を説明します。
ChangeLocale.gif

以下にサンプルのスクリプトを載せておきます。
ボタンを押すと任意の "SystemLanguageの値" を用いて言語を変更する関数を呼び出します。
"LocalizationSettings.AvailableLocales.GetLocale" にその値を与えれば目標の "Locale" が得られます。
その後、 "LocalizationSettings.SelectedLocale" に変更したい "Locale" を指定してあげれば変更できます。

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;

public class Test_Localization : MonoBehaviour
{
    //ボタン
    public Button JP_Button;    //日本語に変更するボタン
    public Button En_Button;    //英語に変更するボタン

    //初期化
    void Awake()
    {
        //ボタンがクリックされたときにChangeLocaleを呼び出す。
        JP_Button.onClick.AddListener( () => { this.ChangeLocale(SystemLanguage.Japanese); });
        En_Button.onClick.AddListener( () => { this.ChangeLocale(SystemLanguage.English); });
    }

    // Localeを切り替える
    private void ChangeLocale(SystemLanguage language)
    {
        //Localeがあるかどうか調べる
        Locale locale = LocalizationSettings.AvailableLocales.GetLocale(language);
        if(locale == null)
        {
            Debug.LogWarning("Localeがありません。");
            return;
        }

        //現在のLocaleと同じだったら変更しない
        if(locale == LocalizationSettings.SelectedLocale)
        {
            return;
        }

        //Localeを設定する
        LocalizationSettings.SelectedLocale = locale;
    }
}

切り替えは非同期で行われます。切替完了まで待つ必要がある場合は async や await を使って非同期対応してください。

次回は 保存した設定の言語を選択する 方法を書いていく予定です。

Unity   2025/05/02   Ace
≪ ローカライズ(3) 画像のローカライズ  |  ローカライズ(5) 保存した設定の言語を選択する ≫

この記事へのコメント

コメントを送る

  ※ Eメールは公開されません
Loading...
 画像の文字を入力してください