LoginSignup
0
0

More than 3 years have passed since last update.

I2 Localizationの組み込み時 メモ

Last updated at Posted at 2019-08-28

基本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は全角?。、「」とかは使えない

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

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

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

i2changevalue.png
changeterm.png

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?

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0