「Text」について私がどっぷりハマったので他にハマってる方のために使い方を書いときます。
UE4の文字列は3種類ありまして、その中で「Text(FText)」は多言語化に対応した文字列型になります。
今回はBluePrintで基本的なローカライズの操作方法になります。
UE4でローカライズ対応させるTextを作成する
を行うことで作成できます。
ローカライゼーションダッシュボードの操作
初期設定を行う
- Gather Text->Gather from Packagesにチェックを入れます
- Gather Text->Include Path Wildcardsに+でパスを追加します
これはプロジェクトのルートとの相対参照になっているので、コンテンツブラウザで見えている範囲のTextを翻訳したい場合は「Content/*」とパスを通せばいいです - Gather Text->File Extensionsに+で拡張子を追加します
BluePrintの拡張子は「uasset」なのでここではuassetを指定します
Levelは「umap」なのでレベルに翻訳させたいTextの変数がある場合はumapも指定してください
続いて翻訳対応させる言語を追加します
※ここでの設定は変更すると今まで設定した翻訳情報が初期化される場合があるので気をつけましょう
- Cultures->「新規カルチャーを追加」で追加したい言語を選択します
- 必要であればネイティブを自分の言語に変更します
これでテキストを翻訳する準備は整いました。
翻訳をする
- 翻訳対象のTextの情報を集める必要があるので、Cultures->「テキストを収集する」ボタンを押します
保存していないファイルがある場合収集が開始できないので保存のポップアップが表示された場合ファイルを保存してください
後は自動的にテキストの収集が開始されるのでキャンセルボタンがOkayボタンに変わるまで放置します - 収集が完了したらこのカルチャーの翻訳を編集ボタンを押します
- 翻訳エディタウィンドウが表示されるのでTranslation欄の項目をクリックすると文字列を変更できるので翻訳します
※ネイティブではない言語はエディタを開くと一見何もテキストが収集されていないように見えますが未翻訳タブをクリックすると翻訳が入力できます - ワード数をカウントするを押す
この段階でワード数のバーが伸びて更新されるはずなのですが、バグがあるようでワード数の項目は増えないです
いつの間にか増えていたりするのでここでは無視しても動きます - テキストをコンパイを押す
これでローカライズデータが生成され翻訳されるようになります。
ですが、これで完成!には程遠いんだよねぇ!
ググると大抵ここまではやり方がヒットして、設定できるのですがまだ足りません
確かにエディタ上は翻訳されているし、選択ビューポートでテストすると翻訳されているのですが、スタンドアローンゲームすると日本語にはならないし、パッケージングしてもやっぱり日本語になりません
プロジェクト設定
続いてローカライゼーションダッシュボードを閉じてプロジェクト設定を開きます
- 左のメニューからパッケージ化を選びます
- 右のメニューからPackaging->Localizations to Packageで先程作成した翻訳と同じ言語にチェックを入れます
因みに上の画像は翻訳がバグっているため、翻訳出来てません(すでに翻訳をコンパイルしているのに「!」の警告が出て翻訳されていない事になっています)
※上での翻訳コンパイルがうまくいっていれば
Show Loccalizedボタンを押した時にコンパイル済みの言語が表示され!が消えます
ここで何も表示されない場合はなにか手順を間違えたか、エディタがバグってプロジェクトファイルが破損している可能性が高いです - その下にあるInternationalization Supportを「English」から「All」に変更します
※これ超重要です。設定しないと日本語にならないです
設定終了
お疲れ様でした。後はきちんと翻訳がされることを祈ってください(えぇ…
UE4は多言語化が簡単にできることを謳っている割に、ローカライゼーション周りのバグが異常に多くガバガバです
実際私が過去に作成したプロジェクトで同様の設定を行って翻訳される可能性は体感2~3割です
なので本当に翻訳がうまくいくかどうかは運任せになります
翻訳されなかった場合は、おとなしく新規作成したプロジェクトに移行して1から設定し直したほうが幸せになれる可能性が高い気がします
まあ、キャッシュ消したり再起動したりで動くことも稀によくあるので、なんとも言えないですが
その他注意点としては
- ネイティブに設定してある言語の翻訳を弄ると他の言語の翻訳が消えます
なぜか、「ソースID←ネイティブ翻訳←その他翻訳」という参照関係になっているらしく、ネイティブ翻訳を変更すると「ソースID←(消えた翻訳)←その他翻訳」となり、その他翻訳は参照できなくなって芋づる式に消えるようです - 「このカルチャーの翻訳をインポート/エクスポート」はネイティブをエクスポートする時以外はバグっているためできません
多分↑の仕様が関係しているためかとは思うのですが、ソースIDと直結した翻訳以外は単体でエクスポートできないようです。なので「テキストインポート/エクスポート」ボタンを使用して複数の言語まとめて出力しましょう。
正直、私は日本語以外使う気は無いしTextを使わなければこんなお祈りしなくてもいいんですけど、公式でUIはTextを使って多言語化してねって言っている以上従っておかないとあとで痛い目に合いそうなので…
あと、「お前のやり方間違ってるよ」、「この操作すると改善されるよ」等々詳しい方がいらっしゃったら教えてください。
コメント
Localization dashboard について調べていて、このブログに大変助けていただきました。
>因みに上の画像は翻訳がバグっているため、翻訳出来てません
>(すでに翻訳をコンパイルしているのに「!」の警告が出て翻訳されていない事になっています)
上記の問題について、こちらで発見した解決法を記しておきます。
Config > DefaultGame.ini の
[Internationalization]
LocalizationPaths=%GAMEDIR%Content/Localization/Game
の部分で先頭に“-”がついているケースがあります。
“-”を削除してプロジェクトを再起動すると、ShowLocalized に翻訳言語がリストされます。
ここがうまくいかないと、ウィジェットBPでローカライズプレビューができないのでホント悲しくなります。
ここでハマって不幸になる人が減りますように。