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

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

Обзор

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

Django обладает полным набором средств для решения этой задачи: перевод текста, форматирование даты, времени и чисел и поддержка часовых поясов.

По существу, Django обеспечивает две вещи:

  • Он позволяет разработчикам и авторам шаблонов указывать какие именно части их приложений должны быть переведены или отформатированы под используемые языки и традиции.

  • Он использует эти перехватчики для локализации веб-приложений для конкретных пользователей в соответствии с их предпочтениями.

Перевод зависит от целевого языка, а форматирование зависит от целевой страны. Эта информация предоставляется браузерами в заголовке Accept-Language. Тем не менее, информацию о часовом поясе не так просто получить.

Терминология

Слова «интернационализация» и «локализация» часто вызывают путаницу. Сейчас всё будет понятно:

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

Подготовка программного обеспечения для локализации. Обычно выполняется разработчиками.

локализация

Создание переводов и локальных форматов. Обычно выполняется переводчиками.

Подробности можно найти в ЧаВо W3C по интернационализации веба, в Википедии или в документации GNU gettext.

Предупреждение

Translation and formatting are controlled by USE_I18N and USE_L10N settings respectively. However, both features involve internationalization and localization. The names of the settings are an unfortunate result of Django’s history.

Рассмотрим ещё несколько терминов, которые помогут нам общаться на понятном языке:

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