はじめに
今回初めて自分がリリースしたゲームを多言語対応してみようと思ったので、
ローカライズ作業をやってみました。
やや苦戦した部分もあったので記事にして残しておこうと思います。
ちなみに対応したゲームはこちら。
脱出ゲーム ~夏休みの教室からの脱出~
Keisuke Uchida無料posted withアプリーチ
環境情報
・OS:Windows10
・Unity Editor: 2022.3.30f1
Localizationパッケージのインポート
まずはUnity上でローカライズ関連の処理を使えるようにするために
パッケージをインストールします。
1. Package Manager を開く
まずツールバーの「Window」→「Package Manager」を開きます。
2. Localizationをインストール
Package Managerの左上の「Packages:」から「Unity Registry」を選択し、
「Localization」を選択、「Install」ボタンを押せばインストール完了です。
Localization設定を作成
ローカライズ関連のファイルの保存場所の設定や、
どの言語に対応するか等を設定します。
1. Localization 設定画面を開く
ツールバーから「Edit」→「Project Settings」→「Localization」を開きます。
2. ローカリゼーション設定ファイルの保存先を選択する
「Create」ボタンを押すと、フォルダ選択ダイアログが出ます。
ローカリゼーション設定を保存するフォルダを選択します。
※例の場合は「Localization」フォルダを新たに作成し、ここに保存しています。
保存すると、指定した保存先にファイルが作成され、
「Project Settings」→「Localization」の表示が下記のような状態になります。
3. ロケールを作成する
「Local Generator」をクリックすると以下のような画面が開きます。
ここでは多言語化対応を行う言語を選択します。
今回の例では英語と日本語のみ対応させたいため、
「English」と「Japanese」を選択し、
「Generate Locales」をクリックします。
するとまたファイルの保存先を聞かれるので、任意のフォルダを選択します。
※例では先ほど作成した「Localization」フォルダを選択しています。
保存すると選択したフォルダに英語と日本語の設定ファイルが作成されます。
また「Localization」設定内の「Available Locales」にも設定が追加されます。
4. デフォルトのロケールを設定
デフォルトのロケールは
多言語化対応を行っていない国の言語が設定されていた場合に
どの言語で表示を行うかを設定するために使用します。
今回は公用語である英語を設定するため、
赤で囲んである部分をEnglishに設定します。
各言語テーブルを作成
今回は画像を言語によって切り替える方法を記載します。
※文字列を言語によって切り替える方法もほとんど同じです。
1. ローカリゼーションテーブルを開く
ツールバーの「Window」→「Asset Management」→「Localization Tables」を開きます。
2. テーブルを作成する
左上の「New Table Collection」を選択し、
「Type」を「Asset Table Collection」(文字列の場合はString Table)にして、名前を付けます。
※今回はUIの画像を言語によって切り替えたいので名前を「UiConstSpriteTable」にしています。
Createを押して生成ディレクトリを選択し、テーブルを作ります。
以下のようにファイルが作成されればテーブル作成は完了です。
3. テーブルに画像を設定する
言語ごとに使用する画像をテーブルに設定します。
先ほどの「Localization Tables」の左上の「Edit Table Collection」を選択すると
以下のような画面になります。
「Add New Entry」をクリックし、任意のキーを設定し、
画像ファイルをドラッグアンドドロップで
各言語に設定していきます。
※今回はタイトル画面のタイトル画像を変更したいので、キー名称は「Title」としています。
4. オブジェクトにLocalizeコンポーネントを設定する
言語によって画像を切り替えたいオブジェクトに
Localizeコンポーネントを設定します。
インスペクターの
Raw Imageコンポーネント(文字列の場合はTextMeshProコンポーネント)の
右にある3つの縦点をクリックし、
Localizeを選択します。
Localize Texture Event コンポーネント(文字列の場合はLocalize String Event)が追加されるので
その中の「Localized Asset Reference」(文字列の場合はString Reference)に
先ほどテーブルで作成したキー「Title」を選択します。
動作確認
実行しつつ、言語を切り替えて動作確認を行います。
現在表示している言語は
ツールバーの「Window」→「Asset Management」→「Localization Scene Control」の中の
「Active Locale」を変更することで変更可能です。
実際に実行するとこんな感じです。タイトル部分に注目してください。
まずは英語。
続いて「Active Locale」を日本語に変更した場合
ちゃんと変更されていることが確認できればOKです♪
まとめ
Localizationは海外にゲームを公開する場合は必須の機能です。
各言語に対応することによってたくさんの人に遊んでもらうことができます。
直訳だと変な風に翻訳されてしまうことがあるので
私はそのあたりにも強いDeepLを使用して翻訳を行っています。
次の記事ではDeepLとスプレッドシートを用いて
一括でまとめて自動で翻訳する方法について記載します。
ご興味があれば是非読んでみて下さい(*’▽’)
※記事は準備中です。