本日は Unity の技術調査枠です。
Unity Localization を使ってプロジェクトをローカライズする方法を記事にします。
今回はデータごとの変換規則に基づいて文字列をローカライズする方法です。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
データごとの変換規則に基づいて文字列をローカライズする
UnityLocalization の Smart String で利用できる変換規則はデータの型を元に暗黙的に切り替えることができます。
docs.unity3d.com
docs.unity3d.com
本記事では bool 型と DateTime 型で変換規則を試してみます。
サンプルシーン
テーブルに bool 型の true/false の条件で変換を行う BoolText 行と DateTime 型のロケールごとのデフォルト変換を行う DayText 行を追加しました。
BoolText, Answer: {0:Yes|No}, 回答: {0:はい|いいえ} DayText, {0:d}, {0:d}
以下のスクリプトでそれぞれローカライズ設定を行った Localize String Event コンポーネントに値を設定するようにします。
・LocalVariableBool.cs
using UnityEngine; using UnityEngine.Localization.Components; public class LocalVariableBool : MonoBehaviour { void Start() { // String Reference の参照を取得する var localizeStringEvent = GetComponent<LocalizeStringEvent>(); // LocalVariablesにbool型の値を設定する localizeStringEvent.StringReference.Arguments = new object[] { true }; localizeStringEvent.RefreshString(); } }
・LocalVariableTime.cs
using UnityEngine; using UnityEngine.Localization.Components; using System; public class LocalVariableTime : MonoBehaviour { void Start() { // String Reference の参照を取得する var localizeStringEvent = GetComponent<LocalizeStringEvent>(); // LocalVariablesにDateTime型の値を設定する localizeStringEvent.StringReference.Arguments = new object[] { DateTime.Now }; localizeStringEvent.RefreshString(); } }
この状態でシーンを再生して確認します。
以下の通り、変数の型に応じた変換規則の文字列が表示されました。