Supported engine · Ren'Py
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.
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 →
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.
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.
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.
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.