3.

UE5 プロジェクト多言語化完全ガイド(ローカライズダッシュボード / FText / Culture 切替 / 翻訳ワークフロー)

編集
この記事の要点
  • UE5 の多言語化はローカライズダッシュボードを中心に、対象テキストを FText(Text 型)で持つことで実現する
  • ワークフローは Gather → Export(PO) → 翻訳 → Import → Compile の 5 ステップ
  • 実行時の言語切替は Set Current Culture(言語コード ja, en-US など)+ Apply Settings
  • String 型は翻訳されない。Blueprint / UMG / C++ いずれも FText で書く
  • 実機の言語フォールバックは ネイティブカルチャ(多くは en)。未翻訳キーはこちらに戻る

UE5 における多言語化の全体像

UE5 で多言語対応を行うときの基本は次の 3 点です。

  • 表示するテキストは FText(Text 型)で持つ
  • 翻訳データは ローカライズダッシュボードでターゲット単位に管理する
  • 実行時に Set Current Culture + Apply Settings で言語を切り替える

String 型(FString)の文字列は翻訳の対象にならないため、UI の文言・台詞・アイテム名はすべて FText で扱う必要があります。

事前準備:ローカライズの有効化

「編集 → プロジェクト設定 → エディタ → エクスペリメンタル」または「エディタの環境設定」から Localization Dashboard(ローカライゼーション ダッシュボード)を有効にします。プロジェクト設定の「Internationalization」セクションでは、パッケージ時に同梱する言語を選択できます。

ワークフロー:Gather → Translate → Import → Compile

ステップUI 操作生成物
1. Gather Text「テキストを収集」ボタンFText を全プロジェクトから収集
2. Export言語ごとに「翻訳をエクスポート」.po ファイル(Gettext 形式)
3. 翻訳外部ツール(Poedit / OmegaT 等)または翻訳会社翻訳済み .po
4. Import「翻訳をインポート」Localization/ に保存
5. Compile「テキストをコンパイル」ランタイム用 .locres

新しいターゲットは「新しいローカライズターゲット」で作成し、「Game」(プロジェクト全体)や「Engine」「Editor」などを切り分けます。多くのゲームプロジェクトでは Game ターゲット 1 つで十分です。

テキストの書き方:FText を使う

Blueprint の場合

変数の型に Text を選択するか、「Make Literal Text」「Format Text」ノードでリテラル文字列を作ります。文字列リテラルは自動でキーが振られ、ダッシュボードの Gather 対象になります。

C++ の場合

#include "Internationalization/Text.h"

// NSLOCTEXT(namespace, key, sourceText)
FText Hello = NSLOCTEXT("MyGame", "HelloMessage", "こんにちは、世界");

// LOCTEXT を使うパターン(ファイル冒頭に LOCTEXT_NAMESPACE を定義)
#define LOCTEXT_NAMESPACE "MyGame"
FText Title = LOCTEXT("MainTitle", "メインメニュー");
#undef LOCTEXT_NAMESPACE

// フォーマット
FFormatNamedArguments Args;
Args.Add(TEXT("Score"), FText::AsNumber(1234));
FText Msg = FText::Format(LOCTEXT("ScoreFmt", "スコア: {Score}"), Args);

NSLOCTEXT / LOCTEXT は collator が認識するマクロで、ビルド時にキーごと収集されます。直接 FText::FromString() で作った文字列は翻訳対象になりません

言語の切替:Set Current Culture

Blueprint で動的に言語を切り替えるには次のノードを使います。

ノード用途
Get Current Culture現在のカルチャ(ja, en-US など)を取得
Set Current Cultureカルチャを設定(成功すれば即時反映)
Apply Settingsゲーム設定として保存(再起動後も維持)
Get Culture Display Name言語選択 UI 用の表示名(「日本語」「English」など)

典型的な言語切替フロー

  1. 言語選択 UMG で「日本語」「English」ボタンを表示
  2. クリックで Set Current Culture("ja") / Set Current Culture("en-US") を呼ぶ
  3. Apply Settings(bCheckForCommandLineOverrides=false) を呼んで GameUserSettings.ini に保存
  4. UMG をリビルド(Construct Widget を作り直す or 「Synchronize Properties」)

ネイティブカルチャとフォールバック

ローカライズターゲットには「ネイティブカルチャ」を 1 つ指定します。これは原文の言語であり、未翻訳キーが見つからない場合のフォールバック先になります。日本のスタジオで日本語原文の場合は ja をネイティブカルチャに設定するのが自然です。

カルチャコード言語
ja日本語(汎用)
en / en-US / en-GB英語(汎用 / 米 / 英)
zh-Hans / zh-Hant簡体字中国語 / 繁体字中国語
ko韓国語
de / fr / es / ru独 / 仏 / 西 / 露

UMG での注意点

  • Text ブロックの「Text」プロパティに直接打ち込んだ文字列は FText として収集されます
  • Bind で関数を返り値 FText にすれば動的テキストも翻訳対象
  • String を To Text でキャストしても翻訳されない(キーが無いため)
  • フォント差し替え(中文・韓文)は Font Family の「Sub Font」設定でカルチャ別に切替可能

パッケージング時の設定

「プロジェクト設定 → パッケージング → Internationalization Support」で「Conformant Localizations」または「All」を選び、同梱したい言語にチェックを入れます。EFIGS(English/French/Italian/German/Spanish)プリセットも用意されています。

よくあるトラブル

症状原因 / 対処
翻訳が反映されないCompile 忘れ、または UMG リビルド未実施
新しいテキストが収集されないString 型で書いた / 動的フォーマットで FText を作っていない
パッケージ後に英語に戻るパッケージ設定で当該カルチャを含めていない
外字 / 記号が「□」フォントに該当文字のグリフが無い。フォントサブフォントを設定
キーが重複してマージされる同じ文字列が複数箇所で使われると 1 つにまとまる。区別したいなら NSLOCTEXT のキーを変える

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. プロジェクトの削除方法
  2. Blueprintでプロジェクト全体で共有できるStatic定数の定義方法
  3. プロジェクトを多言語化する方法

最近更新/作成されたページ