ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
この記事の要点
- 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関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- プロジェクトの削除方法
- 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アノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Spring Framework 記事一覧31件|DI・設定・例外の対処 2026-09-07 07:45:13
- Laravel 記事一覧55件|環境構築・ルーティング・DB・エラー対処 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Javaの定数 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- hostnameコマンドの使い方|Windows・Linux・macOSでホスト名確認 2026-09-07 07:45:13
- NetBeansでTomcatを起動する手順|サーバ登録・ポート・トラブル対処 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Oracle DROP USERでユーザー削除|CASCADE・接続中ユーザーの対処 2026-09-07 07:45:13
- SQLとは|DDL・DMLとリレーショナルデータベース操作の基本 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?