概要
LocalizationというpackageがUnity公式で提供されています(preview)
まだ情報が少なかったため、とりあえず軽くプロジェクトに入れてみる方法をメモしておきます
導入などは公式がわかりやすいです
環境
Unity2020.2.1f1
Localization 0.9.0-preview
軽く使ってみる
uGUIのTextをローカライズするだけだったらInspectorからLocalizeStringEventをアタッチして、表示する文字を選択するだけです
今回は動的に変更したい時にどうするかをメインに記載します
※StringだけでSpriteなどには触れません
var tableName = "TableName";// 作成したテーブル名を設定
var key = "FOO_KEY";// 取得したい文字のキー
var stringTable = await new LocalizedStringTable {TableReference = tableName}.GetTable().Task;
var stringResult = GetEntry(key).GetLocalizedString();
裏でアセットをロードしたりするためかawait必須になっています
StringTableはSerializeFieldでInspectorから指定できるため、awaitを回避できますが、毎回指定するのは面倒です
細かいところは無視して使う例
まずはコードだけ
public static class Localize
{
private static StringTable StringTable;
public static async UniTaskVoid LoadStringTableAsync()
{
StringTable = await new LocalizedStringTable {TableReference = "StringTable"}.GetTable().Task;
}
public static string GetLocalizedString(string key)
{
return StringTable.GetEntry(key).GetLocalizedString();
}
}
使い方は下記です
とりあえず入れてみようという気になって知見が増えると嬉しいです
// アプリ起動時や言語選択時にロードしておく
// キャンセルなどはうまいことやる
await Localize.LoadStringTableAsync();
// 下記でよしなに取得できる
Localize.GetLocalizedString("BAR_KEY");