Localization 0.8.1-previewを追加して利用してみます。
(左上のバージョン切り替えで最新のものを使うのが良いかと思われます。
インストールは、Packages/manifest.jsonに
"dependencies": {
"com.unity.localization": "0.8.1-preview"
},
}
dependenciesの中に追加!
manifest.jsonを保存すると自動的にunityがパッケージを追加してくれます。
Project SettingsにLocalizationが追加されています。
createするとファイル名を指定して保存されたようです。
Locale GeneratorでJapanese, English を選択して Generate Locales
Assets/Localesというフォルダを指定して保存してみました。
画像や音声などのAssetsを振り分けられるようですね。とりあえずテキスト(String Localization : Create a String Table Collection. を指定。
Table Collection Name [NEW NAME] のところに 文字を。BaseStrings とか入力して、Create String Table Collectionをクリック!
するとEdit Table Collectionタブが開かれます。
Add New Entryで良いのでしょうか
Key , English , Japaneseと選択していきます!
Smart をチェックすると {var} のように変数を入れられるようです!
アプリから読み出してみましょう!
GameObjectのTextにLocalizeを追加するパターン
Textの上で右クリックするとLocalizeメニューが下にあります。
Lacalize String Eventが追加されて
String Referenceで MENU_LEVELを選択しました!
実行してみるとデフォルトenのTextに SELECT LEVELが表示されました!
Smartの指定は、Format ArgumentsのElement 0 に対象変数のあるスクリプト
ここでは、StageManagerがGameObject , Stage Manager がスクリプト名になっています。
Update Stringの方は、対象のTextオブジェクトでText.textを選択したら更新されました^^
スクリプトから設定したい気もするけど全部これで設定しておいても問題はなさそうですね。
smartを選択して変数を入れたTextを更新するには!?
{score}などとして設定した部分で score変数を更新後にrefreshStringを呼ぶことで更新されました。
// Localize String Eventを利用します。
public LocalizeStringEvent resultTitleStringEvent;
// 変数を更新後にrefreshstringを呼びます。
resultTitleStringEvent.StringReference.RefreshString();
スクリプト内で、設定された翻訳テキストを呼び出すには!?
notificationなどに利用するテキストも使えるのか!?
public LocalizedString notificationTitle = new LocalizedString();
public string notification_title = "";
private void OnEnable()
{
Debug.Log("LocalizeManager onEnable");
notificationTitle.SetReference("TABLE NAME", "NOTIFICATION_TITLE");
notificationTitle.StringChanged += (string s) =>
{
notification_title = s;
};
}
smartを使う場合は
int smartTest = 999; // を代入する、 title {smartTest} で登録
// 登録時に Argumentsを設定
notificationTitle.Arguments = new[] { new Dictionary<string, string> { { "smartTest", smartTest.ToString() } } };
無事 変数も更新されています^^、値が変わる場合はrefreshStringしてから取得します^^
Build Preview and configuration
Android実機で試したらローカライズされない!
Unity :No Locale could be selected:
No Locales were available. Did you build the Addressables?
というエラーが出ていました-_-; ?
9をやる必要がありました。
Window > Asset Management > Addressable Assets > Groups
Build > New Build > Default Build Script
でした。
Assets / AddressableAssetsDataが生成されました。
これで Android 実機で動きました 🙂
iOS 対応
iOSにスイッチした後に Build > New Build > Default Build Script を実行します。
Assets/AddressableAssetsData/iOS.meta
が作成されました。これをやらないとiOSもローカライズできません。
コメント