MRが楽しい

MRやVRについて学習したことを書き残す

Unity Localizationを使ってプロジェクトをローカライズする その16(現在アプリで選択しているロケールを参照する)

本日は Unity の技術調査枠です。
Unity Localization を使ってプロジェクトをローカライズする方法を記事にします。
今回は現在アプリで選択しているロケールを参照する方法です。

前回記事

以下の前回記事の続きです。
bluebirdofoz.hatenablog.com

スクリプトから現在選択しているロケールを参照する

スクリプトから現在選択しているロケールを参照するには LocalizationSettings.SelectedLocale を参照します。

// ロケール名の取得
string name = UnityEngine.Localization.Settings.LocalizationSettings.SelectedLocale.LocaleName;
// ロケールコードの取得
string code = UnityEngine.Localization.Settings.LocalizationSettings.SelectedLocale.Identifier.Code;

docs.unity3d.com

取得できるロケール名とロケールコードは ProjectSettings で確認できます。
メニューから[Edit -> Project Settings]を開き、[Localization]タブを開いて[Available Locales]を確認します。

サンプルコード

以下のサンプルコードを作成しました。
現在選択中のロケールの名称とコードを取得し、現在のロケールを判定します。比較情報としてOSの選択言語についても取得しています。
・LocaleIdentifierChecker.cs

using UnityEngine;

public class LocaleIdentifierChecker : MonoBehaviour
{
    [ContextMenu("CheckLocaleIdentifier")]
    public void CheckLocaleIdentifier()
    {
        // 現在アプリで選択しているロケールを取得する
        Debug.Log("LocaleName :" +
                  $" {UnityEngine.Localization.Settings.LocalizationSettings.SelectedLocale.LocaleName}");
        Debug.Log($"Identifier.Code :" +
                  $" {UnityEngine.Localization.Settings.LocalizationSettings.SelectedLocale.Identifier.Code}");
        
        // コード(ja/en)比較でロケールを判定できる
        Debug.Log("IsJapanese: " + 
                  $" {UnityEngine.Localization.Settings.LocalizationSettings.SelectedLocale.Identifier.Code == "ja"}");
        
        // OSで選択されている言語を取得する
        Debug.Log($"Application.systemLanguage: {Application.systemLanguage}");
    }
}

アプリを再生して動作を確認します。
CheckLocaleIdentifier メソッドを呼び出すと、選択中の日本語ロケールの名称とコードを確認できました。

英語ロケールに切り替えてメソッドを再呼び出しすると、英語ロケールの名称とコードを確認できました。
あくまでアプリ内のロケール切り替えなのでOSの選択言語は切り替わっていないことも確認できています。