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

Supported engine · Ren'Py

Full — rebuilt & played

Ren'Py translator — translate Ren'Py visual novels (source, compiled, archived)

Ren'Py is the dominant Python-based visual novel engine, used for everything from indie kinetic novels to long-running adult VNs. RuneTranslate translates it in three modes: source-driven projects (game/**/*.rpy), compiled-only releases (.rpyc, decompiled via the bundled unrpyc sidecar), and archived-only releases (.rpa, unpacked via the bundled rpatool sidecar with automatic obfuscation-key detection). It extracts say / narration / menu lines plus _() / __() / _p() UI strings. On export, dialogue and menus are applied at runtime: a generated .rpy content-matches each source line (config.say_menu_text_filter) against a game/rt_translations.json map and forces the game's language to your translation — deliberately not Ren'Py's native id-based tl/ blocks, whose ids can't always be reproduced. Only the _() UI strings are written as a real game/tl/translated/translation.rpy block. For non-Latin targets, RuneTranslate bundles a CJK / Thai / Arabic-capable font and routes the game's fonts through config.font_replacement_map so translated text never renders as boxes. Nothing is re-packed — the extra .rpy files and JSON drop into game/ next to the original. Pair with the Supporter-tier Glossary to lock character names and signature terms across long VNs.

Glossary tip for this engine

Ren'Py VNs live and die by character voice — and the heroine being called 'Alice' / 'Aris' / 'Arisu' across three scenes will break a reader's immersion fast. Lock every character name, the protagonist's nickname variants, place names, and any made-up world terminology with the glossary. The mask is provider-agnostic, so whether you're on DeepL for the budget run or Claude for the dialogue-heavy main chapters, your terminology stays identical. Glossary 101 →

Download RuneTranslate for Windows

How to translate Ren'Py

  1. STEP 1

    Open the Ren’Py game folder

    Point RuneTranslate at the folder containing the game executable. Engine detection auto-classifies the project as source-driven (.rpy present), compiled (.rpyc only), or archived (.rpa only). The bundled unrpyc and rpatool sidecars run automatically — no Python install needed.

  2. STEP 2

    Pick target language and provider

    Choose target language (one of 30+ supported) and provider. Anthropic Claude and OpenAI GPT-4o are strongest on Ren'Py dialogue because they preserve tone, register, and onomatopoeia better than statistical MT. DeepL is a solid second choice for long descriptive narration.

  3. STEP 3

    Translate dialogue lines and choice menus

    RuneTranslate extracts every translatable line (dialogue, choice text, screen labels, UI strings) and batches them. Ren'Py-specific tags ([[player_name]], {color=#fff}…{/color}, {b}…{/b}) are masked during translation so the LLM treats them as opaque placeholders, then restored verbatim.

  4. STEP 4

    Export the translated build

    RuneTranslate drops a few small files into game/: an rt_translations.json map and a generated .rpy that content-matches each source line at runtime (config.say_menu_text_filter) and forces the language to your translation, so dialogue and menus display translated without repacking the .rpa. The _() UI strings go to game/tl/translated/translation.rpy, and a CJK / non-Latin font is bundled when the target needs it. Re-running the translator preserves your hand-edited lines.

Supports

  • Source-driven games (game/**/*.rpy)
  • Compiled-only games (.rpyc) via bundled unrpyc
  • Archived games (.rpa) — RPA-2 / 3 / 3.2 / 4.0 + vendor RPA-x.y (auto key-detect) via bundled rpatool
  • Say / narration / menu lines plus _() / __() / _p() UI strings
  • Ren'Py interpolation tags ([[var]], {color}, {b}, {i}, {size}) preserved
  • Runtime content-match apply + forced language, plus a bundled CJK / non-Latin font (config.font_replacement_map) — no repack

Limitations

  • Archives with a genuinely non-standard container, or a key not derivable from the archive itself, aren't supported
  • Renpy 6.x and earlier (pre-Python-3) not tested

Related reading

The full Ren'Py translation walkthrough
Read the guide →

Related reading

RuneTranslate vs Translator++
Read the guide →

Other supported engines

GettextRPG MakerRPG Maker XP/VX/AceKirikiriWolf RPGTyranoBuilderElectron VNUnityBakinSRPG StudioNScripterGodotArtemisYU-RISAliceSoftUnrealLiveMaker