MRが楽しい

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

Unity Localizationを使ってプロジェクトをローカライズする その11(データごとの変換規則に基づいて文字列をローカライズする)

本日は 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();
    }
}

この状態でシーンを再生して確認します。
以下の通り、変数の型に応じた変換規則の文字列が表示されました。