EnginesGuidesFAQPatreonDiscordDownload
Sign in
RuneTranslate · translate games from Japanese and 30+ languages
EnginesGuidesCompareImage textSave editorCheat ModeFAQDownloadChangelogTrustpilotPatreonDiscordYouTubePrivacyTermsContact
All engines

Supported engine · Gettext (.po / .mo)

Full — rebuilt & played

PO file translator — translate gettext .po and .mo game catalogs

Gettext is how most non-Japanese indie games get localized: Python and pygame games, Solarus, SDL and GTK games, and anything run through Poedit, Weblate or Crowdin. The strings live in a locale folder as .po sources and compiled .mo catalogs. RuneTranslate detects them at project creation, translates every string, and writes back a working .mo — which is the file the running game actually reads.

Glossary tip for this engine

Gettext catalogs are mostly UI: menu items, button labels, tooltips and status lines that repeat across screens. Add your product nouns, item names and key verbs to the glossary once and every occurrence renders identically — which matters more here than in dialogue, because a menu that says “Save” in one place and “Store” in another reads as a bug. Glossary 101 →

Download RuneTranslate for Windows

How to translate Gettext (.po / .mo)

  1. STEP 1

    Open the game folder

    Point RuneTranslate at the game directory — the one containing a locale/, lang/ or i18n/ folder. Detection looks for catalogs by their actual bytes, not their extension, so a stray .mo that is really a 3D scene file is ignored. A folder of loose .po files works too.

  2. STEP 2

    Check what was found

    The New Project dialog reports how many catalogs were read, how many are compiled .mo versus source .po, which locales the game already ships, and the total string count — before you commit to creating the project.

  3. STEP 3

    Pick your language and provider

    Choose a target language and a provider: free Google or DeepL, or your own DeepL, OpenAI, Claude or DeepSeek key. Format placeholders — %s, %d, %(player)s, {count} — are masked before translation and restored after, so a provider cannot drop or reword them.

  4. STEP 4

    Review in the editor

    Strings are grouped by catalog file. Each entry keeps its gettext context (msgctxt), which is the disambiguation the developer wrote for exactly that string — so you can see why the same word appears twice and translate each correctly.

  5. STEP 5

    Export a playable build

    Export writes a full copy of the game with a proper locale/<your language>/LC_MESSAGES/ catalog AND an updated version of the catalog the game was already loading, so the translation appears however the game chooses its language. Both .po and compiled .mo are written.

Supports

  • Compiled .mo catalogs — read and written, both byte orders, verified against 43 real catalogs and 93,717 entries
  • Source .po files, including plural forms, msgctxt contexts, flags and translator comments
  • The canonical locale/<lang>/LC_MESSAGES/<domain>.mo layout, and flat layouts like lang/tr.po
  • Plural forms re-fitted to the target language (English 2 forms → Russian 3 → Japanese 1) with the header rewritten to match
  • Printf and brace placeholders (%s, %d, %(player)s, {count}, {0}) masked during translation and restored after
  • Export writes both the new locale and an overwrite of the catalog the game already loads

Limitations

  • Verify the exported game launches and reads correctly before you rely on it
  • Only text that is already in a catalog is translated — strings the developer never passed through gettext are not in the .po/.mo and cannot be found there
  • The msgid is treated as the source text, which is the gettext contract; a catalog whose msgids are English while the real source language sits in msgstr will translate from the English
  • Games built on an engine RuneTranslate supports directly (Godot, Unity, Ren’Py…) are handled by that engine instead, so the rest of their text is reachable too
  • Untranslated entries keep whatever translation the game already shipped rather than being blanked

Related reading

The full Gettext (.po / .mo) translation walkthrough
Read the guide →

Related reading

RuneTranslate vs Translator++
Read the guide →

Other supported engines

RPG MakerRPG Maker XP/VX/AceRen'PyKirikiriWolf RPGTyranoBuilderElectron VNUnityBakinSRPG StudioNScripterGodotArtemisYU-RISAliceSoftUnrealLiveMaker