【Unity】「遅すぎるアドバイス」リリース直前のローカライズは地獄!UI作成時から始めるLocalizationパッケージ実践ガイド
はじめに:遅すぎるアドバイス
先に言っておきます。遅すぎるアドバイスをします。
リリース前に慌ててローカライズの準備を始めても、もう手遅れです。
もしあなたのプロジェクトに将来的にリリースする可能性が少しでもあるなら、UIを作り始めたその瞬間からローカライズの準備を始めましょう。
一度全ての置き換え対象をリスト化できれば、Google SpreadSheetで同期して共有して共同編集することも可能です。
(一部スマート変換機能もありますが…過度な期待は禁物です)
この記事では、Unity公式のLocalizationパッケージを使った、実践的で「後悔しない」ためのローカライズフローを紹介します。
1. Unity Localizationの基本概念
Unityにはローカライズ専用の公式パッケージ Localization が存在します。
これを導入すれば、シーン内の文字が魔法のように自動で多言語化され…
もちろん、そんなわけはありません。
現実はもっと泥臭く、対象となる文字やテクスチャ一つひとつに対してコンポーネントを追加していく作業が発生します。
仕組みのイメージ:
文字表示コンポーネント(TextMeshProなど)に対し、「表示時」または「言語切替時」に、選択された言語の文字列へ動的に置き換えるコンポーネントをアタッチしていくイメージです。
2. Localizationパッケージの導入と初期設定
まずは最低限必要な設定を行います。
2.1. インストールと設定ファイル作成
-
インストール: Package Manager の Unity Registry から
Localizationをインストールします。 -
設定ファイル作成: Project Settings に追加された
Localizationメニューから「Create」を押します。-
Tip: 設定ファイルは
Assets/Localizationのようなフォルダを作成し、一括管理することをおすすめします。
-
Tip: 設定ファイルは
2.2. 言語(Locale)の設定
- 「Add Locale」を押して、必要な言語を選択します(例:English, Japanese)。
- 選択後、「Add Locales」を押すと各言語の設定ファイルが作成されます。
- ここでスマート変換用のフォーマットも編集可能です。
-
基本言語の選択:
Specific Locale Selectorからデフォルトとなる基本言語を選択します。- 重要: ここは極力**「英語」**をおすすめします。多くの場合、英語が翻訳のKey(基準)を兼ねることになるからです。
2.3. 翻訳テーブル(Table)の作成
Localizationのメイン画面となるテーブルを作成します。
- メニューバーから
Window->Asset Management->Localization Tablesを開きます。 - 「New Table Collection」からテーブルの種類を選んで作成します。名前は何でも構いません。
- String Table Collection: 文字列が対象
- Asset Table Collection: テクスチャやオーディオなどが対象
ここまでで、使うための最低限の準備は完了です。
3. 現場のLocalize作業フロー
ここからが本番、実際のローカライズ作業です。(String Tableを例にします)
基本的な作業手順
- ローカライズ対象の TextMeshPro (TMP) をシーンまたはプレハブから探します。
- TMPコンポーネントのコンテキストメニュー(三点リーダー︙)の一番下に追加されている
Localizeをクリックします。 -
Localize String Eventコンポーネントが追加されます。 -
String Referenceに、該当する String Table の Key を選択(または新規作成)します。
なぜ「UI作成時から」やるべきなのか
String Table は基本的に、「Keyとなる静的な文字列」を「選択言語の文字列」に置き換えるだけです。
つまり、作業順序としては**「UIの文字配置 → Localizeコンポーネント追加 → その文字列をテーブルに登録」**となります。
これが配置された文字やテクスチャの数だけ、作業として発生するのです。
これをリリース直前にまとめてやろうとすると、面倒この上ない地獄を見ます。 だからこそ、初めからやっておくことを強くおすすめします。
効率化のヒント(上級者向け)
作業量が膨大になるため、以下のような自動化スクリプトを組んでおくと幸せになれます。
- TMPコンポーネントに
Localize String Eventを自動追加するように改造する。 - プロジェクト内の全TMPを検索し、
Localize String Eventを追加した上で、設定されているテキストを一気に String Table の Key として登録するエディタ拡張スクリプトを作成する。
4. 言語切り替えとハマりポイント
エディタでの確認
Window -> Asset Management -> Localization Scene Controls から、エディタ再生時の表示言語(Active Locale)を切り替えられます。
【重要】よくあるハマりポイント
ここで「言語を日本語に切り替えたのに表示されない!」という問題が間違いなく発生します。
原因:TextMeshProに日本語フォントアセット(Atlas)が入っていない。
TMPで日本語を表示するための準備は別途必須ですので、必ず対応しておいてください。
参考
・https://learning.unity3d.jp/7890/ (プロ必見!最新ローカライズ機能徹底解説 by unity安原さん)
・https://www.slideshare.net/slideshow/google-sheetsunity-localization-package/250824951
(Google Sheets経由でUnity Localization Packageのデータを更新する & ADXの多言語ボイス音声切り替え機能連携 bv 一條さん)