В Django что такое i18n? - PullRequest
       3

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

19 голосов
/ 09 марта 2012

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

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

Ответы [ 3 ]

24 голосов
/ 09 марта 2012

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

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

7 голосов
/ 27 июня 2012

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

Для получения дополнительной информации см. Это: https://docs.djangoproject.com/en/1.10/topics/i18n/

2 голосов
/ 12 февраля 2014

Чтобы сделать проект Django переводимым, вы должны добавить минимальное количество хуков к вашему коду Python и шаблонам. Эти хуки называются строк перевода . Они говорят Джанго: «Этот текст должен быть переведен на язык конечного пользователя, если перевод для этого текста доступен на этом языке». Вы несете ответственность за маркировку переводимых строк; система может переводить только те строки, о которых она знает.

Перехватчики интернационализации Django включены по умолчанию, и это означает, что в некоторых местах фреймворка есть некоторые накладные расходы, связанные с i18n. Если вы не используете интернационализацию, вам потребуется две секунды, чтобы установить USE_I18N = False в файле настроек. Затем Django проведет некоторые оптимизации, чтобы не загружать механизм интернационализации. Возможно, вы также захотите удалить ['django.core.context_processors.i18n'] из настройки TEMPLATE_CONTEXT_PROCESSORS .

Для получения дополнительной информации: https://docs.djangoproject.com/en/dev/topics/i18n/translation/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...