Stop Editing .po Files.
Start Shipping.

Keep locale files updated, error-free, and integrated with your workflow.

$ 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.

Multi-Provider Support

Use any model supported by LiteLLM: GPT-4, Claude 3.5 Sonnet, Gemini Pro, and more. Switch models with a single config change.

Smart Context

Preserves Django placeholders (`%(name)s`), HTML tags, and format strings perfectly. No broken variables in production.

Developer Friendly

Simple CLI interface. Dry-run mode to preview changes. Selective overwriting. Integrates seamlessly into your CI/CD.

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

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

2. Add to INSTALLED_APPS

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

3. Run the command

python manage.py translate --target-lang es