Documenti / Django
Traduzione automatizzata dei template Django
Incapsula il testo fisso nei template Django nei tag translate e blocktranslate, compila i cataloghi .po di gettext e attiva LocaleMiddleware, in un unico comando o pull request.
Come funziona
Il testo normale diventa {% translate "…" %}; il testo con variabili diventa {% blocktranslate with name=user.name %}…{% endblocktranslate %}, e {% load i18n %} viene aggiunto dopo {% extends %}.
I plurali scritti alla maniera di Django, {{ n }} item{{ n|pluralize }}, diventano {% blocktranslate count count=n %}…{% plural %}…{% endblocktranslate %} con msgid_plural e una forma per ogni slot Plural-Forms.
Le traduzioni vanno direttamente in locale/<lang>/LC_MESSAGES/django.po, indicizzate dal testo sorgente come farebbe makemessages: le voci esistenti vengono mantenute, quelle vuote riempite e quelle nuove aggiunte. Esegui compilemessages per costruirle. (Il catalogo sottostante proviene dall'esempio offline, quindi le sue traduzioni sono vuote.)
Prima e dopo
L'output effettivo del motore per questo file. In un'esecuzione reale, il modello ospitato nomina le chiavi dal contesto.
{% extends "base.html" %}
{% block content %}
<h1>Hi {{ user.first_name }}, welcome back</h1>
<input placeholder="Search products">
{% endblock %}{% extends "base.html" %}
{% load i18n %}
{% block content %}
<h1>{% blocktranslate with first_name=user.first_name %}Hi {{ first_name }}, welcome back{% endblocktranslate %}</h1>
<input placeholder="{% translate 'Search products' %}">
{% endblock %}msgid ""
msgstr ""
"Project-Id-Version: app\n"
"PO-Revision-Date: 2026-11-11 19:53+0000\n"
"Last-Translator: localize.dev <https://uselocalize.dev>\n"
"Language-Team: Spanish\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
msgid "Hi %(first_name)s, welcome back"
msgstr ""
msgid "Search products"
msgstr ""Cosa aggiunge la configurazione
La prima esecuzione imposta I18n di Django (gettext) se il progetto non lo ha ancora:
USE_I18N = True,LANGUAGESeLOCALE_PATHSnelle impostazioniLocaleMiddlewaredopo il middleware di sessione
Eseguilo
La CLI richiede Node.js 22 o versioni successive, nient'altro: npx lo esegue senza aggiungere un package.json al progetto. Non hai Node sulla tua macchina? La GitHub Action qui sotto lo esegue per te.
npx localize-dev login
# Preview, then write the changes
npx localize-dev run --dry-run -l es,fr,de
npx localize-dev run -l es,fr,de
# Or open a pull request instead
npx localize-dev pr -l es,fr,deOppure aggiungi la GitHub Action e ottieni una pull request a ogni push. Provalo prima sul tuo codice nel playground.