Dokumentation / Django
Django-Vorlagen-Übersetzung, automatisiert
Umwickeln Sie fest codierten Text in Django-Vorlagen mit translate- und blocktranslate-Tags, füllen Sie die gettext .po-Kataloge und aktivieren Sie LocaleMiddleware – alles in einem Befehl oder Pull Request.
Funktionsweise
Einfacher Text wird zu {% translate "…" %}; Text mit Variablen wird zu {% blocktranslate with name=user.name %}…{% endblocktranslate %}, und {% load i18n %} wird nach {% extends %} hinzugefügt.
Pluralformen nach Django-Standard, {{ n }} item{{ n|pluralize }}, werden zu {% blocktranslate count count=n %}…{% plural %}…{% endblocktranslate %} mit msgid_plural und einer Form pro Plural-Forms-Slot.
Übersetzungen gehen direkt in locale/<lang>/LC_MESSAGES/django.po, sortiert nach dem Quelltext wie makemessages: Bestehende Einträge bleiben erhalten, leere werden gefüllt und neue angehängt. Führen Sie compilemessages aus, um sie zu erstellen. (Der unten stehende Katalog stammt aus dem Offline-Beispiel und enthält daher keine Übersetzungen.)
Vorher und nachher
Die tatsächliche Ausgabe der Engine für diese Datei. Bei einer echten Ausführung benennt das gehostete Modell die Schlüssel anhand des Kontexts.
{% 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 ""Was das Setup hinzufügt
Der erste Durchlauf richtet Django i18n (gettext) ein, falls das Projekt es noch nicht hat:
USE_I18N = True,LANGUAGESundLOCALE_PATHSin den EinstellungenLocaleMiddlewarenach dem Session-Middleware
Ausführen
Die CLI benötigt Node.js 22 oder neuer, sonst nichts: npx führt es aus, ohne ein package.json zum Projekt. Kein Node auf Ihrem Rechner? Die GitHub Action unten führt es für Sie aus.
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,deOder fügen Sie die GitHub Action und erhalten Sie bei jedem Push einen Pull Request. Probieren Sie es zuerst mit Ihrem eigenen Code im Spielbereich.