対応エンジン · Unreal Engine
Unreal Engine は、巨大で成長を続ける日本のゲームライブラリを支えており — RPG Maker や Ren'Py のタイトルとはまったく異なる方法でパックします。Unreal は翻訳可能なインターフェーステキスト(メニュー、システムメッセージ、アイテム名、スキル名、字幕)をコンパイル済みの .locres ローカライズファイルに保持し、1つ以上の .pak アーカイブ — しばしば AES-256 暗号化・Oodle 圧縮 — にバンドルし、そしてモダンな UE5 ではルーズな pak ではなく IoStore の .utoc / .ucas コンテナ内に保持します。RuneTranslate はそのすべてを読みます。.pak 形式を純粋な TypeScript で解析し、出荷された .exe をスキャンして自動復元したキー(または貼り付けたキー)でアーカイブを復号し、翻訳元の言語の .locres エントリーを読み、すべての文字列を一覧します。UE5 IoStore のゲームでは、同梱の retoc(オープンソースの MIT IoStore ツール)でコンテナを展開します。任意のプロバイダーで翻訳し、エクスポート時に RuneTranslate は翻訳を .locres に書き戻し、小さな非暗号化のオーバーライド pak — Unreal が最後にマウントして元のテキストを透過的に置き換えるよう _P「パッチ」サフィックス付きで命名 — を出荷します。再署名も、ゲームの数ギガバイトの再パックもありません。これは新たに追加されたベストエフォートのエンジンです:.locres はゲームの UI / メニュー / システム / 字幕テキストの大半をカバーしますが、DataTables やクックされた .uasset ブロブにコンパイルされたセリフは対象外で、共有する前に翻訳済みビルドをゲーム内で検証してください。ソース言語は既定で日本語ですが、プロジェクトごとに設定可能(中国語、韓国語、英語など)です。
Unreal の .locres テキストは namespace + key でキー付けされ、同じアイテム、スキル、キャラクター名が多くのエントリーにまたがって再登場します。繰り返される用語を最初に用語集へ登録し、すべてのメニューとツールチップで一貫して表示されるようにしましょう。 用語集の基本 →
.exe と <Game>/Content/Paks フォルダー内の .pak(および/または UE5 IoStore の .utoc / .ucas)アーカイブを含むゲームディレクトリを RuneTranslate に指定します。エンジン検出は Unreal の pak フッターと IoStore コンテナを自動認識します;元のファイルは決して変更されません。
pak が AES 暗号化されている場合、RuneTranslate は出荷された .exe をスキャンしてキーを自動復元します — または New Project ダイアログで貼り付けられます(暗号化タイトルはしばしば modding wiki でキーを公開しています)。非暗号化のゲームには何も必要ありません。UE5 IoStore コンテナは同梱の retoc サイドカーで展開されます。
RuneTranslate はソース言語の .locres から翻訳可能なすべての文字列 — メニュー、システムテキスト、アイテム / スキル名、字幕 — を一覧し、Unreal の {0} / {Arg} フォーマットトークンと <RichText> マークアップはプレースホルダーの背後にマスクされ、プロバイダーが壊せません。DeepL、LLM(OpenAI / Anthropic)、無料の Google Translate、またはローカルモデルで翻訳;オプションの AI リファイナーによる 2 回目のパスが言い回しを引き締めます。
エクスポート時、RuneTranslate は翻訳を .locres に書き戻し、小さな非暗号化のオーバーライド pak(_P パッチサフィックス付きで命名)— 加えて短い README — を作成します。数ギガバイトのゲーム全体をコピーすることは決してありません。
_P.pak をゲームの Content/Paks フォルダーにコピーして起動します。Unreal はパッチ pak を最後にマウントするため、元のテキストをあなたの翻訳で置き換えます — 再署名も AES キーも不要です。共有する前に、メニューがゲーム内で正しく読めることを確認してください。