Подтвердить что ты не робот

В Django, что такое i18n?

Я смотрю другие шаблоны регистрации Django, и я вижу строку {% load i18n %} в каждом файле. Что такое i18n?

Я знаю, что это связано с Интернационалом и локализацией, но может ли кто-нибудь объяснить это и дать подробный пример? Спасибо.

4b9b3361

Ответ 1

Он загружает теги перевода, такие как {% trans "Text" %}, которые можно использовать в шаблоне. Если вы не используете его, вы можете удалить {% load i18n %}

Когда вы используете тег trans для всего текста, который не является динамическим в шаблонах, вы можете собрать все такие строки, запустив ./manage.py makemessages, который создает файл .po, который будет использоваться для перевода.

Ответ 2

{% load i18n %} необходим для интернационализации. Цель интернационализации - разрешить одно приложение читать на нескольких языках. Чтобы сделать это: вам нужно несколько крючков, называемых строками перевода. Чтобы предоставить шаблону доступ к этим тегам, поместите {% load i18n %} в начало вашего шаблона.

Обратитесь к этому за дополнительной информацией: https://docs.djangoproject.com/en/1.10/topics/i18n/

Ответ 3

Чтобы сделать проект 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/