【Unreal Engine】ローカライズ入門:Localization Dashboardでゲームを多言語対応する

作成: 2026-07-20

UE5のLocalization Dashboardで日本語ゲームを英語対応する手順。StringとTextの違い(Textだけが翻訳される)、Gather→Translate→Compileの流れ、実行中の言語切り替え、日本語フォントの落とし穴まで、公開直前にやることを図解。

ゲームが一通り完成しました。日本語で遊べます。海外にも届けたいので英語対応したい。ところが、UI上の文字列を1つずつ手で英訳して差し替えるのかと思うと、気が遠くなります。

UE5には Localization Dashboard という専用の仕組みがあって、ゲーム中の文字列を自動で集め、言語ごとの翻訳を持たせ、実行中に切り替えられます。ただし、この仕組みには入口で1つ大きな前提があります。翻訳されるのは Text 型だけで、String 型は無視される ということです。ここを知らずに作り進めると、公開直前に「半分だけ日本語のまま」という状態になって作り直しになります。この記事では、ローカライズの全体像と、設定画面で日本語と英語を切り替えるところまでを解説します。

日本語のUIが英語のUIに切り替わる様子と、ソフトブルーのクレイ人形

この記事でわかること

  • Text と String の違い:翻訳されるのはTextだけ
  • Localization Dashboard の3ステップ:Gather → Translate → Compile
  • 実行中に言語を切り替える Set Current Culture
  • 日本語が豆腐(□)になるフォントの落とし穴
  • 実践: 設定画面のコンボボックスで日本語↔英語を切り替える
  • 数値や変数を混ぜた文でも翻訳を壊さない Format Text

Sponsored

TextとStringの違い

UE5の文字列には、大きく2つの型があります。ローカライズではこの区別が決定的に重要です。

  • Text(FText):表示用の文字列。翻訳される のはこちら。UMGのText Blockの中身や、Data TableのFText列などはText型で持つ。
  • String(FString):処理用の文字列。ファイル名やデバッグログなど、翻訳が要らないもの向き。収集も翻訳もされない

つまり、プレイヤーの目に触れる文字は、すべてText型で持つのが原則です。String型で組み立てた文字列は、どれだけ翻訳作業をしても日本語のまま画面に残ります。

Text型は翻訳エンジンを通って各言語になるが、String型は素通りして日本語のまま表示されるという流れを2本の経路で描いた図

特に事故が多いのが、文字列の連結 です。「所持金:」+ 数値を String で Append してしまうと、その一文まるごとが翻訳対象から外れます。数値や変数を混ぜたいときは、後述の Format Text を使ってText型のまま組み立てます。

Dashboardの3ステップ

Localization Dashboard は、メニューの Tools > Localization Dashboard から開きます。やることは3ステップです。

  1. Gather(収集):Gather設定で指定した範囲から、収集対象のText型文字列を拾い集める。Widgetを保存(Save All)してから「Gather Text」ボタンを押す。
  2. Translate(翻訳):集まった文字列に、言語ごとの訳を入れる。追加した言語(カルチャー)の「Edit Translations for this culture」(鉛筆アイコン)から翻訳エディタを開き、日本語の原文に対して英訳を打ち込む。
  3. Compile(コンパイル):翻訳を、ゲームが読める形(.locres ファイル)に変換する。「Compile Text」ボタンを押す。
Gatherで文字列を集め、Translateで各言語の訳を入れ、Compileでlocresに変換する3ステップを左から右へ並べたフロー図

最初に言語(カルチャー)を設定します。日本語で原稿を書いているなら、Native Culture(原文の言語)を ja に設定 し、翻訳先として en を追加します。Native Cultureを決めておかないと、翻訳エディタが日本語を原文として正しく扱えません。Gatherする範囲は「Gather Text」設定で指定できますが、最初はプロジェクトのContent全体が対象に入っていれば大丈夫です。

大事なのは、文字列を足したら、保存してから Gather し直す ことです。新しいセリフやボタンを追加したのに保存やGatherを忘れると、その文字列は翻訳リストに現れず、翻訳できません。

Sponsored

実行中に言語を切り替える

コンパイルまで済めば、ゲーム中に言語を切り替えられます。使うのは Set Current Culture ノードです。カルチャー名の文字列("en""ja")を渡すだけで、その場で表示言語が変わります。

Set Current Cultureに"en"を渡すと、開始・設定・終了のText BlockがStart・Options・Quitへ一括で切り替わる仕組み図

Text Blockに直接入力したテキストは、言語を切り替えると自動で対応する訳に差し替わります。UIを作り直す必要はありません。ここが、最初からText型で作っておく最大のご褒美です。

切り替えを保存したい場合は、Set Current Culture の Save to Config を true にするだけで、選んだ言語がユーザー設定に保存され、次回起動時も維持されます。もっと自分で管理したいなら、自作のセーブデータ に言語名を記録する方法もあります。

フォントの落とし穴

言語を切り替えて、英語はきれいに出るのに、日本語に戻したら文字が □(豆腐) になった。これはローカライズ作業で必ず一度は出会う症状です。

原因はフォントです。UE5の既定フォント(Roboto)には、日本語のグリフ(字形)が含まれていません。英語のアルファベットしか持たないので、日本語を出そうとすると、そのままでは「文字の絵がありません」という意味の豆腐になりがちです。

Robotoフォントは英語グリフだけを持ち日本語が豆腐になる、Noto Sans JPは日本語グリフを持つので正しく表示される、という対比図

直し方は、日本語を含むフォント(Noto Sans JP など)をインポートして、UIのフォントに設定することです。中国語や韓国語にも対応するなら、それぞれのグリフを含むフォントが追加で要ります。フォントファイルは容量が大きいので、対応言語が決まってから入れるのが無駄がありません。

Sponsored

実践:設定画面で日本語↔英語を切り替える

公開前に必ずやる作業を、最後まで通します。

RPGのオプション画面、パズルゲームのタイトルメニュー、ノベルゲームの環境設定。ジャンルを問わず、設定画面には言語切り替えの項目が並びます。ここでは、設定画面のコンボボックスで言語を選ぶと、その場でUI全体の言語が変わる ものを作ります。

動かすとこうなります。コンボボックスで「English」を選んだ瞬間に、タイトルもボタンも英語に変わる。そして、もし1箇所だけString型で作ってしまった文字列があれば、そこだけ日本語のまま取り残されて、直すべき場所が炙り出されます。

コンボボックスでEnglishを選ぶとメニュー全体が英語になるが、String型で作った1箇所だけ日本語のまま残るビフォーアフターの図

準備

  1. 設定画面のWidgetに Combo Box (String) を1つ置き、Detailsの Default Options に「日本語」と「English」を追加する。
  2. UI上の表示文字は、翻訳する分をすべて Text型(Text BlockのTextなど)で持たせておく。
  3. Localization Dashboard で Native Cultureを ja、翻訳先に en を追加し、Widgetを 保存 → Gather → 英訳を入力 → Compile まで済ませる。

グラフを組む

コンボボックスの選択が変わったときに、Set Current Culture を呼びます。

Combo BoxのOn Selection Changedから、選ばれ�た項目をSwitchで判定し、日本語ならja、Englishならenの文字列でSet Current Cultureを呼ぶ完成ノードグラフ図

つなぎ方は次の流れです。

  1. Combo Box の On Selection Changed イベントを作る(イベントは Selected Item の文字列を返す)
  2. 返ってきた Selected Item を Switch on String の Selection につなぐ(English日本語 のケースピンはノード上で手動追加する)
  3. 「English」なら Set Current Culture (Culture = "en") を、「日本語」なら Set Current Culture (Culture = "ja") を呼ぶ

読み上げ用の疑似コードにすると、こうなります。

On Selection Changed (Selected Item)
  Switch on String (Selected Item):
      case "English": SetCurrentCulture("en")
      case "日本語":  SetCurrentCulture("ja")

確かめる

答え合わせをしやすいように、開始ボタンのText Blockに「ゲームをはじめる」を置き、翻訳エディタで対応する英訳に「Start Game」を入力しておきます。Playして設定画面を開き、コンボボックスで「English」を選びます。うまくいっていれば、選んだ瞬間に「ゲームをはじめる」が 「Start Game」 に変わり、他のタイトルやボタンも英語になります。もう一度「日本語」を選べば、日本語に戻ります。

うまくいかないときの切り分けです。

  • 全部変わらない → Gather漏れ、またはCompile漏れ。保存してからGather→Compileをやり直す
  • 1箇所だけ日本語のまま → その文字列がString型。次点でGather漏れ・翻訳の空欄。Text型に直したら保存してGather→英訳入力→Compileをやり直す
  • 日本語に戻すと豆腐(□) → フォントに日本語グリフがない(フォントの落とし穴へ)
  • exeでだけ翻訳が出ないLocalizations to Package に言語が入っていない(後述)

ポイントは2つです。

  • 翻訳する表示文字は最初からText型で作る:後からStringをTextに直すのは、UMGの作り替えが発生して手間がかかる。プレイヤーに見える文字は、翻訳するものならText型で持つ(プレイヤー名や内部値など、表示しても翻訳しない文字列は別)
  • 文字列を足したらGatherし直す:新しいテキストは、収集しなければ翻訳リストに現れない。翻訳が空欄なら、まずGatherのやり直しを疑う

なお、パッケージ版でも言語が切り替わるように、公開前に Project Settings > PackagingLocalizations to Packagejaen を含めておきます。ここが漏れると、エディタでは切り替わるのに、exeでは翻訳が出ません。ビルドして配布する手順そのものは パッケージングとビルド にまとめてあります。

言語も設定項目の1つなので、切り替えの保存は 設定画面の作り方 と同じ仕組みにも乗せられます。

おまけ:先に知っておくと良いこと

数値や名前を混ぜる文は Format Text で組む。 「{Name} を手に入れた!」のように変数を埋め込みたいときは、String連結ではなく Format Text ノードを使います。中括弧 {Name} の部分に変数を差し込む形なら、文全体がText型のまま翻訳対象になります。しかも、英語では語順が変わっても、翻訳側で {Name} obtained! のように組み替えられます。

翻訳の外注はPOファイルで渡せる。 Localization Dashboard から PO形式 で書き出せば、翻訳者や翻訳サービスに渡して、訳を入れて返してもらい、また取り込めます。翻訳を自分で全部やらない場合は、この流れが標準です。

複数形はCSVだけでは足りない。 「1 item」「2 items」のように数で語尾が変わる言語は、単純な対応表では扱えません。UE5はこうした複数形にも対応していますが、まずは単数・複数を意識しなくて済む文で書いておくと、後が楽です。

まとめ

ローカライズの成否は、実は作り始める前に決まっています。要点はこの5つです。

  • 翻訳されるのはText型だけ。String連結は素通りするので、表示文字は最初からText型で持つ
  • Gather → Translate → Compile の3ステップを回す。文字列を足したら保存してGatherし直す
  • 実行中の切り替えは Set Current CultureSave to Config を true にすれば次回起動時も維持される
  • 症状で原因を切り分ける。 豆腐(□)=フォント、半分日本語=String型
  • パッケージ版で出すなら Localizations to Package に言語を含める

あなたのゲームのUI、いま何割がText型でできているでしょうか。公開前に一度、String連結が紛れていないか見直してみてください。