Целью интернационализации и локализации является обеспечение возможности отдельному веб приложению предоставлять свой контент на языке и в формате, понятном целевой аудитории.
Django обладает полным набором средств для решения этой задачи: перевод текста, форматирование даты, времени и чисел и поддержка часовых поясов.
По существу, Django обеспечивает две вещи:
Он позволяет разработчикам и авторам шаблонов указывать какие именно части их приложений должны быть переведены или отформатированы под используемые языки и традиции.
Он использует эти метки для локализации веб приложений под конкретного пользователя, учитывая его настройки.
Очевидно, что перевод зависит от целевого языка, а форматирование зависит от целевой страны. Эта информация предоставляется браузерами в заголовке Accept-Language. Тем не менее, информацию о часовом поясе не так просто получить.
Слова «интернационализация» и «локализация» часто вызывают путаницу. Сейчас всё будет понятно:
Подготовка программного обеспечения для локализации. Обычно выполняется разработчиками.
Создание переводов и локальных форматов. Обычно выполняется переводчиками.
Подробности можно найти в ЧаВо W3C по интернационализации веба, в Википедии или в документации GNU gettext.
Предупреждение
Перевод и форматирование контролируются параметрами USE_I18N and USE_L10N соответственно. Тем не менее, оба функционала участвуют в интернационализации и локализации. Имена параметров являются не слишком удачным результатом развития Django.
Рассмотрим ещё несколько терминов, которые помогут нам общаться на понятном языке:
Имя локали, либо спецификация языка в виде ll или комбинация языка и спецификации страны в виде ll_CC. Примеры: it, de_AT, es, pt_BR. Языковая часть всегда указывается в нижнем регистре, а часть, определяющая страну, – в верхнем регистре. Разделителем является символ подчёркивания.
Представляет имя языка. Используя этот формат, браузеры отправляют имена языков, контент на которых они предпочитают принять, в HTTP заголовке Accept-Language. Примеры: it, de-at, es, pt-br. Обе части (язык и страна) указываются в нижнем регистре, но HTTP заголовок Accept-Language регистронезависимый. Разделителем является символ тире.
Файл сообщения является обычным текстовым файлом, представляющим единственный язык, который содержит все доступные строки перевода и правила их отображения для данного языка. Файлы сообщений имеют расширение .po.
Строка, которая может быть переведена.
Файл формата является модулем языка Python и определяет форматы данных для данной локали.
Mar 31, 2016