Как перевести строку в шаблоне Django?

«Как перевести строку в шаблоне Django?» — вопрос из категории Django, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для интернационализации (i18n) строк в шаблонах Django используются теги `{% trans %}` и `{% blocktrans %}`. Перед их использованием необходимо загрузить библиотеку тегов: `{% load i18n %}`. ### 1. Простые строки: `{% trans %}` Используется для перевода статических строк без переменных. ```django {% load i18n %}

{% trans "Welcome to our site!" %}

``` ### 2. Строки с переменными и HTML: `{% blocktrans %}` Этот тег позволяет вставлять переменные и использовать множественные формы (плюрализацию). **С переменной:** ```django {% load i18n %} {% blocktrans with username=user.get_full_name %}

Hello, {{ username }}!

{% endblocktrans %} ``` **С плюрализацией:** ```django {% load i18n %} {% blocktrans count counter=items|length %} Found {{ counter }} item. {% plural %} Found {{ counter }} items. {% endblocktrans %} ``` ### Процесс настройки 1. **Настройте `settings.py`**: Убедитесь, что `django.middleware.locale.LocaleMiddleware` добавлен в `MIDDLEWARE`. 2. **Создайте файлы перевода**: Выполните команду `python manage.py makemessages -l `, например, `makemessages -l de` для немецкого языка. 3. **Заполните `.po` файлы**: В директории `locale/de/LC_MESSAGES/django.po` появятся строки для перевода. ```po #: templates/base.html:5 msgid "Welcome to our site!" msgstr "Willkommen auf unserer Seite!" # <-- Ваш перевод ``` 4. **Скомпилируйте переводы**: Выполните `python manage.py compilemessages`, чтобы создать скомпилированные `.mo` файлы, которые Django использует в работе.