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

Введение

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

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

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

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

Translation depends on the target language, and formatting usually depends on the target country. This information is provided by browsers in the Accept-Language header. However, the time zone isn’t readily available.

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

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

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

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

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

Перевод и форматирование контролируются параметрами USE_I18N and USE_L10N соответственно. Тем не менее, оба функционала участвуют в интернационализации и локализации. Имена параметров являются не слишком удачным результатом развития Django.

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

locale name
A locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC. Examples: it, de_AT, es, pt_BR. The language part is always in lowercase and the country part in upper case. The separator is an underscore.
language code
Represents the name of a language. Browsers send the names of the languages they accept in the Accept-Language HTTP header using this format. Examples: it, de-at, es, pt-br. Language codes are generally represented in lowercase, but the HTTP Accept-Language header is case-insensitive. The separator is a dash.
message file
Файл сообщения является обычным текстовым файлом, представляющим единственный язык, который содержит все доступные строки перевода и правила их отображения для данного языка. Файлы сообщений имеют расширение .po.
translation string
Строка, которая может быть переведена.
format file
Файл формата является модулем языка Python и определяет форматы данных для данной локали.