Интернационализация

Django изначально разрабатывался в центре США (буквально: Лоуренс, штат Канзас, это в 65 км от географического центра континентального США). Несмотря на это, подобно большинству проектов с открытыми исходными текстами сообщество Django включает людей со всего мира. По мере того как это сообщество охватывало разных людей, аспектыинтернационализацииилокализациистановились чрезвычайно важными. Так как множество разработчиков имеют в лучшем случае нечёткое понимание этих терминов, мы кратко их рассмотрим.

Интернационализацияотносится к процессу проектирования программ для потенциального использования с любым языком. Это включает в себя выделение текста (как элементы интерфейса, так и сообщения об ошибках) для будущего перевода, абстракцию даты и времени для вывода в различных стандартах, предоставляя поддержку для различных временных зон, а самое главное — уверенность, что код не содержит предположений о стране проживания пользователей. Вы часто видите термин«internationalization»сокращённый какI18N(число 18 — это количество букв между первой«I»и последней«N»).

Локализацияотносится к процессу фактического перевода программ подвергшихся интернационализации для использования в конкретной локали. Вы иногда будете встречать аббревиатуруL10Nдля обозначения термина«локализация».

Сам Django полностью интернационализирован. Все строки готовы для перевода, а настройки управляют отображением значений, зависимых от локали, таких как время и дата. С Django поставляется более чем 40 различных файлов локализации. Если английский язык не является для вас родным, очень вероятно, что Django уже переведён на ваш язык.

Стандартные функции для перевода

Помечайте строки для перевода, используя функцию_(). (Да, имя функции — символ нижнего подчеркивания). Для подключения этой функции используйте:
from django.utils.translation import gettext_lazy as_В этом примере, текст,«Welcome to my site.» помечен для перевода:

Отложенный перевод

Используйте функциюdjango.utils.translation.gettext_lazy()для отложенного перевода строк — это когда значение получают до того, как будет вызвана функция.

Например, для пометки атрибута поляhelp_textкак подлежащего переводу сделайте следующее:
В данном примере функцияgettext_lazy()сохраняет отложенную ссылку на строку, а не её перевод. Сам перевод будет выполнен в момент использования строки, например, при обработке шаблона на сайте администратора Django.

results matching ""

    No results matching ""