I2 Localizationの組み込み時 メモ


基本Googlespread sheet連携使ってAuto transration使えると楽

Termは基準となる言語の文言のままの方が楽、例 「続けますか」

検索するとバグで表示潰れる

どこかに古いLanguageSourceをコンポーネントにつけたままにするとそっちが呼ばれる、勝手に更新されない(地味にハマった)

Localize.cs
string hi = LocalizationManager.GetTranslation( "こんにちは" );

            Localize.MainTranslation = Localize.MainTranslation.Replace("{hoge}", hi);

上のようなスクリプトを張って

言語切り替えするとtermに「こんにちは」の設定値を入れていれば

英語: 「{hoge} suzuking」は「Hello suzuking」に変わります

日本語:「 {hoge} 鈴木」は「こんにちは 鈴木」に変わります

Termは全角?。、「」とかは使えない

置換で正規表現使って以下のように置き換えていったら楽かも

検索
ダブルコーテーション+全角+ダブルコーテーション
()がキャプチャ範囲 $1
"([^\x01-\x7E]+)"
("*[^\x01-\x7E]*")
置換内容
LocalizationManager.GetTranslation("$1")
LocalizationManager.GetTranslation($1)

動的テキストに対応する方法


Canvas_MatchOperation.cs
public string GetL()
        {
             return _selectedNode.Get_LTeamName();
        }
        public string GetR()
        {
            return _selectedNode.Get_RTeamName();
        }
        public bool MatchL;

        private void Select_L()
        {
            MatchL = true;
             var dialog = DartsDialogSC.PopDialog(DartsDialogSC.DialogType.Type_2);
            dialog.SetText_Title(LocalizationManager.GetTranslation("確認"));
            //dialog.SetText_TpicUp("「" + _selectedNode.Get_LTeamName() + "」の勝利でよろしいですか?");
          //GetTranslationの第四引数applyParameters = true, 第五引数GameObject localParametersRoot = nullにRegisterGlobalParameters書き換えたの設定するとGetParameterValueメソッドで設定した値が反映される

            dialog.SetText_TpicUp(LocalizationManager.GetTranslation("の勝利でよろしいですか",true,0,true,true,I2Para,null));

            dialog.SetText_TpicUnder("<color=#ff0000><size=18>"+LocalizationManager.GetTranslation("この操作は戻せません")+"</size></color>");
            dialog.OnCloseEndEvent_Button01 += Operation_L;

        }
        private void Select_R()
        {

            MatchL = false;

           var dialog = DartsDialogSC.PopDialog(DartsDialogSC.DialogType.Type_2);
            dialog.SetText_Title(LocalizationManager.GetTranslation("確認"));
            dialog.SetText_TpicUp(LocalizationManager.GetTranslation("の勝利でよろしいですか", true, 0, true, true, I2Para, null));
            //dialog.SetText_TpicUp("「" + _selectedNode.Get_RTeamName() + "」の勝利でよろしいですか?");
            dialog.SetText_TpicUnder("<color=#ff0000><size=18>" + LocalizationManager.GetTranslation("この操作は戻せません") + "</size></color>");
            dialog.OnCloseEndEvent_Button01 += Operation_R;
        }
LocalizationGlobalParameters.cs
public class LocalizationGlobalParameters : RegisterGlobalParameters
{
    [SerializeField]
    private GameObject match;
    public override string GetParameterValue(string ParamName)
    {
        if (ParamName == "PLAYER")
            {
            if (match.GetComponent<Canvas_MatchOperation>().MatchL)
            {
                return match.GetComponent<Canvas_MatchOperation>().GetL();
            }else
            {![uploading-0]()

                return match.GetComponent<Canvas_MatchOperation>().GetR();
            }

        }
        if (ParamName == "NUM PLAYERS")
            return 5.ToString();

        return null;
    }
}

要約

public string GetR()
{
return "太郎";
}

選択された値が GlobalParametersに行くようにする



{[PLAYER]}="太郎";

{[PLAYER]}に選択された値が入る

```
//GetTranslationの第四引数applyParameters = true, 第五引数GameObject localParametersRoot = nullにRegisterGlobalParameters書き換えたの設定するとGetParameterValueメソッドで設定した値が反映される

dialog.SetText_TpicUp(LocalizationManager.GetTranslation("の勝利でよろしいですか",true,0,true,true,I2Para,null));
```
{[PLAYER]}の勝利でよろしいですか?→太郎の勝利でよろしいですか?

Are you sure you want {[PLAYER]} to win?→Are you sure you want 太郎 to win?

になってローカライズされる