Интернационализация и локализация¶
Обзор¶
Цель интернационализации и локализации — позволить одному веб-приложению предлагать свой контент на языках и в форматах, адаптированных к аудитории.
Django обладает полным набором средств для решения этой задачи: перевод текста, форматирование даты, времени и чисел и поддержка часовых поясов.
По существу, Django обеспечивает две вещи:
Он позволяет разработчикам и авторам шаблонов указывать какие именно части их приложений должны быть переведены или отформатированы под используемые языки и традиции.
Он использует эти перехватчики для локализации веб-приложений для конкретных пользователей в соответствии с их предпочтениями.
Перевод зависит от целевого языка, а форматирование зависит от целевой страны. Эта информация предоставляется браузерами в заголовке Accept-Language. Тем не менее, информацию о часовом поясе не так просто получить.
Терминология¶
Слова «интернационализация» и «локализация» часто вызывают путаницу. Сейчас всё будет понятно:
- интернационализация¶
Подготовка программного обеспечения для локализации. Обычно выполняется разработчиками.
- локализация¶
Создание переводов и локальных форматов. Обычно выполняется переводчиками.
Подробности можно найти в ЧаВо W3C по интернационализации веба, в Википедии или в документации GNU gettext.
Предупреждение
Трансляция контролируется настройкой USE_I18N. Однако это предполагает интернационализацию и локализацию. Название сеттинга является неудачным результатом истории Джанго.
Рассмотрим ещё несколько терминов, которые помогут нам общаться на понятном языке:
- locale name¶
Имя локали, либо языковая спецификация в форме
ll, либо комбинированная спецификация языка и страны в формеll_CC. Примеры:it,de_AT,es,pt_BR,sr_Latn. Языковая часть всегда пишется строчными буквами. Часть страны указывается в верхнем регистре, если она содержит более двух символов, в противном случае — в верхнем регистре. Разделителем является подчеркивание.- language code¶
Представляет имя языка. Используя этот формат, браузеры отправляют имена языков, контент на которых они предпочитают принять, в HTTP заголовке
Accept-Language. Примеры:it,de-at,es,pt-br. Коды языков обычно указываются в нижнем регистре, но HTTP заголовокAccept-Languageявляется регистронезависимым. Разделителем является символ тире.- message file¶
Файл сообщения является обычным текстовым файлом, представляющим единственный язык, который содержит все доступные строки перевода и правила их отображения для данного языка. Файлы сообщений имеют расширение
.po.- translation string¶
Строка, которая может быть переведена.
- format file¶
Файл формата является модулем языка Python и определяет форматы данных для данной локали.