ローカライズ(多言語)対応する


宴2.5.2からローカライズ機能が追加されました。

ローカライズの設定

ローカライズに関する設定は、Projectウィンドウ内の、「プロジェクト名」/ScriptableObject/LanguageManager から詳細設定できます。

名前 内容
Language 起動時の言語設定。空欄の場合は、実行環境の言語を自動的に判別してその言語を使う
DefaultLanguage 対応する言語のデータがない場合に使用する言語
LanguageData エラーメッセージなどのデータ。ローカライズシートで設定・上書きできるので、ここはいじらなくても良い
Igonore Localize UI Text UIのテキスト変更を無視する
Igonore Localize Voice ボイスのローカライズを無視する

シナリオのテキストをローカライズする

各シナリオシートに、対応する言語名の列を追加し、対応言語のテキストを記述するだけです。(言語名の一覧は、Unityのリファレンスを参照。)

サンプル

ボイスをローカライズする

LanguageManageの「Igonore Localize Voice」のチェックをオフにして、


Soundリソースフォルダ以下に、
「Voice+対応言語名」のフォルダを作って、全ボイスファイルを作成してください。

通常、ボイスまでローカライズするのは困難な場合も多いため、「Igonore Localize Voice」でボイスのローカライズをするかどうかを切り替えられるようにしてあります。

ローカライズシート

詳細は、ローカライズシートも参照してください。

キャラクターの名前

キャラクターの名前のテキストは、ローカライズしたいNameTextをキーにして、言語ごとのテキストを追加します。

UIやエラーメッセージ等をローカライズする

LanguageManageの「Igonore Localize UI Text」のチェックをオフにして、

[ローカライズシート]にUIのテキストのキーと、対応言語のテキストを記述します。

ローカライズしたいUIのテキストには、UguiLocalizeコンポーネントを追加し、対応するキーを設定してください。

初期状態の全てのUIには、すでにUguiLocalizeコンポーネントが設定済みです。
 初期状態では、殆どのUIには既にUguiLocalizeコンポーネントが設定済みですが、メッセージウィンドウ下部のボタンなど、一部のUIはローカライズ非対応です。

・UIのテキストを変えている場合は、ローカライズシートにキーとテキストを追加し、UguiLocalizeコンポーネントにキーを設定。
という作業をしてください。
・新しく自作したUIはUguiLocalizeコンポーネントを追加して、対応するキーを設定してください。

プログラムからローカライズしたテキストを呼び出す

プログラムから、ローカライズしたテキストを呼び出すには以下のように、ローカライズシートのキーを指定して行います。

public class SampleLocalize : MonoBehaviour
{
    public Text text;
    void Localize()
    {
        string key = "Yes";
        text.text = LanguageManager.Instance.LocalizeText(key);
    }
}

フォントのサイズや、UIの位置や大きさをローカライズする 

言語によって必要となる文字数に大きな差があるため、「指定の領域に文字が収まるようにする」のが難しい場合もあります。
その対策として、フォントのサイズや、UI位置や大きさを変えることもできます。

フォントの種類やサイズを変える

テキストオブジェクトに、UguiLocalizeTextSettingコンポーネントを追加してください。

名前 内容
SettingList 設定データリスト。対応言語ぶん追加する
Language 言語名
Font この言語で使用するフォント。未設定の場合は、フォントは変えない
FontSize フォントのサイズ
LineSpacing 行間の設定

UIの位置や大きさを変える

名前 内容
SettingList 設定データリスト。対応言語ぶん追加する
Language 言語名
Anchored Position 位置
Size 大きさ

注意点

また、画像に対するローカライズは予定していませんが、要望に応じて追加しようと思っています。
その他、ご意見要望がある場合は、Q&Aにお願いします。