• 3.1
  • 3.2
  • 6.1
  • Версия документации: 5.0

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

Обзор

Цель интернационализации и локализации — позволить одному веб-приложению предлагать свой контент на языках и в форматах, адаптированных к аудитории.

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 и определяет форматы данных для данной локали.

Back to Top