@fovka

Как сделать интернационализацию в шаблонах Django?

Хочу сделать сайт на Django доступным на втором языке.
Прописываю в settings.py
MIDDLEWARE = [
   ...
    'django.middleware.locale.LocaleMiddleware',
]

LANGUAGE_CODE = 'en-us'

LANGUAGES = (
    ('en', 'English'),
    ('nl', 'Dutch'),
)

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)


Далее во views.py
from django.utils.translation import ugettext as _
...
context = {
"variable": _("value")
...
}

И в таком случае при запуске команды django-admin makemessages -l nl в папке locale создается каталог с файлом django.po и в нем есть мой контекст для перевода. Все хорошо.

Но часть текста на сайте вылезает не из context, а физически забита в шаблон. Пытаюсь перевести эту часть, прописывая в шаблоне:
{% load i18n %}
....

{% trans "My text for translation" %}

И вот этот текст из шаблона, при выполнении django-admin makemessages -l nl уже в django.po не попадает. Его как будто и нет. Соответственно и перевод для него писать некуда.

Что делаю не так?
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
@fovka Автор вопроса
Проблему решил. Удалил автоматическую папку locale, после чего запустил django-admin makemessages -l nl не из папки с manage.py, а из корневой директории проекта. Все теперь отобразилось.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы