MRが楽しい

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

Unity Localizationを使ってプロジェクトをローカライズする その15(リストの表示をローカライズでフォーマットにインデックスを含めて指定する)

本日は 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 でキーの参照を設定し、値を代入するサンプルスクリプトを合わせて追加します。

シーンを再生して動作を確認します。
以下の通り、リスト型を指定のフォーマットに従って出力できました。