多言語化必要なわけではないですがなんとなく入れておこうかと
以前のメモを参考に新しいバージョンで使ってみます。
インストール Unity Localization 1.3.2
これをインストール
[Create] からLocalization設定、en / jaを選択しました。
テーブル作成
Unity > Window > Asset Management > Localization Tables
New Tableのところにテーブル名を HappyBaseTableとしてCreateしました
Add New Entry から Key と en jaを登録します
UI Textに変数を追加する!
TextのGameObjectの上で右クリックして「Localize」を押すと
Localize String Event / String Reference が追加されました。
String Referenceを開いて [ Add Table Entry ]からテーブルにキーを追加すると、String Referenceに追加されました。(script側で文字を入れていましたが、この場合は直接en / jaが入ってくれます。
スクリプトから変数を利用する!
gameobjectに設定しても良いのですが、複数同じものを利用する場合などは、スクリプトから変更するほうが楽なので
using Unity.Localization;
LocalizedString title = new LocalizedString(); title.SetReference("HappyBaseTable", "APP_DISP_TITLE"); GameObject.Find("TextTitle").GetComponent<TMP_Text>().text = title.GetLocalizedString();
TextTitleにtitleを入れてみました。
問題なさそうです◎
スペイン語、ポルトガル語、フランス語、ドイツ語、韓国語を入れてみる
入れるのは簡単なのですが、フォントも切り替えないといけないようで
シーンが呼ばれたときにフォントを変えようかと思います。
ローカル通知も多言語でOKでした^^
フォントの切り替え
対象のgameobject( text ( tmpro_text ) ) のフォント設定を変更するだけです。
途中で切り替えは想定していないので、startでチェックして切り替えています。
言語を取得。 English (en) みたいな感じだったので enを取得
string localeString = LocalizationSettings.SelectedLocale.Identifier.Code.ToLower().Replace("*(", "").Replace(")", "");
対応するフォントリスト
Dictionary<string, string> fonts = new Dictionary<string, string>() { { "en", "NotoSansJP-Regular SDF" }, { "ja", "NotoSansJP-Regular SDF" }, { "fr", "NotoSans_Condensed-Regular SDF" }, { "de", "NotoSans_Condensed-Regular SDF" }, { "pt", "NotoSans_Condensed-Regular SDF" }, { "es", "NotoSans_Condensed-Regular SDF" }, { "ko", "NotoSansKR-Regular SDF" } };
こんな感じにしてみました。
ちなみに日本語は、ひらがな、カタカナのみ、韓国語は、使用している文字だけをfont creator で変換しました。元は、Google フォントを利用しています。あと中国語、タイ語、アラビア語、も入れたいところですがまた次回。
TMP_FontAsset xFontSDF = Resources.Load<TMP_FontAsset>("Fonts/" + fontR);
Resourcesの下に置いたフォントを呼び出し.
GameObject.Find(goTxts[i]).GetComponent<TMP_Text>().font = xFontSDF;
TMP_Textのfontに設定。
これだけでOKです!
文字自体は、直接textに挿入するか
Localize string eventをtextオブジェクトにつけて辞書のキーを登録するだけです。
コメント