Почему не работает перевод в шаблонах Django?

Проект на Python Django 3.0. Хочу сделать перевод текста как в коде, так и в шаблоне.

Есть все необходимые предустановки:

  1. USE_I18N = True
  2. LANGUAGES = [ ('uk', 'Ukrainian'), ('en', 'English'), ]
  3. LANGUAGE_CODE = 'uk'
  4. 'OPTIONS': {'context_processors': ['django.core.context_processors.i18n', ...]
  5. MIDDLEWARE = ['django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', ...]
  6. INSTALLED_APPS = [..., 'master', 'administrator']
  7. LOCALE_PATHS = [ os.path.join(PROJECT_ROOT, 'apps', 'master', 'locale'), os.path.join(PROJECT_ROOT, 'apps', 'administrator', 'locale'), ]
  8. В шаблонах первым стоит тег {% load i18n %}
  9. Во всех шаблонах есть тег перевода ({% translate "some text" %})
  10. path('i18n/', include('django.conf.urls.i18n')),

После этого всего ввожу команду django-admin makemessages --locale=uk --extension=html,txt,py

В файле django.po нет никаких строк из шаблонов, а при запуске сервера и входе на страницу с переводом выбивает ошибку:

Invalid block tag on line 32: 'translate', expected 'endblock'. Did you forget to register or load this tag?

При чём перевод из кода есть и успешно переводится.


Ответы (2 шт):

Автор решения: R7RBD

Проект на Python Django 3.0.

Во всех шаблонах есть тег перевода ({% translate "some text" %})

Тег {% translate "some text" %} только в версии Django 3.1 до этого использовался

Тег {% trans "some text" %}

Решений два или использовать

{% trans "some text" %}

или обновиться до Django 3.1 или новее

Тут можно почитать подробнее: https://djangodoc.ru/3.1/topics/i18n/translation/#translate-template-tag

→ Ссылка
Автор решения: Андрей

У меня по-другому настроен проект, в папке с приложением не храниться папка с шаблонами.

Насколько я понял, django-admin makemessages ищет в папке, в которой создаётся файлы шаблонов, а раз её нет, то и нечему заноситься в файл django.po

→ Ссылка