EnginesGuidesFAQPatreonDiscordDownload
Sign in
RuneTranslate · translate Japanese games end-to-end
EnginesGuidesCompareImage textSave editorCheat ModeFAQDownloadPatreonDiscordYouTubePrivacyTermsContact
All engines

Supported engine · Unreal Engine

Best-effort — verify per game

Unreal Engine translator — translate UE4 / UE5 games end-to-end

Unreal Engine powers a huge and growing library of Japanese games — and packs them very differently from an RPG Maker or Ren'Py title. Unreal keeps its translatable interface text (menus, system messages, item and skill names, subtitles) in compiled .locres localization files, bundled inside one or more .pak archives — frequently AES-256 encrypted and Oodle-compressed — and, on modern UE5, inside IoStore .utoc / .ucas containers instead of loose paks. RuneTranslate reads all of it. It parses the .pak format in pure TypeScript, decrypting the archive with a key it recovers automatically by scanning the shipping .exe (or one you paste), reads the .locres entry for the language you're translating from, and lists every string. For UE5 IoStore games it unpacks the containers with a bundled copy of retoc (the open-source MIT IoStore tool). You translate with any provider, and on export RuneTranslate writes the translations back into the .locres and ships a small, unencrypted override pak — named with the _P 'patch' suffix so Unreal mounts it last and transparently replaces the original text, with no re-signing and no multi-gigabyte repack of the game. This is a newly added, best-effort engine: .locres covers the bulk of a game's UI / menu / system / subtitle text, but dialogue compiled into DataTables or cooked .uasset blobs is out of scope, and you should verify the translated build in-game before sharing. Source language is Japanese by default but configurable per project (Chinese, Korean, English, and more).

Glossary tip for this engine

Unreal .locres text is keyed by namespace + key, and the same item, skill, or character name recurs across many entries. Glossary your recurring terms first so every menu and tooltip renders them consistently. Glossary 101 →

Download RuneTranslate for Windows

How to translate Unreal Engine

  1. STEP 1

    Open the Unreal game folder

    Point RuneTranslate at the game directory — the folder containing the .exe and a <Game>/Content/Paks folder of .pak (and/or UE5 IoStore .utoc / .ucas) archives. Engine detection recognises the Unreal pak footer and IoStore containers automatically; your original files are never modified.

  2. STEP 2

    Unlock the archives (AES key auto-detected)

    If the paks are AES-encrypted, RuneTranslate recovers the key automatically by scanning the shipping .exe — or you can paste it (encrypted titles often publish their key on modding wikis) in the New Project dialog. Unencrypted games need nothing. UE5 IoStore containers are unpacked with the bundled retoc sidecar.

  3. STEP 3

    Translate the .locres text

    RuneTranslate lists every translatable string from the source-language .locres — menus, system text, item / skill names, subtitles — with Unreal’s {0} / {Arg} format tokens and <RichText> markup masked behind placeholders so a provider can’t mangle them. Translate with DeepL, an LLM (OpenAI / Anthropic), free Google Translate, or a local model; an optional AI-refiner second pass tightens phrasing.

  4. STEP 4

    Export an override pak

    On export, RuneTranslate writes your translations back into the .locres and builds a small, unencrypted override pak (named with the _P patch suffix) — plus a short README. It does NOT copy the whole multi-gigabyte game.

  5. STEP 5

    Drop it in + verify

    Copy the _P.pak into the game’s Content/Paks folder and launch. Unreal mounts patch paks last, so it replaces the original text with your translation — no re-signing or AES key needed. Confirm the menus read correctly in-game before sharing.

Supports

  • .locres localization read + written in pure TypeScript (versions 0–3), preserving every hash
  • .pak archives parsed in pure TS — legacy and v10+ (FullDirectoryIndex), zlib / gzip
  • AES-256 encrypted paks: key auto-recovered from the shipping .exe, or pasted manually (hex / base64)
  • UE5 IoStore .utoc / .ucas containers unpacked via a bundled retoc sidecar (handles Oodle)
  • Output is a tiny override _P.pak that mounts last — no re-signing, no full game repack
  • Unreal Engine 4 and 5

Limitations

  • Newly added + best-effort: verify the translated build in-game before redistributing
  • Scope is .locres (UI / menu / system / subtitle text) — the ~90% of player-facing text
  • Dialogue compiled into DataTables or cooked .uasset blobs is out of scope
  • Oodle-compressed loose paks need the IoStore sidecar (or the game’s own oo2core DLL); IoStore games are covered
  • Signing-enforced paks (rare) can’t be overridden, and non-Latin targets depend on the game shipping a capable font

Other supported engines

GettextRPG MakerRen'PyKirikiriWolf RPGTyranoBuilderElectron VNUnityBakinSRPG StudioNScripterGodotArtemisYU-RISAliceSoftLiveMaker