本日は 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;
取得できるロケール名とロケールコードは 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の選択言語は切り替わっていないことも確認できています。