# LLM-powered Django translations: Yesglot

**URL:** <https://forum.djangoproject.com/t/llm-powered-django-translations-yesglot/42689>\
**Category:** Show & Tell\
**Created:** [August 25, 2025, 10:19pm UTC](https://forum.djangoproject.com/t/llm-powered-django-translations-yesglot/42689 "2025-08-25T22:19:51Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![efe](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/efe/32/23803_2.png) [@efe](https://forum.djangoproject.com/u/efe)\
**Post date:** [August 25, 2025, 10:19pm UTC](https://forum.djangoproject.com/t/llm-powered-django-translations-yesglot/42689/1 "2025-08-25T22:19:51Z")

</div>

Hey everyone!

> No more forgotten translations. Run python manage.py translatemessages and let yesglot fill your .po files: [https://github.com/efe/yesglot](https://github.com/efe/yesglot "https://github.com/efe/yesglot")

I built a Django package called [yesglot](https://github.com/efe/yesglot) that uses LLMs to translate your `.po` files automatically. I’ll be talking about Django translations and this package at **PyCon Greece 2025** , but wanted to share it here first and get your thoughts.

## What it does

You know how when you run `makemessages`, you get all those empty `msgstr` entries that you have to fill in? Yesglot fills them in for you using any LLM model like ChatGPT or Claude Sonnet.

## Why I made this

I got tired of uploading `.po` files to translation portals and downloading them back - the developer experience was just awful and recent LLMs are actually pretty talented at translations.

## How it works

Same Django workflow, but with one extra step:

```auto
# 1. Extract messages (normal Django)
python manage.py makemessages -all

# 2. Fill missing translations with LLM (new with yesglot)
python manage.py translatemessages

# 3. Compile messages (normal Django)  
python manage.py compilemessages

```

When you run `translatemessages`, you’ll see something like:

```auto
▶ 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

```

- Works with 100+ AI models (OpenAI, Claude, Gemini, local models, etc.)
- Handles large projects by splitting them into batches
- Shows you exactly how much each translation costs

## What’s next

I’m still working on it and would love feedback. Planning to talk more about Django i18n workflows and this tool at [PyCon Greece 2025](https://2025.pycon.gr/en/program/schedule/).

**Questions for you:**

- How do you handle translations in your Django projects?

- Would something like this be useful for your workflow?

- Any features you’d want to see?

Try it out and let me know what you think!

---

<div class="post-metadata">

**Author:** ![qvisty](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/qvisty/32/4818_2.png) [@qvisty](https://forum.djangoproject.com/u/qvisty)\
**Post date:** [August 26, 2025, 4:29pm UTC](https://forum.djangoproject.com/t/llm-powered-django-translations-yesglot/42689/2 "2025-08-26T16:29:45Z")

</div>

Sounds really great. I image this will end up being built in and automatic somehow in the future…

Without much experience with django translation, would it be possible to combine the three commands into one with three steps?

---

<div class="post-metadata">

**Author:** ![efe](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/efe/32/23803_2.png) [@efe](https://forum.djangoproject.com/u/efe)\
**Post date:** [August 26, 2025, 10:46pm UTC](https://forum.djangoproject.com/t/llm-powered-django-translations-yesglot/42689/3 "2025-08-26T22:46:59Z")

</div>

> [@qvisty](#):
>
> Without much experience with django translation, would it be possible to combine the three commands into one with three steps?

Hello, thanks! Yes, you can run all of them in GitHub Actions sequentially, or in your local environment.
