Free, open-source, and available in EN / FR / ES

Translate Ren'Py games without breaking a single tag or variable.

Ren'Py Translator GUI scans your game's dialogue, keeps Ren'Py syntax intact, writes proper game/tl/<lang>/ files, and handles both source projects and packaged releases — all from one clean desktop app.

downloads
latest release tag
GitHub stars
Ren'Py Translator main window, showing an analyzed project ready to translate
App UI: EN / FR / ES
100% free & open-source
What it does

A focused translator built for real Ren'Py projects.

The app is built around the parts that usually make visual novel localization fragile: script scanning, Ren'Py syntax safety, generated tl folders, and packaged game workflows.

Script scanning

Reads every visible .rpy and .rpym file, then counts dialogue, narration, and menu choices before translation starts.

Packaged games

Creates a separate workspace for games shipped as .rpa archives with compiled .rpyc scripts, so your original install stays untouched.

Multiple engines

Choose LibreTranslate (public or local), Argos Translate offline, or bring your own Google Translate / DeepL API key.

Ren'Py-safe output

Text tags, interpolations, and formatting placeholders are kept stable so translated builds are far less likely to crash.

Correct tl folders

Generates the expected game/tl/<language>/ structure, including the runtime helper files Ren'Py needs to load it.

Review and restore

Automatic .rpy.bak backups, a side-by-side before/after diff, and one-click restore whenever you need a clean slate.

Getting started

How to download and launch the app

No account, no installer, no hidden setup. Four steps and you're looking at your game's scripts.

1

Download the .exe

Grab the latest RenPyTranslator.exe from the GitHub Releases page below. No Python required.

2

Launch it

Double-click the file. If Windows SmartScreen appears, click "More info" only if you trust the release source.

3

Choose your game

Click "Choose game" and select the folder that contains your project's game/ directory.

4

Analyze & translate

Click Analyze, pick your languages, then Translate. That's the whole workflow.

Ren'Py Translator on first launch, before a project is loaded

This is what you'll see on first launch

  • 1
    Project card"Choose game" opens a folder picker — pick the project root, not a specific file.
  • 2
    Translation settingsPick an engine, an endpoint or API key, and your source/target languages.
  • 3
    ActionsAnalyze, Translate, Restore, View changes and Apply light up as each step becomes available.

Recommended: latest release

The counters below are pulled live from GitHub and cover every asset download on the latest release.

asset downloads
latest release tag
Windows 10/11 supported OS

Developer / source install

Want to run the Python source, edit the app, or build your own executable? Use this instead.

PowerShell / terminal
git clone https://github.com/AnwarAllal23/renpy-translator-gui.git
cd renpy-translator-gui

python -m venv .venv
.venv\Scripts\activate

pip install -r requirements.txt
python entrypoint.py

On macOS or Linux, activate the virtual environment with source .venv/bin/activate instead.

Step by step

Analyze, translate, and review — with real screenshots

A source Ren'Py project and a packaged game need slightly different handling. Pick the tab that matches your game folder.

  • 1. Choose game. Select the project root — the folder that contains game/.
  • 2. Analyze. The app scans every .rpy/.rpym file and lists a dialogue count per file in the tree on the left.
  • 3. Pick languages & engine. Source language, target language, then LibreTranslate, Argos, Google or DeepL.
  • 4. Translate. Backs up every script to .rpy.bak, then writes game/tl/<lang>/.
  • 5. Play & switch language. Launch the game and pick the new language from Ren'Py's own Preferences screen.
Analyzed Ren'Py project with per-file dialogue counts

Real capture: a small sample project after Analyze — status icons and dialogue counts appear per file, and Translate lights up once strings are found.

  • 1. Choose game anyway. Select the installed game's root folder, even though there are no .rpy files to see.
  • 2. Prepare packaged game. Tools → Prepare packaged game copies everything into a workspace, extracts .rpa archives, and decompiles .rpyc scripts on a best-effort basis.
  • 3. Analyze → translate. Same as a normal project, but everything happens inside the workspace copy — your install isn't touched yet.
  • 4. Apply to original game. Copies the generated game/tl/<lang>/ folder back into your real game folder.
  • 5. Missing rpycdec? If decompilation fails, install Python and run pip install rpycdec, then try again.

Your original install stays safe

Preparation always happens in a separate workspace under your user profile. The real game folder is only ever modified when you explicitly click "Apply to original game".

Before you trust it

Review every changed line before you ship

Tools → View changes opens a side-by-side diff pulled straight from the .bak backups — no guessing what actually changed.

  • 1
    Modified filesEvery script with a detected change is listed on the left.
  • 2
    Character / Original / TranslatedEach row shows exactly what changed, line by line.
  • 3
    Not happy with it?Tools → Restore originals rolls every script back to its pre-translation state.
Diff view comparing original English dialogue to translated French dialogue
Ren'Py safety rules

The parts that never get translated, on purpose

Ren'Py strings often carry tags, variables, and formatting markers. Changing them can crash the game, so the app treats them as protected text.

Text tags stay intact

Style and display tags keep the same spelling and order in the output.

{i}…{/i}{color=#fff}

Variables stay intact

Player names and dynamic values inside brackets are never translated.

[player_name][score]

Percent formats stay intact

Format placeholders are preserved, and a literal percent sign is escaped automatically.

%s%(name)s
Local translation setup dialog with the Docker command for LibreTranslate
For large games

Run LibreTranslate locally when the public server is too slow

The public endpoint is fine for a quick test, but a local Docker container gives long visual novels an unlimited, steady translation server.

Docker command
docker run -p 5000:5000 libretranslate/libretranslate --load-only en,fr,es,de,it,pt,ja,zh,ar,ru --disable-web-ui
  • 1
    Click "Local (advanced)" next to the endpoint field in the app.
  • 2
    Once Docker finishes starting, click "Test connection".
  • 3
    Click "Use localhost" and translate as usual — Settings → Use public endpoint switches back anytime.
Speak your language

The app switches language too — not just this website

Settings → Preferences lets you flip the entire interface between English, French, and Spanish in one click.

Settings dialog in English English Default language
Settings dialog in French Français Built into the app
Settings dialog in Spanish Español Built into the app
Troubleshooting

Common questions before opening an issue

Where does the translation appear?

The app writes translated files into game/tl/<language>/. Start the game and choose that language from the Ren'Py preferences menu if the game exposes one.

Does it modify my original packaged game?

No — preparation happens in a separate workspace first. The original game is only updated when you click "Apply to original game".

Can I undo a translation?

For source projects, yes: the app creates .rpy.bak backups and includes a restore action. For packaged games, keep your original installer or game folder as a fallback.

Why is the public translation endpoint slow?

Public LibreTranslate servers are shared and can be rate-limited. Use the local Docker setup above for big projects or repeated translation passes.

Is the app really free?

Yes. Ren'Py Translator GUI is open-source under the MIT license — free to use, modify, and redistribute.

Which languages can I translate to?

Any pair among English, French, Spanish, German, Italian, Portuguese, Japanese, Chinese, Arabic, and Russian, depending on the engine you pick.

Ready to translate your Ren'Py game?

Download the latest release, select the folder that contains game/, then let the app analyze before you translate anything.

Download latest release