Skip to main content
UE4のローカライズ機能紹介
Epic Games Japan / Support Engineer
Ken Kuwano
#UE4DD | @UNREALENGINE
概要
● 話すこと
● UE4のローカライズ機能 (Ver4.23)
● 基本機能の使い方、注意点など
● 話さないこと
● 具体的な実装の事例
● 処理の流れ、設定の詳細など
#UE4DD | @UNREALENGINE
目次
● ローカライズ概要
● ローカライズ機能
● アセット別ローカライズ
● その他
#UE4DD | @UNREALENGINE
目次
● ローカライズ概要
● ローカライズ機能
● アセット別ローカライズ
● その他
#UE4DD | @UNREALENGINE
ゲームのローカライズ
● ゲームをローカライズする
● 目的:複数地域をターゲットとした販売を行う
● 実行:複数地域にゲームを対応させる
#UE4DD | @UNREALENGINE
ローカライズが必要なアセット
● テキスト
● 表示内容
● フォント
● アセット
● テクスチャ
● ボイス・サウンド
● ムービー
● カットシーン
● アニメーション
#UE4DD | @UNREALENGINE
ゲームのローカライズ
● ゲームをローカライズする
● 目的:複数地域をターゲットとした販売を行う
● 実行:複数地域にゲームを対応させる
● UE4のゲームをローカライズする
● UE4を利用する場合の複数地域対応はどうやる?
● 管理:アセットの管理、共有の方法
● 効率:ワークフロー、効率的な実装
● 効果:メモリ、パフォーマンス
本講演での内容はココ
#UE4DD | @UNREALENGINE
ローカライズ?
Localization:地域化 (L10N)
● 地域固有の構成部品や翻訳テキストを追加することによって、ソ
フトウェアを特定の地域や言語に適合させる工程
● 例:日本語用テキストを利用して日本語の表示に適用すること
Internationalization:国際化 (I18N)
● ソフトウェアに技術的な変更を加えることなく多用な言語や地域
に適合させるソフトウェア設計の工程
● 例:日本語テキストを日本語用として認識して適用する仕組み
出典:Wikipedia
#UE4DD | @UNREALENGINE
https://docs.unrealengine.com/ja/Gameplay/Localization/index.html
UE4のローカライズ機能
#UE4DD | @UNREALENGINE
目次
● ローカライズ概要
● ローカライズ機能
● アセット別ローカライズ
● その他
#UE4DD | @UNREALENGINE
ローカライズ機能
● テキストのローカライズ
● アセットのローカライズ
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
エディター (en) パッケージゲーム (ja)
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
テキスト
収集
パッケー
ジ作成
言語切替
翻訳
テキスト
作成
エディター (en) パッケージゲーム (ja)
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
テキスト
収集
パッケー
ジ作成
言語切替
翻訳
テキスト
作成
アセットからローカライ
ズ対象のテキスト収集
OPTIONS
QUIT
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
テキスト
収集
パッケー
ジ作成
言語切替
翻訳
テキスト
作成
収集したテキストから
翻訳テキスト作成
OPTIONS
QUIT
オプション
終了
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
テキスト
収集
パッケー
ジ作成
言語切替
翻訳
テキスト
作成
翻訳テキストを含む
パッケージ作成
パッケージ
OPTIONS
QUIT
オプション
終了
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
テキスト
収集
パッケー
ジ作成
言語切替
翻訳
テキスト
作成
利用言語に応じて
テキストを表示
パッケージ
OPTIONS
QUIT
オプション
終了
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
テキスト
収集
パッケー
ジ作成
言語切替
翻訳
テキスト
作成
パッケージ
OPTIONS
QUIT
オプション
終了
パッケージ
OPTIONS
QUIT
オプション
終了
OPTIONS
QUIT
オプション
終了
OPTIONS
QUIT
Localization Dashboard
#UE4DD | @UNREALENGINE
テキストの収集
Localization Dashboard
#UE4DD | @UNREALENGINE
テキストの収集
#UE4DD | @UNREALENGINE
テキストの収集とローカライズ
Blue
Print
C++
①テキスト収集 ② テキスト作成
Loc
Res
③ テキスト表示
Editor表示 ゲーム中表示
#UE4DD | @UNREALENGINE
収集するテキスト
● Blueprint:FText、STextBlockの定義
● C++/.ini:LOCTEXT、NSLOCTEXTマクロで定義
#UE4DD | @UNREALENGINE
テキストの配置 (一意なテキスト情報)
#UE4DD | @UNREALENGINE
● FormatTextでローカライズの表示にも対応
● 可変入力
「XXXを捨てた」など
● 数
「N個手に入れた」など
● 複数性
「1Hit」,「2Hits」など
● 単位
「USD」,「yard」など
テキストの表示
#UE4DD | @UNREALENGINE
There {NumCats}|plural(one=is,other=are) {NumCats} {NumCats}|plural(one=cat,other=cats)
1は”is”, その他は”are” 数 1は”cat”, その他は”cats”
複数性を考慮したテキスト(en)
#UE4DD | @UNREALENGINE
There is 1 cat
There are 2 cats
(en)
Localization Dashboardで
翻訳テキスト入力
1匹の猫がいる
2匹の猫がいる
(ja)
複数性を考慮したテキスト(en→ja)
#UE4DD | @UNREALENGINE
自動対応したフォーマットテキスト
テキストは言語独自のフォーマットへ対応可能
1) 数字:12345.67
● jaなど : 12,345.67 ⇒ Groupingは”,” / Decimalは”.”
● deなど : 12.345,67 ⇒ Groupingは”.” / Decimalは”,”
● frなど : 12 345,67 ⇒ Groupingは” ” / Decimalは”,”
2) 日付:2020年10月31日
● ja : 2019/10/31 ⇒ yyyy/mm/dd
● en : Oct 31, 2019 ⇒ mm/dd/yyyy
● fr : 31 oct. 2019 ⇒ dd-mm-yyyy
#UE4DD | @UNREALENGINE
言語別規則
https://cdn.ymaws.com/www.igda.org/resource/collection/2DA60D94-0F74-46B1-A9E2-F2CE8B7
2EA4D/BestPracticesforGameTranslationv2.02_JP.pdf
#UE4DD | @UNREALENGINE
言語別規則
http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
テキスト
収集
パッケー
ジ作成
言語切替
翻訳
テキスト
作成
パッケージ
OPTIONS
QUIT
オプション
終了
パッケージ
OPTIONS
QUIT
オプション
終了
OPTIONS
QUIT
オプション
終了
OPTIONS
QUIT
Localization Dashboard .ini/commandなど
#UE4DD | @UNREALENGINE
テキスト表示の言語指定方法
● ゲーム起動時
● 起動引数
● .iniファイル
● システム言語
● ライタイム
● コンソールコマンド
● 言語切替処理 (BP/C++)
#UE4DD | @UNREALENGINE
言語の表示切り替え
テキスト表示言語切替
#UE4DD | @UNREALENGINE
UE4のローカライズ機能
Culture
Language
Locale
Asset Group
テキストとアセットの表示
数値/日付/時刻などのフォーマット表示
特定のアセットを対象とした表示の制御
テキスト関連
#UE4DD | @UNREALENGINE
Cultureの切り替え
● ゲーム起動時の言語指定方法は複数存在するので、複数
設定時は適用の優先順が発生
● 以下上から順に設定が優先される
● 起動引数 “culture=”で指定された言語
● xxxEngine.iniの”culture=”で指定された言語
● xxxGame.iniの”culture=”で指定された言語
● システム言語 (OS)
#UE4DD | @UNREALENGINE
テキストのローカライズプロセス
テキスト
収集
パッケー
ジ作成
言語切替
翻訳
テキスト
作成
エディターでの英語表示から
パッケージでの日本語表示を行うフロー
#UE4DD | @UNREALENGINE
ローカライズ機能
● テキストのローカライズ
● アセットのローカライズ
#UE4DD | @UNREALENGINE
アセットのローカライズ
エディター (en) パッケージゲーム (ja)
#UE4DD | @UNREALENGINE
アセットのローカライズプロセス
パッケー
ジ作成
言語切替
アセット
配置
エディター (en) パッケージゲーム (ja)
#UE4DD | @UNREALENGINE
アセットのローカライズプロセス
パッケー
ジ作成
言語切替
アセット
配置
ローカライズ対象アセッ
トを指定のパスに配置
Img (en)
Img (ja)
#UE4DD | @UNREALENGINE
アセットのローカライズプロセス
パッケー
ジ作成
言語切替
アセット
配置
ローカライズ対象を含む
パッケージ作成
パッケージ
Img (en)
Img (ja)
#UE4DD | @UNREALENGINE
アセットのローカライズプロセス
パッケー
ジ作成
言語切替
アセット
配置
パッケージ
Img (en)
Img (ja)
利用言語に応じて
アセットを表示
#UE4DD | @UNREALENGINE
アセットのローカライズプロセス
パッケー
ジ作成
言語切替
アセット
配置
パッケージ
Img (en)
Img (ja)
パッケージ
Img (en)
Img (ja)
Img (en)
Img (ja)
Editor
#UE4DD | @UNREALENGINE
アセットの配置
● アセットローカリゼーションの適用
● Content/L10N/言語の配下にアセットを配置
元テクスチャの位置
Content/UI/Texture/Logo/LogoBk
日本語版テクスチャの位置
Content/L10N/ja/UI/Texture/Logo/LogoBk
#UE4DD | @UNREALENGINE
アセットの配置
● アセットローカリゼーションの適用
● Content BrowserからAsset Localizationから選択
#UE4DD | @UNREALENGINE
アセットのローカライズプロセス
パッケー
ジ作成
言語切替
アセット
配置
パッケージ
Img (en)
Img (ja)
パッケージ
Img (en)
Img (ja)
Img (en)
Img (ja)
Editor .ini/commandなど
#UE4DD | @UNREALENGINE
アセット表示の言語指定方法
● ゲーム起動時
● 起動引数
● .iniファイル
● システム言語
● ライタイム
● コンソールコマンド
● 言語切替処理 (BP/C++)
テキスト切替と同じ
#UE4DD | @UNREALENGINE
言語の表示切り替え
アセット表示言語切替
#UE4DD | @UNREALENGINE
UE4のローカライズ機能
Culture
Language
Locale
Asset Group
テキストとアセットの表示
数値/日付/時刻などのフォーマット表示
特定のアセットを対象とした表示の制御
アセット関連
#UE4DD | @UNREALENGINE
Asset Groupの切り替え
● アセットをグループ化して言語間で再利用できる機能
● 一部のアセットだけを別の言語で使い回すようなケース...
● テキスト表示は”ja”だけど、Audioの一部は”en”を使いたい...
● xxxGame.ini, xxxEngine.ini で各種設定が可能
#UE4DD | @UNREALENGINE
Asset Group
● Asset Groupを使用しない
(テキストは日本語表示、アセットも日本語を利用)
単に日本語で表示する場合、
全テキストはja、全アセットもjaで表示
テキスト (ja) アセット (ja)
#UE4DD | @UNREALENGINE
Asset Group
Audio (it)
Sound Wave
Sound Cue
● Asset Groupを使用する
(テキストは日本語表示、サウンドの一部のみ英語を利用)
テキスト (ja)
その他
アセット (ja)
”Sound Wave”と”Sound Cue”をグループ化(Audio)することで、
jaを表示中であっても”Sound Wave”と”Sound Cue”はitを使用
Class
Asset Group
#UE4DD | @UNREALENGINE
● Asset Groupに対して紐づけるクラスの設定
● Asset Groupを適用する言語の設定
Asset Groupの切り替え
上記の設定が行われた場合、
Sound WaveとSound Cueは起動時から英語アセットを使用
#UE4DD | @UNREALENGINE
アセットのローカライズプロセス
パッケー
ジ作成
言語切替
アセット
配置
エディターでの英語表示から
パッケージで日本語表示を行うまでの流れ
#UE4DD | @UNREALENGINE
目次
● ローカライズ概要
● ローカライズ機能
● アセット別ローカライズ
● その他
#UE4DD | @UNREALENGINE
アセット別ローカライズ
● フォント
● 字幕とボイス
● ムービー字幕
#UE4DD | @UNREALENGINE
フォントのローカライズ
● テキストのローカライズの際に考慮したいこと?
● 表示する言語毎に適用するフォントを変えたい
● 表示する言語毎にフォントの文字サイズを変えたい など
● フォントのローカライズに対応させるには?
● Asset Localization を使って言語別にフォントを適用する方法
● Sub Culture, Sub Font Familyを利用する方法
#UE4DD | @UNREALENGINE
フォントのローカライズ適用(1)
● Asset Localizationによって言語別でフォントを用意
Font (共通)
Font (th:タイ語用)Font (ja:日本語用)
#UE4DD | @UNREALENGINE
フォントのローカライズ適用(2)
● SubCulture, SubFontを利用して1つのFontで完結
Font (共通)
Font Face
Fallback Font Family
Font Face
Sub Font Family
(ja:日本語用)
Font Face
Sub Font Family
(th:タイ語用)
Font Face
Default Font Family
#UE4DD | @UNREALENGINE
Font
Default Font
デフォルトで使用
Fallback Font
文字データが存在しない場合に使用
Sub Font
特定言語の特定範囲内の文字データで使用
#UE4DD | @UNREALENGINE
Font
適用言語
文字コード範囲
適用フォント
#UE4DD | @UNREALENGINE
字幕とボイスのローカライズ
● Dialogueアセットで対話を構築
これはテスト字幕です。
https://docs.unrealengine.com/ja/Engine/Audio/Dialogue/index.html
#UE4DD | @UNREALENGINE
字幕とボイスのローカライズ
● Dialogueアセットによる対話システム (1文単位)
● Dialogue Wave :対話情報
● Dialogue Voice :話者情報
● Sound Wave :ボイス音声
#UE4DD | @UNREALENGINE
Dialogue Wave
字幕テキスト
話者情報
ボイス
#UE4DD | @UNREALENGINE
Dialogue Waveのローカライズ
対話テキストはテキストローカライズ
ボイスはアセットローカライズ
#UE4DD | @UNREALENGINE
動画字幕のローカライズ
● Media Playerの字幕を言語毎に切り替える機能
● 未解放のため利用時は要ソース修正
● 字幕データ再生には独自に再生処理の追加が必要
#UE4DD | @UNREALENGINE
● 字幕データを持つアセット
● Editor上で字幕内容が編集可能
● アセットは言語毎に作成
● 字幕ファイル(.srt)をインポート可能
Basic Overlays
Localized Overlays
Localize用テーブル
Basic Overlays
字幕データ(ja)
Basic Overlays
字幕データ(en)
#UE4DD | @UNREALENGINE
● 字幕を言語別で管理するアセット
● Basic Overlaysを言語毎に設定
Localized Overlays
Localized Overlays
Localize用テーブル
Basic Overlays
字幕データ(ja)
Basic Overlays
字幕データ(en)
#UE4DD | @UNREALENGINE
ソースを修正することでメニューに表示して選択可能に
機能を使うためのソース修正
#UE4DD | @UNREALENGINE
Subtitle Data
Project
Engine
Widget
Media再生用
Subtitle
Manager
字幕制御
Subtitle Player
字幕再生
Localized
Overlays
ローカライズ用字幕情報
Basic Overlays
字幕データ(ja)
Basic Overlays
字幕データ(en)
Basic Overlays
字幕データ(fr)
Overlayの制御と関連クラス
#UE4DD | @UNREALENGINE
Subtitle Playerの実装例
void UMyMediaSubtitlesPlayer::Play()
{
bEnabled = true;
}
void UMyMediaSubtitlesPlayer::Stop()
{
bEnabled = false;
FSubtitleManager::GetSubtitleManager()->SetMovieSubtitle(this, TArray<FString>());
}
#UE4DD | @UNREALENGINE
Subtitle Playerの実装例
void UMyMediaSubtitlesPlayer::Tick(float DeltaSeconds)
{
if (bEnabled && SourceSubtitles)
{
UMediaPlayer* MediaPlayerPtr = MediaPlayer.Get();
if (MediaPlayerPtr)
{
FTimespan CurrentTime = MediaPlayerPtr->GetTime();
TArray<FOverlayItem> CurrentSubtitles;
SourceSubtitles->GetOverlaysForTime(CurrentTime, CurrentSubtitles);
TArray<FString> SubtitlesText;
for (const FOverlayItem& Subtitle : CurrentSubtitles)
{
SubtitlesText.Add(Subtitle.Text);
}
FSubtitleManager::GetSubtitleManager()->SetMovieSubtitle(this, SubtitlesText);
}
else
{
Stop();
}
}
}
#UE4DD | @UNREALENGINE
目次
● ローカライズ概要
● ローカライズ機能
● アセット別ローカライズ
● その他
#UE4DD | @UNREALENGINE
その他機能
● Localization Preview
● Translation Picker
● String Table
#UE4DD | @UNREALENGINE
Localization Preivew
● UMG上でローカライズテキストを確認する機能
● ローカライズアセットはPreviewの対象外
#UE4DD | @UNREALENGINE
言語を指定すると即座にテキストローカライズの確認が可能
Localization Preivew
ローカライズプレビューの適用前(左)と適用後(右)
テキスト更新
(en→ja)
Preview 適用中
#UE4DD | @UNREALENGINE
Localization Preivew
● Preview Game Language (Editor Preference)
● Preview言語を指定した場合はDefault Previewとして反映
日本語を選択したらプレビューに反映
#UE4DD | @UNREALENGINE
Localization Preivew
● Localization Preview機能を利用するには予めテキスト
をローカライズしておく必要があります
テキストをローカライズすると Preview言語が選択可能になる
#UE4DD | @UNREALENGINE
Translation Picker
● Editorからテキストローカライズ情報を抽出する機能
● Dashboardにアクセスせず直接テキストを編集することも可能
#UE4DD | @UNREALENGINE
Translation Picker
● 機能を有効にする
● Editor設定の[Translation Picker]を有効する (Experimental)
● Transkltion Pickerを表示する
● Editorの[Window]一覧、もしくはDashboardにアイコンが表示
#UE4DD | @UNREALENGINE
Translation Picker
PIE中に翻訳テキストを直接編集が可能
#UE4DD | @UNREALENGINE
String Table
● 定型文や使い回す文字列を一元管理する際に利用
● CSVからのインポート/エクスポートも可能
#UE4DD | @UNREALENGINE
String Table
● TextにKeyを指定することでValueの参照が可能
TableとKeyを指定
Valueが反映
#UE4DD | @UNREALENGINE
String Table
Hard Reference される String Table
● テキストの一元管理が可能
● 編集が競合しないことに注意
● ハード参照を持つので注意
#UE4DD | @UNREALENGINE
Project設定
● ローカライズパッケージ作成時は以下の設定が必須
● Localizations to Package
● Cook/Stage/Package対象とする言語
● Internationalization Support
● Packageする国際化データの言語セット
#UE4DD | @UNREALENGINE
Project設定
● Localizations to Packages
● ローカライズ対象の言語を指定する設定
● 未選択時はContent/L10N/[culture]がパッケージに含まれない
ローカライズ済みの言語から選択...対象とする言語を手動で選択...
#UE4DD | @UNREALENGINE
Project設定
● プラットフォーム毎に言語情報を指定したい
● xxxGame.ini で含める言語の指定を上書きする
● 以下の例ではパッケージ作成時に”en”と”ja”のアセットやテキス
トのみ含まれる
#UE4DD | @UNREALENGINE
● Internationalization Support
● 対象言語を含むプリセットを一覧から選択する
Project設定
プリセット 言語 サイズ (MB)
English 英語 ~1.77
EFIGS 英語、フランス語、イタリア語、ドイツ語、スペイン語 ~2.38
EFIGSCJK 英語、フランス語、イタリア語、ドイツ語、スペイン語、中国語、日本語、韓国語 ~5.99
CJK 中国語、日本語、韓国語 ~5.16
All 全ての言語 ~15.3
言語セットによって異なるサイズ一覧
#UE4DD | @UNREALENGINE
まとめ
● UE4にはローカライズに必要な基本機能がある
● 要件次第で独自のシステムやワークフローを適用した方
が良いこともしばしば
● ローカライズの計画はできるだけ早い段階で
#UE4DD | @UNREALENGINE
ご清聴ありがとうございました。
#UE4DD | @UNREALENGINE
付録
● ローカリゼーションダッシュボード
● ローカライズ関連の設定
#UE4DD | @UNREALENGINE
ローカリゼーションダッシュボード
#UE4DD | @UNREALENGINE
Localization Dashboard
#UE4DD | @UNREALENGINE
Localization Dashboardの機能
● テキストのローカライズ機能
● アセットやソースからテキストを収集できる
● 翻訳テキストのエクスポートができて共有することができる
● さまざまな言語の翻訳テキストを管理/編集することができる
● 翻訳テキストのローカライズ進捗状況を管理することができる
● テキストのローカライズサポート機能
● サードパーティの翻訳ソフトと連動することができる
● ソースコントロールと連動することができる
● 翻訳テキストのプレビュー表示やフォントのプレビューができる
● テキストのコンフリクトチェックができる
#UE4DD | @UNREALENGINE
Localization Dashboardは使える?
● メリット
● UE4 Editor内でローカライズ作業が完結する
● ローカライズのテキスト編集後に直ぐに確認できる
● ソースのメタデータなど広範囲に渡ってテキストを収集できる
● サードパーティソフトやソースコントロールと連動している
● デメリット
● 翻訳テキストを共有して編集することが単独ではできない
● ソーステキストを編集した場合に全ての言語に影響する
● 実験的機能としての位置付け (ただし利用することは可能)
#UE4DD | @UNREALENGINE
Localization Dashbord 概要
プリセット設定
プリセット詳細設定連動サービス設定
言語設定
テキスト収集設定
その他設定
#UE4DD | @UNREALENGINE
とりあえずテキストのローカライズをする場合
① ローカライズ言語の追加
② ローカライズ対象の設定
③ テキストの収集
④ 翻訳テキスト入力
⑤ テキストのコンパイル
⑥ ワード数の更新
#UE4DD | @UNREALENGINE
ローカライズの設定と確認方法
● シンプルなテキストローカライズの設定方法
1. [Native]言語を設定して利用する[Culture]言語を追加
2. [Gather Text]からテキストを収集する対象を設定
3. [Gather Text]を押してテキストを収集
4. [Translation Editor]から翻訳テキストを入力
5. [Compile Text]を押してテキストの変換
6. [Count Words]を押して言語数を更新
● シンプルなテキストローカライズの確認方法
1. EditorからStandaloneで起動
2. Cultureコマンド(例:culture=ja)を入力して言語切替を確認
#UE4DD | @UNREALENGINE
Localization Dashbord 概要
#UE4DD | @UNREALENGINE
Localization Dashbord 概要
プリセット設定
プリセット詳細設定
言語設定
テキスト収集設定
連動サービス設定
その他設定
#UE4DD | @UNREALENGINE
● 外部のローカライズサービス(XLoc, OneSky)と連動
● Source Controlとの連動
Localization Service