ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity:Localization - 多言語に対応させる -

初めに

 多言語対応するためのパッケージである Localization についてまとめます。

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 にします。そして、変数の値を入力します。

youtu.be

最後に

 今回、書いていない部分を多くあります。例えば、Asset Table では画像をローカライズする場合などに使えたり、Smart Strings についても Formatter を使っていなかったり、スクリプトから操作していなかったり...。Unity で何かを作って売り出す場合、ローカライズの必要性を考えることになります。ローカライズをする場合の手段の一つとして、持っておきたいですね。