I2 Localizationの組み込み時　メモ

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

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

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

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

```C#:Localize.cs
string hi = LocalizationManager.GetTranslation( "こんにちは" );
			
			Localize.MainTranslation = Localize.MainTranslation.Replace("{hoge}", hi);
```
上のようなスクリプトを張って

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

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

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

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

置換で正規表現使って以下のように置き換えていったら楽かも
![localization.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310991/5120d6dd-f17f-6e4b-4a1f-57c303ca5a16.png)

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


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


![i2changevalue.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310991/4fca8be4-5166-cc62-ff67-f7392864f06c.png)
![changeterm.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/310991/f78a48d7-834f-b25a-cbf0-f000750a516e.png)



```c#: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;
        }
```
```c#: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?


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