ローカライゼーション
ゲームの言語を宣言し、テキストを翻訳し、翻訳者とファイルをやり取りする
Localization(ローカライゼーション)パネルが扱うのは、ゲーム自体の言語であり、Studio の表示言語ではありません。
そのうち 1 つの言語がsource(ソース)です。これはストーリーを書いている言語で、他のすべての言語はこれを基準に翻訳されます。
言語
言語コード(en、ja、zh-CN)と、プレイヤーに表示する名前を指定して言語を追加します。リスト内のどの言語もソースに指定できます。

言語を削除すると、その言語はゲームから除外されます。翻訳データはディスク上に残り、その言語を再度追加すると復元されます。
各言語にはfallback language(フォールバック言語)があります。翻訳のない項目はまずこの言語にフォールバックし、続いてソースにフォールバックします。そのため、翻訳が一部しかない言語でも表示されます。Studio は、フォールバックが自分自身に戻ってくる設定を拒否します。
ゲーム中の言語切り替え
ゲームは Set Language ノードで言語を切り替えます。通常はプレイヤーが開く設定画面から切り替えます。タイトル画面で切り替えた場合、新しい言語はすぐに反映されます。プレイヤーがゲーム中に言語を切り替えたときの動作は、Project → Game → Language(プロジェクト → ゲーム → 言語)の Changing language during a game(ゲーム中の言語切り替え)で設定します。
| 選択肢 | プレイヤーに起こること |
|---|---|
| Restart and continue where they were(再起動して元の位置に戻す) | 既定値です。ゲームが再起動し、プレイヤーがいた行に戻ります。すべてが新しい言語になります。 |
| Restart without keeping the playthrough(再起動する。進行中のプレイは残さない) | ゲームは起動時と同じように再起動し、タイトル画面から始まります。進行中のプレイは残りませんが、プレイヤーのセーブは残ります。 |
| Apply the next time the game is started(次回の起動時に反映する) | 現在のセッションでは、インターフェースのテキストも含めて何も変わりません。次にゲームを起動したときに新しい言語で始まります。 |
翻訳
翻訳テーブルには、プロジェクトのソーステキストとその翻訳が並べて表示され、言語ごとの進捗——翻訳済みの項目数と、ソーステキストの変更前に翻訳されてレビュー待ちになっている項目数——が報告されます。
インターフェースのテキスト
ページ上の文字は、1 か所につき 1 つの出どころから来ます。出どころは Properties で文字の上にある切り替えで選びます。Direct(直接入力)はウィジェットに書いた文字、Translation key(翻訳キー)はプロジェクトの翻訳キーの文字、Blueprint Value(ブループリント値)はゲームの実行中に計算される文字です。Text の内容と Button のラベルは 3 つすべてを、Text Input のプレースホルダは最初の 2 つを選べます。文字は 1 か所にだけ保存され、キャンバス、ゲーム、翻訳テーブル、書き出し、プロジェクトの検査、検索はすべて同じ出どころを読みます。
これらを翻訳するには、翻訳テーブルの Source(原文)で Interface text(画面のテキスト)を選びます。行はページとコンポーネントごと、次にプラグインごとにまとめられ、最後に Translation keys(翻訳キー)が並びます。
- 直接入力した文字は、プロジェクトに 2 つ目の言語があれば翻訳の対象になります。各ウィジェット自身の文字が 1 行ずつ並びます。数字と記号だけの文字と、サンプルテキストは除きます。ウィジェットごとのスイッチはありません。
- 翻訳キーは、それを指定するすべてのウィジェットが共有する文字で、翻訳は 1 回で済みます。ウィジェットは、プロジェクトに原文の言語があるかどうかに関係なくキーの文字を表示し、プロジェクトにないキーはキー名を表示します。
- キーを取り除くと、そのキーを使っていたウィジェットは直接入力になり、キーの文字と翻訳を引き継ぎます。ほかの場所から貼り付けたり取り込んだりしたウィジェットが、このプロジェクトにないキーを使っている場合も同じです。
- サンプルテキストは、バインド(ブループリント値、リストの行の項目、コンポーネントの Text パラメータ、ページのテキストのパラメータ)を使うウィジェット自身の文字です。エディタでのみ表示され、ビルドしたゲームには含まれず、翻訳の対象にもなりません。
- 既定値は、ゲーム中にブループリントが
Set Text、Clear Text、Set Labelで文字を書き込むウィジェットについて、Properties がそのウィジェット自身の文字を呼ぶ名前です。ほかの文字と同じくビルドに含まれて翻訳され、最初の書き込みまではプレイヤーの言語で表示されます。文字の下の Written in the game by(ゲーム中に書き込むブループリント)にそのブループリントが並びます。 - ブループリントが書き込んだ文字は、ゲームの実行中、すべての言語で書き込んだとおりに表示され、翻訳キーやブループリント値より優先されます。ページを開き直すまで続きます。
- コピーは翻訳を引き継ぎます。 直接入力の文字を持つウィジェットをコピーまたは複製すると、その文字の翻訳も一緒に移ります。別のプロジェクトに貼り付けた場合も、そのプロジェクトにある言語の分だけ移ります。
- 新しいウィジェットの文字は、プロジェクトの原文の言語になります。
- 検索は原文の言語でインターフェースのテキストを探し、結果を選ぶとそのページやコンポーネントが開いてウィジェットが選択されます。
- プラグインがプレイヤーに見せる文字、たとえば Menu Bar のラベルや Gallery の名前も翻訳テーブルに並びます。プラグイン名ごとにまとめられ、翻訳されるまでゲームでは書いたとおりに表示されます。
プロジェクトの検査 Missing glyphs(グリフ不足)は、ウィジェットをその状態ごとのフォントで調べ、ある状態のフォントだけに文字がない場合はその状態の名前を示します。
コンポーネントの Text パラメータは、置いたものごとに翻訳されます。置いたものに直接入力した文字が、それぞれ 1 行になります。
ページのテキストのパラメータは、文字を書いた場所で翻訳されます。初期値は、表示するウィジェットの数にかかわらず、ページの下に 1 行になります。Page ウィジェットがそれに渡す文字は、そのウィジェットの下に 1 行になります。ページを開くノードが渡す文字は渡されたとおりに表示されます。プレイヤーの言語で表示するには、ノードに Translation Key Text から文字を渡します。
以前のバージョンのプロジェクト
Studio 1.3.0 が以前のバージョンで作られたプロジェクトを初めて開くと、プロジェクトのインターフェースのテキストをこの仕組みに更新します。これによって文字の出どころが変わったウィジェットがあれば、Studio はそれを一度だけ知らせ、そのウィジェットを並べます。それぞれの Locate(移動)ボタンでそのウィジェットが選択されます。以後、以前のバージョンの Studio ではこのプロジェクトを開けません。1.3.0 へのアップグレードを参照してください。
交換フォーマット
翻訳は外部の翻訳者向けにエクスポートし、再びインポートできます。
| フォーマット | 対応ツール |
|---|---|
| CSV | Excel、Google スプレッドシート |
| XLIFF 1.2 | Trados、memoQ、OmegaT |
| gettext PO | Poedit、Weblate、Crowdin |
| JSON | スクリプトや独自パイプライン |
書き出したファイルでは、翻訳キーの行に、そのキーを使うページとコンポーネントがコンテキストとして書かれます。
インポートは、適用した内容を報告します。変更された項目、既に同一だった項目、プロジェクトに対応するキーがない項目、スキップした空の項目です。