Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

7.2 Перевод моделей и форм
4 из 4 шагов пройдено

Перевод собственного исходного кода


Отредактируйте файл settings.py проекта, импортировав функцию gettext_lazy() и изменив настроечный параметр LANGUAGES, как показано ниже, чтобы переводить названия языков:

from django.utils.translation import gettext_lazy as _
# ...

LANGUAGES = [
    ('en', _('English')),
    ('ru', _('Russian')),
]


Здесь вместо функции gettext() используется функция gettext_lazy(), чтобы избежать циклического импорта, тем самым переводя названия языков при доступе к ним.

Откройте оболочку и выполните следующую команду из каталога проекта:

django-admin makemessages --all --ignore venv

Вы должны увидеть такой результат:


Взгляните на каталог locale\. Вы должны увидеть файловую структуру, подобную следующей ниже:

Для каждого языка создан файл сообщений .po.

С помощью текстового редактора откройте ru\LC_MESSAGES\django.po. В конце файла вы увидите следующее:

#: django_htmx/settings.py:108
msgid "English"
msgstr ""

#: django_htmx/settings.py:109
msgid "Russian"
msgstr ""


Каждому переводному строковому литералу предшествует комментарий, показывающий детальную информацию о файле и строковый литерал, в котором он был найден. Каждый перевод включает два строковых литерала:

  • msgid: переводной строковый литерал в том виде, в каком он представлен в исходном коде;
  • msgstr: языковой перевод, который по умолчанию пуст. Здесь нужно ввести фактический перевод данного строкового литерала.


Заполните переводы msgstr данного строкового литерала msgid, как показано ниже:

#: django_htmx/settings.py:108
msgid "English"
msgstr "Английский"

#: django_htmx/settings.py:109
msgid "Russian"
msgstr "Русский"


Сохраните видоизмененный файл сообщения, откройте оболочку и выполните такую команду:

django-admin compilemessages --ignore venv


Если все пройдет хорошо, то вы должны увидеть результат, подобный следующему ниже:

Указанный результат показывает информацию о скомпилированных файлах сообщений.


Ещё раз взгляните на каталог locale\, вы увидите показанные далее файлы:


Как видите, для каждого языка был скомпилирован файл сообщений .mo.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий
Нет обсуждений. Начните первое.