Free Localization Tool That Saved Our Sanity

Hey fellow devs,

We just finished localizing our game and wanted to share a heads-up that could save you a ton of time, money, and unnecessary frustration.

Like many others, we saw posts and articles recommending PoEdit for handling .po files. So, we gave it a shot.

What we didn’t expect was:

  • Being auto-enrolled in a subscription the moment we paid
  • No clear way to disable auto-renewal
  • An intentionally vague “cancel membership” button that didn’t clarify anything
  • And when we emailed support for help, they hit us back with a weirdly rude, condescending reply and just… deleted the account.

Total mess.

And this was after trying 10+ other tools that were either:
:cross_mark: Inaccurate
:snail: Slow
:lady_beetle: Buggy
:money_with_wings: Or way overpriced for what they did

:collision: BUT HERE’S THE GOOD NEWS:

We found an absolute legend of a dev who made this free tool:
:backhand_index_pointing_right: Free Online PO Translator – Aaron's Flashcards

:white_check_mark: No account required
:white_check_mark: No credit card
:white_check_mark: No BS
:white_check_mark: Just paste your .po file and boom — full machine translation in seconds
:white_check_mark: Supports Unreal, Unity, Godot
:white_check_mark: Even lets you edit raw entries on the fly

This tool saved us hours of work. It’s 100% free. No shady hooks.
We’ve already added the dev to our game’s credits as a thank-you.

:hammer_and_wrench: Our Workflow (Step-by-Step)

This is exactly how we used it to translate 13 languages for our game:

1. Export your .po file

  • Use the Localization Dashboard in Unreal Engine to export your .po file.
  • Open it in a text editor like VS Code or Notepad++.

2. Separate the header

  • Cut the top section (the .po header) and paste it into a separate text file.
  • Save that — you’ll reattach it later.

3. Paste into PO Translator

4. Be patient if it freezes

  • Chrome might say “This page is unresponsive.” Just hit Wait and let it cook.
  • Depending on size, it might translate in chunks. Watch for:
    • Sending data to be translated…
    • Then: Please check the results.
  • When the number of “check results” matches the “sending data” messages, you’re done.

5. Retry if needed

  • Paste the full translated result back into Box #1.
  • It will show how many entries still need translating.
  • Click Translate again until all are done.
  • Sometimes a few won’t translate (proper nouns, etc.) — fix those manually.

6. Reattach the header

  • Paste the header back on top of the translated .po content.
  • Save your final translated file.

7. QA the result

  • We pasted our .po into ChatGPT to catch grammar issues and fix awkward lines.
  • Also watch for Shift+Enter returns (Unreal allows them, but they break translation).
    • We replaced return lines with multiple text blocks where needed.

8. Import & Compile

  • Back in Unreal, import the translated file.
  • Run Gather Text and then Compile Translations.
  • Done!

:light_bulb: Bonus Tip:

If you export again later with new entries, the tool will only translate new messages.
So you can safely paste a new .po file into it, and it’ll leave old translations alone.

We used this to handle all 13 of our global launch languages — and it absolutely saved our butts.

Hope this helps someone else dodge the same localization landmines. Keep making awesome stuff, dev friends! :flexed_biceps::unicorn::fire:

(We’re not affiliated with the tool’s dev — just grateful and wanted to pay it forward.)