Unity:Localization - 多言語に対応させる -
初めに
多言語対応するためのパッケージである Localization についてまとめます。
Index
Localization とは
Localization は Unity が提供している多言語に対応するためのパッケージです。
docs.unity3d.com
ダウンロード・インストール
Window → Package Manager からダウンロード、インストールします。Localization は Packages:Unity Registry 内にあるので、探して、ダウンロード、インストールしましょう。
見つからない場合は、Add package from git URL から com.unity.localization と入力することでダウンロード、インストールできます。
Localization Settings を作成する
Localization Settings ファイルの作成
まず、Localization Settings を作成します。
Edit → Project Settings から Localization ウィンドウを開きます。Create をクリックすることで Localization Settings ファイルを作れます。
Local Generator をクリックし、使用言語選択をします。Select All で全選択、Deselect All で全解除です。選択後は Generate Locales で Locale ファイルを生成できます。
デフォルトの Locale 設定
Locale Selectors ではデフォルトの Locale を設定します。Locale は先ほど使用言語を選択し、生成したファイルになります。
※この Locale ファイルは Locale Selector を上から順番に実行していき、見つかったものを利用します。
名前 | 機能 |
---|---|
Command Line Locale Selector | Command Line Argument で指定した Locale を選択する。 (例)-language=ja |
System Locale Selector | CultureInfo.CurrentUICultureやApplication.systemLanguageを使ってアプリケーション端末で使われている言語に基づいてLocaleを選択する。 |
Specific Locale Selector | 直接 Locale を指定する |
とりあえずは、Specific Locale Selector にデフォルトの言語設定をしておけばよいでしょう。
Project Locale Identifier では、プロジェクトで通常開発するときに使われている Locale を設定します。
言語テーブルを作成
ローカライズするために、言語テーブルを作成します。
Window → Asset Management → Localization Tables を選択します。
作成できる言語テーブルは文字列用(String Table)とオブジェクト用(Asset Table)があります。
文字列のローカライズ
今回は文字列用のテーブルを作成していきます。
Type を String Table Collection にし、Name を入力して Create をクリックします。
Add New Entry をクリックすると、新しいテーブルエントリーが作られます。
Smart は文字列を動的にローカライズするときにチェックをいれます。下記で解説します。
文字列を静的にローカライズ
静的な場合(Text が場合によって変化しない)についてローカライズしてみます。
テーブルエントリーに入力しましょう。静的な場合は Smart にチェックはいれません。
Text を選択し、Text の右の点々から Localize をクリックします。
Localize String Event が追加されます。String Reference から先ほど作ったエントリーを選択します。
(実行結果)
www.youtube.com
文字列を動的にローカライズ
Text の中に変数が混ざったり、変数を文字列に変換したり動的にローカライズしてみます。
まずは、取得した変数をそのまま出力できるようにしてみます。
Smart にチェックを入れ、string を書きます。
動的にする場合は、Smart Strings と呼ばれる機能を使います。Smart Strings は Source と呼ばれる値を Formatter と呼ばれる規則によって変換できます。
(Smart Strings に関する公式ドキュメント)
docs.unity3d.com
変数を中括弧{ } で囲んで記入します。上の画像では、num という名前の変数を定義しています。
静的な場合と同様に、Text を選択し、Text の右の点々から Localize をクリックします。
Localize String Event が追加されます。String Reference から先ほど作ったエントリーを選択します。
Local Variables から変数について書きます。今回は Integer(整数)を指定し、Variable Name を先ほど定義した変数の名前である num にします。そして、変数の値を入力します。