この記事の要点
- UE5 の多言語化はローカライズダッシュボードを中心に、対象テキストを FText(Text 型)で持つことで実現する
- ワークフローは Gather → Export(PO) → 翻訳 → Import → Compile の 5 ステップ
- 実行時の言語切替は Set Current Culture(言語コード
ja,en-USなど)+ Apply Settings - String 型は翻訳されない。Blueprint / UMG / C++ いずれも FText で書く
- 実機の言語フォールバックは ネイティブカルチャ(多くは
en)。未翻訳キーはこちらに戻る
1UE5 における多言語化の全体像
UE5 で多言語対応を行うときの基本は次の 3 点です。
- 表示するテキストは FText(Text 型)で持つ
- 翻訳データは ローカライズダッシュボードでターゲット単位に管理する
- 実行時に Set Current Culture + Apply Settings で言語を切り替える
String 型(FString)の文字列は翻訳の対象にならないため、UI の文言・台詞・アイテム名はすべて FText で扱う必要があります。
2事前準備:ローカライズの有効化
「編集 → プロジェクト設定 → エディタ → エクスペリメンタル」または「エディタの環境設定」から Localization Dashboard(ローカライゼーション ダッシュボード)を有効にします。プロジェクト設定の「Internationalization」セクションでは、パッケージ時に同梱する言語を選択できます。
3ワークフロー: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 つで十分です。
4テキストの書き方: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() で作った文字列は翻訳対象になりません。
5言語の切替:Set Current Culture
Blueprint で動的に言語を切り替えるには次のノードを使います。
| ノード | 用途 |
|---|---|
Get Current Culture | 現在のカルチャ(ja, en-US など)を取得 |
Set Current Culture | カルチャを設定(成功すれば即時反映) |
Apply Settings | ゲーム設定として保存(再起動後も維持) |
Get Culture Display Name | 言語選択 UI 用の表示名(「日本語」「English」など) |
典型的な言語切替フロー
- 言語選択 UMG で「日本語」「English」ボタンを表示
- クリックで
Set Current Culture("ja")/Set Current Culture("en-US")を呼ぶ Apply Settings(bCheckForCommandLineOverrides=false)を呼んでGameUserSettings.iniに保存- UMG をリビルド(
Construct Widgetを作り直す or 「Synchronize Properties」)
6ネイティブカルチャとフォールバック
ローカライズターゲットには「ネイティブカルチャ」を 1 つ指定します。これは原文の言語であり、未翻訳キーが見つからない場合のフォールバック先になります。日本のスタジオで日本語原文の場合は ja をネイティブカルチャに設定するのが自然です。
| カルチャコード | 言語 |
|---|---|
ja | 日本語(汎用) |
en / en-US / en-GB | 英語(汎用 / 米 / 英) |
zh-Hans / zh-Hant | 簡体字中国語 / 繁体字中国語 |
ko | 韓国語 |
de / fr / es / ru | 独 / 仏 / 西 / 露 |
7UMG での注意点
- Text ブロックの「Text」プロパティに直接打ち込んだ文字列は FText として収集されます
- Bind で関数を返り値 FText にすれば動的テキストも翻訳対象
- String を To Text でキャストしても翻訳されない(キーが無いため)
- フォント差し替え(中文・韓文)は Font Family の「Sub Font」設定でカルチャ別に切替可能
8パッケージング時の設定
「プロジェクト設定 → パッケージング → Internationalization Support」で「Conformant Localizations」または「All」を選び、同梱したい言語にチェックを入れます。EFIGS(English/French/Italian/German/Spanish)プリセットも用意されています。
9よくあるトラブル
| 症状 | 原因 / 対処 |
|---|---|
| 翻訳が反映されない | Compile 忘れ、または UMG リビルド未実施 |
| 新しいテキストが収集されない | String 型で書いた / 動的フォーマットで FText を作っていない |
| パッケージ後に英語に戻る | パッケージ設定で当該カルチャを含めていない |
| 外字 / 記号が「□」 | フォントに該当文字のグリフが無い。フォントサブフォントを設定 |
| キーが重複してマージされる | 同じ文字列が複数箇所で使われると 1 つにまとまる。区別したいなら NSLOCTEXT のキーを変える |
10関連
子ページはありません
- プロジェクトの削除方法
- Blueprintでプロジェクト全体で共有できるStatic定数の定義方法
- プロジェクトを多言語化する方法
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Git pushした変更の取消し|revert・履歴変更と保護の注意点 2026-10-15 23:49:01
- Gitでローカルを戻す前に|reset・restoreの違いと退避範囲 2026-10-15 23:49:01
- Git rebaseの使い方|対象範囲・競合解決・pushの判断 2026-10-15 22:50:59
- Git pullの使い方|取込み先・ff-only・競合とstashの注意点 2026-10-15 22:50:59
- Git pushの使い方|送信先・タグ・force-with-leaseの条件 2026-10-15 22:12:47
- Git remoteの設定・確認・削除|SSH URLとfetch/pushの違い 2026-10-15 22:12:47
- Gitリモートリポジトリの作成|初回push・既存履歴・mirrorの注意 2026-10-15 15:48:16
- Gitのuser.name・user.email設定|local/global・確認と過去履歴の注意 2026-10-15 15:30:07
- LinuxにGitをインストール|配布元・初期設定・TLSと認証の確認 2026-10-15 15:30:06
- Git導入と初回push|Linuxサーバー・Windows/macOS・SSH設定 2026-10-15 14:51:54
- Db2のCREATE INDEX|索引定義・INCLUDEと実行計画の確認 2026-10-15 14:10:22
- Db2の自動採番|IDENTITY・ID取得とRESTARTの注意点 2026-10-15 14:10:22
- 【DB2】特定スキーマの全テーブルの全カラム情報を取得する方法 2026-10-15 13:53:15
- Db2のシーケンスとIDENTITYの違い|採番とカタログの確認SQL 2026-10-15 13:53:15
- Db2で複数カラムをUPDATEする方法|SET・WHEREと更新前の値 2026-10-15 13:53:15