Docs / Django
Traduction des modèles Django, automatisée
Encadrez le texte durcodé dans les templates Django avec les balises translate et blocktranslate, remplissez les catalogues .po gettext et activez LocaleMiddleware, en une seule commande ou demande de tirage.
Comment ça marche
Le texte simple devient {% translate "…" %}; le texte avec variables devient {% blocktranslate with name=user.name %}…{% endblocktranslate %}, et {% load i18n %} est ajouté après {% extends %}.
Les pluriels écrits à la manière de Django, {{ n }} item{{ n|pluralize }}, deviennent {% blocktranslate count count=n %}…{% plural %}…{% endblocktranslate %} avec msgid_plural et une forme par slot Plural-Forms.
Les traductions vont directement dans locale/<lang>/LC_MESSAGES/django.po, indexées par le texte source comme le ferait makemessages : les entrées existantes sont conservées, les vides remplies et les nouvelles ajoutées. Exécutez compilemessages pour les générer. (Le catalogue ci-dessous provient de l'exemple hors ligne, donc ses traductions sont vides.)
Avant et après
La sortie réelle du moteur pour ce fichier. Lors d'une exécution réelle, le modèle hébergé nomme les clés à partir du contexte.
{% 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 ""Ce que l'installation ajoute
La première exécution configure i18n de Django (gettext) si le projet ne l'a pas encore :
USE_I18N = True,LANGUAGESetLOCALE_PATHSdans les paramètresLocaleMiddlewareaprès le middleware de session
Exécutez-le
La CLI nécessite Node.js 22 ou une version ultérieure, rien d'autre : npx l'exécute sans ajouter de package.json au projet. Pas de Node sur votre machine ? L'action GitHub ci-dessous l'exécute pour vous.
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,deOu ajoutez le Action GitHub et recevez une pull request à chaque push. Essayez-le d'abord sur votre propre code dans le playground.