UDN
Search public documentation:

LocalizationReferenceJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

Localization Reference

ドキュメントの概要: Unreal Engine のローカライズシステムのリファレンスガイド。

ドキュメントの変更ログ: Dave Burke? , John Scott により更新。 Richard Nalezynski? により管理。

概要

Unreal Engine 3 のローカライゼーション システムに関するリファレンスです。

ローカライズテキスト

ローカライズテキストファイル

ファイル形式に関する情報や、文字列やバイナリデータの取り扱いに関しては、 ローカライズテキストファイル ページを参照してください。

ディレクトリパス

エンジンは、構成可能なパス選択項目 (Core.System.LocalizationPaths、デフォルトでは "Engine\Localization") 内で、ローカライズされたテキストファイルを探します。 リソースをローカライズ時、最初に現在設定されている言語ローカライゼーションファイルを検索します。 そのリソースのローカライズバージョンが見つからない場合は international (英語) ローカライズファイル (.INT) で項目を探します。

エクスポート

UnrealEd で [Full Loc Export] を使うほかに、=exportloc= コマンドレットを使用することもできます。

exportloc コマンドレットは UnrealScript パッケージ内のローカライズ文字列をローカライズテキストファイルにエクスポートします。

gamename.exe exportloc

アクティブ言語の設定

言語を変更するには、ゲームプロジェクトのエンジンの 設定ファイル の言語変数を、ローカライズ言語のディレクトリ名と一致する特定の言語に設定します。

例えば、次の例は日本語に設定する方法を示しています。

[Engine.Engine]
...
Language=JPN
...

LocImage1.jpg

テスティング

ローカライズプロセスをテストするには、偽の言語 XXX を作成して すべての文字を文字 X に置換します。これにより、ローカライズテキストが抜けている部分を簡単に見つけることができます。

翻訳ワークフロー

翻訳者は、コンテンツ (バイナリ) でなくローカライズファイル (テキスト) を使って作業します。外部チームから、再保存されたコンテンツを受け取る際には十分注意してください。コンテンツパッケージにどのようなプロパティやハックコードが適用されているかは、誰にも分からないものです。

ローカライズが必要なオブジェクトが新規作成されたら、エディタ内で単純に [Full Loc Export] を実行してください。エクスポート時には既存のローカライズデータは既にメモリに格納されているので、これを実行しても既存データが消えることはありません。

Gears of War に関する当社のワークフローでは、最終更新以降に新規作成 (再度エクスポート) されたローカライズオブジェクトやオブジェクトプロパティを翻訳者に示す目的で、International (英語) の個々のローカライズテキスト (.INT) ファイルと、アップデートの 差分 データを付けて提供しました。該当するファイルの各言語バージョンにこれらの新しい文字列をプロパゲートするのは、ローカライズ担当者の責任でした。

別の方法として、ローカライズチームの差分データの処理能力をあまり信用できない場合には、各言語のローカライズテキストファイルを個別にエクスポートすることも可能です。その場合は、エンジン言語をターゲット言語に設定してから、エディタを開いてエクスポートを実行するだけです。

この方法で、生成した INT ファイルを直接翻訳者に送ることができます。Gears of War の場合は、ローカライズチームにローカライズファイルとウォーターマーク付きのビルドを提供し、コンテンツをゲーム内でテストできるようにしました。また、上記で述べた理由からローカライズファイルに加えられた変更のみ受け入れました。

当社では、ローカライズファイルを Excel ファイルなど編集しやすいフォーマットに変換するという追加ステップは行なわず、必要な内部フォーマットへのデータ変換はローカライズチーム側に任せています。

ローカライズされたコンテンツ

テクスチャ

注意: エンジンによるローカライズテクスチャのストリーミングは、デフォルトではサポートされていません。シークフリーパッケージに、クックしたテクスチャへのテクスチャオフセットが格納されているためです。

オーディオ

オーディオのローカライズには設定が必要です。最も簡単な (かつ推奨されている) プロセスでは、すべてのサウンドキューを切り離してパッケージ 'MyGame\Content\Sounds\' に保存し、次にローカライズされたすべてのオーディオウェーブパッケージを、3 文字の言語コードの名前を付けたサブフォルダに保存します。

この設定により、次のような階層ができます。

MyGame\
  Content\
    Sounds\
     MainCharacterVO_cue.upk
     EnemyVO_cue.upk
     INT\
       MainCharacterVO.upk
       EnemyVO.upk
     JPN\
       MainCharacterVO_JPN.upk
       EnemyVO_JPN.upk

ローカライズしたサウンドキューがロードされると、その選択言語に対応するサウンドウェーブがロードされます。これは、サウンドキューを変更する場合でも、一度の編集ですべての言語に一様に適用されることを意味します。

サウンドキューが参照するサウンドウェーブが、認識されている言語コードと一致する 3 文字の名前の付いたサブフォルダにある場合、またはサウンドキューにサブタイトルが存在する場合は、ローカライズされていると判定されます。上記のフォルダレイアウトの場合、すべてがローカライズされていることになります。より具体的な例としては、後述のケーススタディを参照してください。

ムービー

ビデオによっては、対応する .txt ファイルを伴うものがあり、そこで 'Subtitles' ローカライズ テキストファイル内のキーおよびその登場時間との関連付けが行われています。.txt ファイルはサブタイトル専用で、再生されるオーディオとの関係はありません。これらは手動で作成し、適切なタイミング (最初の行は 1 秒あたりのティック数で、残りの行ではその数値を使って各行の開始/終了時間を決定します) を指定する必要があります。

ムービーのオーディオの場合は、Bink ムービーを作成し、すべての言語をチャンネルのコレクションとして一本に編集します。この作業では、front left、front center および front right のトラックをローカライズオーディオにマッピングし直してから、すべての言語に共通するオーディオを rear と subwoofer トラックに割り当てます。

関数 FBinkMovieAudio::SetSoundTracks() は、以下に示すようにスピーカーにマッピングされているチャンネルの配列を返します。

  INT FRA ITA
Front Left 0 6 9
Front Right 1 7 10
Front Center 2 8 11
Subwoofer 3 3 3
Rear Left 4 4 4
Rear Right 5 5 5

UnrealEd のローカライズ

エディタのコントロールのローカライズについては、エディタのローカライズ ページを参照してください。

ケーススタディ:Gears of War のローカライズ

Gears of War では、各キャラクターのオーディオを 3 つのカテゴリーに分類しています。

  1. Dialog -- 専用の台本がある状況で出された会話のせりふ。
  2. Chatter -- 台本なしのゲームプレイ状況でプレーヤーが発した会話のせりふ。例えば、銃が詰まったときのイライラや、敵を倒したときの喜びなど。
  3. Efforts -- 話し言葉を含まないゲームプレイサウンド -- うなり声、叫び声、苦痛の叫びなど。

各カテゴリーはサウンドパッケージに対応します。したがって、Gears のメインキャラクターである Marcus には 3 つのパッケージ (Marcus_Dialog.upk、Marcus_Chatter.upk および Marcus_Efforts.upk) があります。Efforts パッケージには話し言葉を伴うサウンドは含まれていないので、ローカライズが必要なのは Dialog と Chatter だけです。知的な会話をしない特定のキャラクターには Efforts パッケージしかなく、その場合はローカライズされません。

UE3 のサウンドシステムは、サウンドソース (.wav -- Unreal 用語では SoundNodeWave) とサウンドの使用 (SoundCue) を区別します。ローカライズは wave レベルで存在するので、サウンドのローカライズデータは、それを使用するキュー内で wave と共有されることになります。したがって、ローカライズサウンドパッケージをさらに wave パッケージとキューパッケージに分割し、前者には SoundNodeWave オブジェクト、後者には SoundCue オブジェクトのみ格納します。このように区別することで、レベル/アセットが参照するサウンドキューが影響を受けることなく、異なる言語の wave パッケージを入れ替えられるようにしています。

Gears の Marcus キャラクターを例として使うと、キャラクターの完全なパッケージの内訳は以下のようになります。

Marcus_Dialog_Cue -- Marcus の dialog の SoundCue オブジェクトのみ格納するパッケージ。

Marcus_Dialog -- Marcus の英語の dialog の SoundNodeWave オブジェクトのみ格納するパッケージ。

Marcus_Dialog_jpn -- 上記と同じ (日本語)。

.... -- etc. 他の言語用

Marcus_Chatter_Cue -- Marcus の chatter (ゲームプレイ) の SoundCue オブジェクト。

Marcus_Chatter -- Marcus の chatter の 英語の SoundNodeWaves

Marcus_Chatter_jpn -- 上記と同じ (日本語)。 .....

Marcus_Efforts -- Marcus の Efforts の SoundCues と SoundNodeWaves (ローカライズされない)。

コード内では、ロードコードはエンジンの言語設定に基づいてその言語 (ローカライズ) バージョンのパッケージのロードを試みてから、デフォルトの英語言語バージョンをロードします。命名規約は、「_ext」 と接尾語がつけられたローカライズされた言語バージョンのパッケージで、ext は、appGetLanguageExt により返された言語拡張子です。 ローカライズされた言語バージョンがない場合、または、エンジン言語設定が English (「int」またはインターナショナル)の場合は、接尾語のないバージョンのパッケージがロードされます。 これは、「部分的にローカライズされた言語」を可能にします。 -- どの字幕が利用可能か用の言語(SoundNodeWave パッケージの .ini loc エクスポート)ですが、完全にローカライズされたオーディオでは、利用可能ではありません。

言語コード

言語の名前を表すのに使われているコードについては、 http://www.loc.gov/standards/iso639-2/englangn.html を参照してください。

現在の設定は次のとおりです。

INT アメリカ英語 (他の地域の英語とは別)
JPN 日本語 (TTS のサポートなし)
DEU ドイツ語
FRA ヨーロッパ系フランス語 (カナダ系フランス語とは別)
ESM ラテンアメリカ系スペイン語 (モダン?)(.NET、音声認識のサポートなし)
ESN ヨーロッパ系スペイン語 (イベリア?、キャステリア? トラディショナル?)
ITA イタリア語
KOR ハングル語 (TTS のサポートなし)
CHT 繁体字中国語 (音声認識または TTS のサポートなし)
RUS ロシア語 (音声認識または TTS のサポートなし)
POL ポーランド語 (音声認識または TTS のサポートなし)
HUN ハンガリー語 (音声認識または TTS のサポートなし)
CZE チェコ語 (音声認識または TTS のサポートなし)
SLO スロバキア語 (音声認識または TTS のサポートなし)