Stop Editing .po Files.
Start Shipping.

One command. All your languages. Pennies per translation. No subscriptions, no portals, no copy-paste.

PyPI Downloads GitHub stars
$ python manage.py translate --target-lang fr
â„šī¸ Found 45 untranslated entries
🔄 Translating with gpt-4o-mini...
✓ Translated 'Welcome back, %(username)s'
✓ Translated 'Your subscription expires on %s'
✓ Translated 'Settings'
... 42 more entries ...
✨ Successfully updated locale/fr/django.po

Why TranslateBot?

Built for developers who value their time.

Incremental & Efficient

Only translates new and changed strings. Batches API requests to keep token costs low. Add 10 strings, pay for 10 strings.

Consistent & Context-Aware

TRANSLATING.md gives your AI a version-controlled glossary. Same terminology every run, across every language.

Placeholder-Safe

Preserves %(name)s, {0}, %s, and HTML tags. 100% test coverage on format string handling.

How it Works

1

Make Messages

Run standard Django makemessages to generate .po files.

2

Translate

Run translatebot to fill in empty msgstr entries with AI.

3

Compile

Run compilemessages and deploy your app.

Get Started in Seconds

1. Install the package

uv add --dev translatebot-django
poetry add --group dev translatebot-django
pip install translatebot-django

2. Add to INSTALLED_APPS

# settings.py
INSTALLED_APPS = [
    ...
    "translatebot_django",
]

3. Run the command

python manage.py translate --target-lang fr