はじめに
Unityでの多言語ローカライズは非常に実用的な機能であり、ゲームが複数の言語に対応することで、さまざまな言語を話すプレイヤーが快適にゲームを楽しむことができます。
ローカライズを実現する方法はいくつか存在し、それぞれにメリット・デメリットがあります。本記事では、そういった方法を紹介しつつ、Unity公式の多言語対応用パッケージ「Localization」について詳しく解説していきます。
このLocalizationパッケージを使えば、手軽に多言語対応が可能になります。さっそくその使い方を見ていきましょう!
1. 多言語ローカライズ用パッケージ「Localization」
1.1 概要
Localizationは、Unity公式が提供しているローカライズ用のパッケージで、Unityプロジェクトに簡単に多言語対応を追加できるようになります。
その仕組みは、各言語に対応するテキストやリソースを表形式で管理するもので、Localization Tablesを使ってキーと各言語のテキスト・アセットを紐づけることができます。
このパッケージを利用すれば、現在の言語や地域設定を簡単に取得・変更することができ、世界中のユーザーに向けたゲームやアプリを開発するうえで非常に重宝します。
1.2 実行イメージ

1.3 使用バージョン
- Localization パッケージ: 1.5.4 オフィシャルサイト
- Unity バージョン: 6.0
※バージョンによって仕様が異なる場合がありますので、ご使用のバージョンに合わせて調整してください。
2. パッケージのインストールと設定
2.1 Localizationのインストール
UnityメニューからWindow -> Package Manager を開き、「Unity Registry」を選択した状態で「Localization」と検索し、インストールします。
※「Packages: In Project」のままだと見つからない場合があります。


2.2 グローバル設定
Edit -> Project Settings -> Localization -> Create に進み、「Localization」アセットを作成します。保存先のフォルダを指定してください。

次に「Locale Generator」を使って ja(日本語)と zh(中国語) と en(英語) を追加します。初回追加時は保存フォルダを選択する必要があります。
「Locale Generator」では言語の追加・削除が行え、それぞれのロケール設定ファイルが自動生成されます。初期言語はここで設定可能です。

※ ちなみに、古いバージョンで、ボダン名はAdd Localeじゃなくて、Locale Generatorとなります。

3. 多言語テキストの設定
3.1 テーブルの作成
Window -> Asset Management -> Localization Tables を開き、「New Table Collection」をクリックします。
テーブルには、「String Table(文字列)」か「Asset Table(リソース)」を選択できます。今回は「String Table Collection」を選択してテキスト用に作成します。
保存先フォルダを指定すると、設定済みファイルが確認できます。プロジェクト構成に合わせて管理しやすい場所に保存しましょう。

3.2 テキストの入力
作成したテーブルに、Keyと各言語のテキストを入力していきます。
複数のモジュールで管理したい場合は、用途ごとにテーブルを分けて作成しても問題ありません。

3.3 静的テキストの設定
シーンにUI -> TextMeshProのラベルやボダンを追加し、その右側メニューで「Localize」をクリックすると、自動で「Localize String Event」コンポーネントが追加されます。

「String Reference」欄で、先ほど作成したテーブルのKeyを指定すればローカライズ完了です。

スクリプトで言語を切り替える方法
public class ChangeLanguage : MonoBehaviour
{
public void SwitchEnglish()
{
LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[0];
}
public void SwitchJapanese()
{
LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[1];
}
public void SwitchChinese()
{
LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[2];
}
}
ここで終わります。日本語だけで開発を行うことでいい。英語や中国語(ドイツ語と韓国語とミャンマー語も可能、でも長い時間がかかる可能性高い。)への翻訳は、研究室の外国人メンバーに任せていいです。
まとめ
Unity公式のLocalizationパッケージは、Unityプロジェクトにおける多言語対応において非常に使いやすく、導入・設定も簡単です。
特にテキスト量がそれほど多くないプロジェクトにおいては、最適な選択肢と言えるでしょう。大規模なプロジェクトではExcelと連携することで管理性も向上します。
機能も豊富で拡張性もあり、学んでおいて損はない優れたローカライズツールです。