Я смотрю другие шаблоны регистрации Django, и я вижу строку {% load i18n %}
в каждом файле. Что такое i18n
?
Я знаю, что это связано с Интернационалом и локализацией, но может ли кто-нибудь объяснить это и дать подробный пример? Спасибо.
Я смотрю другие шаблоны регистрации Django, и я вижу строку {% load i18n %}
в каждом файле. Что такое i18n
?
Я знаю, что это связано с Интернационалом и локализацией, но может ли кто-нибудь объяснить это и дать подробный пример? Спасибо.
Он загружает теги перевода, такие как {% trans "Text" %}
, которые можно использовать в шаблоне. Если вы не используете его, вы можете удалить {% load i18n %}
Когда вы используете тег trans
для всего текста, который не является динамическим в шаблонах, вы можете собрать все такие строки, запустив ./manage.py makemessages
, который создает файл .po, который будет использоваться для перевода.
{% load i18n %}
необходим для интернационализации. Цель интернационализации - разрешить одно приложение читать на нескольких языках. Чтобы сделать это: вам нужно несколько крючков, называемых строками перевода. Чтобы предоставить шаблону доступ к этим тегам, поместите {% load i18n %}
в начало вашего шаблона.
Обратитесь к этому за дополнительной информацией: https://docs.djangoproject.com/en/1.10/topics/i18n/
Чтобы сделать проект Django переводимым, вы должны добавить минимальное количество крючков к вашему коду и шаблонам Python. Эти перехватчики называются строки перевода. Они говорят Django: "Этот текст должен быть переведен на язык конечных пользователей, если для этого текста доступен перевод на этом языке". Его ответственность за маркировку переводимых строк; система может только переводить строки, о которых она знает.
Захваты интернационализации Djangos включены по умолчанию, и это означает, что в некоторых местах инфраструктуры есть немного связанных с i18n издержек. Если вы не используете интернационализацию, вы должны сделать две секунды, чтобы установить USE_I18N = False
в свой файл настроек. Затем Django сделает некоторые оптимизации, чтобы не загружать механизм интернационализации. Вероятно, вы также захотите удалить ['django.core.context_processors.i18n']
из TEMPLATE_CONTEXT_PROCESSORS.
За дополнительной информацией: https://docs.djangoproject.com/en/dev/topics/i18n/translation/