Почему не работает перевод в шаблонах Django?
Проект на Python Django 3.0. Хочу сделать перевод текста как в коде, так и в шаблоне.
Есть все необходимые предустановки:
USE_I18N = TrueLANGUAGES = [ ('uk', 'Ukrainian'), ('en', 'English'), ]LANGUAGE_CODE = 'uk''OPTIONS': {'context_processors': ['django.core.context_processors.i18n', ...]MIDDLEWARE = ['django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', ...]INSTALLED_APPS = [..., 'master', 'administrator']LOCALE_PATHS = [ os.path.join(PROJECT_ROOT, 'apps', 'master', 'locale'), os.path.join(PROJECT_ROOT, 'apps', 'administrator', 'locale'), ]- В шаблонах первым стоит тег
{% load i18n %} - Во всех шаблонах есть тег перевода (
{% translate "some text" %}) 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 шт):
Проект на 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