Home
Softono

Dj Translatemessages

Open source MPL-2.0 Python
103
Stars
3
Forks
12
Issues
0
Watchers
4 months
Last Commit

 About Dj Translatemessages

LLM-powered Django translations ✨ Just call me "python manage.py translatemessages"

Platforms

Web Self-hosted

Languages

Python

Need Help Installing Dj Translatemessages?

We provide expert installation service for this software. Our team will install, configure, and secure Dj Translatemessages on your server. plans start at just $30.

Dj Translatemessages

View on GitHub

dj-translatemessages

LLM-powered Django translations ✨ Formerly published as yesglot.

A Django app that autofills missing translations in .po files using an LLM, while respecting ICU format placeholders and source references.

Project story: The birth of yesglot.com explains the background behind yesglot and the rename to dj-translatemessages.

Why dj-translatemessages?

  • 🧠 LLM-powered: works with 100+ LLM models through LiteLLM’s unified API
  • 🔒 Placeholder-safe: keeps {name}, {{handlebars}}, URLs, and emails intact
  • 📦 Django-native: one management command: python manage.py translatemessages
  • 🧮 Cost-aware: prints per-file and total cost (via LiteLLM)
  • 🧱 Token-safe batching: automatically splits work to avoid context overflows

🚀Quick Start

Installation

pip install dj-translatemessages

Version 2.0.0 renames the Django app to dj_translatemessages. If you're upgrading from yesglot, update INSTALLED_APPS and imports accordingly. Migration steps: docs/migration_guideline.md.

Add dj_translatemessages to your Django settings:

INSTALLED_APPS = [
    # ...
    "dj_translatemessages",
]

Configuration

Set the model from 100+ LLM models and API key in your Django settings:

DJ_TRANSLATEMESSAGES_LLM_MODEL = "openai/gpt-4o-mini"
DJ_TRANSLATEMESSAGES_API_KEY = "sk-..."

Usage

A typical workflow with Django translations:

  1. Extract messages into .po files (creates entries with empty msgstr):
python manage.py makemessages -all
  1. Autofill missing translations with dj-translatemessages:
python manage.py translatemessages

Example output:

▶ Translation run started.
Using translation model: openai/gpt-4o-mini

• Language: French [fr]
  - Scanning: locale/fr/LC_MESSAGES/django.po
    Missing entries: 12. Translating…
    Filled 12 entries in 3.21s • Cost: $0.0123

============================================================
Done in 3.76s • Files: 1 • Missing found: 12 • Filled: 12 • Total cost: $0.0123
  1. Compile translations into .mo files (so Django can use them at runtime):
python manage.py compilemessages

Advanced Usage

Optional parameters,

  • DJ_TRANSLATEMESSAGES_SAFETY_MARGIN: 1000 (default)
  • DJ_TRANSLATEMESSAGES_PER_ITEM_OUTPUT: 100 (default)
  • DJ_TRANSLATEMESSAGES_LLM_MODEL_TEMPERATURE: 0 (default)

System Prompt

It is preconfigured, though you may override it to tailor the behavior of your translation.

  • DJ_TRANSLATEMESSAGES_SYSTEM_PROMPT_FUNCTION: for example, "myproject.myapp.utils.get_system_prompt"
  • DJ_TRANSLATEMESSAGES_SYSTEM_PROMPT: string

Default:

You are a professional translator. Translate into the target language.

  • Keep placeholders like {name} / {{handlebars}} unchanged.
  • Keep URLs and emails unchanged.
  • Return ONLY a JSON array of strings in the same order.

Preamble Template

It’s already configured, but you can override it to adjust how your translation behaves.

  • DJ_TRANSLATEMESSAGES_PREAMBLE_TEMPLATE_FUNCTION: for example, "myproject.myapp.utils.get_preamble"
  • DJ_TRANSLATEMESSAGES_PREAMBLE_TEMPLATE: string

Default:

Translate these items into {language}. Return ONLY a JSON array:

License

Mozilla Public License Version 2.0

dj-translatemessages Logo