الوثائق / Django
ترجمة قوالب Django، آلية
قم بتغليف النصوص الثابتة في قوالب Django بعلامات translate و blocktranslate، واملأ كتالوجات gettext .po، وقم بتشغيل LocaleMiddleware، في أمر واحد أو طلب سحب واحد.
كيف يعمل
يصبح النص العادي {% translate "…" %}؛ يصبح النص الذي يحتوي على متغيرات {% blocktranslate with name=user.name %}…{% endblocktranslate %}، ويتم إضافة {% load i18n %} بعد {% extends %}.
تصبح صيغ الجمع المكتوبة بطريقة Django، {{ n }} item{{ n|pluralize }}، {% blocktranslate count count=n %}…{% plural %}…{% endblocktranslate %} مع msgid_plural وشكل لكل خانة Plural-Forms.
تذهب الترجمات مباشرة إلى locale/<lang>/LC_MESSAGES/django.po، مفهرسة بالنص المصدر كما سيفعل makemessages: يتم الاحتفاظ بالإدخالات الموجودة، وملء الإدخالات الفارغة وإلحاق الإدخالات الجديدة. قم بتشغيل compilemessages لبنائها. (الكتالوج أدناه من المثال غير المتصل بالإنترنت، لذا فإن ترجماته فارغة.)
قبل وبعد
المخرجات الحقيقية للمحرك لهذا الملف. في تشغيل حقيقي، يقوم النموذج المستضاف بتسمية المفاتيح من السياق.
{% 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 ""ما يضيفه الإعداد
الإعداد الأول يقوم بإعداد الترجمة الدولية لـ Django (gettext) إذا لم يكن المشروع يحتوي عليه بعد:
USE_I18N = TrueوLANGUAGESوLOCALE_PATHSفي الإعداداتLocaleMiddlewareبعد برنامج الوسيط للجلسة
قم بتشغيله
يتطلب CLI إصدار Node.js 22 أو أحدث، لا شيء آخر: npx يقوم بتشغيله دون إضافة package.json إلى المشروع. لا يوجد Node على جهازك؟ إجراء GitHub أدناه يقوم بتشغيله لك.
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,deأو أضف إجراء GitHub واحصل على طلب سحب عند كل دفعة. جربه على الكود الخاص بك أولاً في ملعب.