本日は Unity の技術調査枠です。
Unity Localization を使ってプロジェクトをローカライズする方法を記事にします。
今回はリストの表示をローカライズでフォーマットにインデックスを含めて指定する方法です。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
フォーマットにリストのインデックスを含める
Localization の変換規則にリストのインデックスを含める場合は以下のフォーマットで指定します。
value でリスト型を指定していると template 内で index を使ってインデックスの指定が行えます。
{value(参照値の指定):template(フォーマットの指定)|spacer(区切り文字)}
今回は以下のような変換規則を指定して[Smart]にチェックを入れました。
{0:{} is {1.index}|, }
値は以下の通りスクリプトからリスト型の値を代入します。
・LocalVariableListIndex.cs
using UnityEngine; using UnityEngine.Localization.Components; public class LocalVariableListIndex : MonoBehaviour { private LocalizeStringEvent _localizeStringEvent; void Start() { // String Reference の参照を取得する _localizeStringEvent = GetComponent<LocalizeStringEvent>(); // LocalVariablesにリスト型の値を代入する // 0は1つ目のリストが参照され、1は2つ目のリストが参照される _localizeStringEvent.StringReference.Arguments = new object[] { new[] { "one", "two", "three" }, new[] { "first", "second", "third" } }; } }
適当な Text コンポーネントに Localize String Event でキーの参照を設定し、値を代入するサンプルスクリプトを合わせて追加します。
シーンを再生して動作を確認します。
以下の通り、リスト型を指定のフォーマットに従って出力できました。