Локализация и интернационализация
Обзор
Цель локализации и интернационализации — предоставить содержимое веб-приложения на языках и в форматах, подходящих для аудитории.
Django полностью поддерживает перевод текста, форматирование дат, времени и чисел и временные зоны.
В сущности, Django делает две вещи:
- Позволяет разработчикам и авторам шаблонов указывать, какие части приложений следует переводить или форматировать для разных языков и культур.
- Использует эти возможности для локализации веб-приложений для конкретных пользователей в соответствии с их предпочтениями.
Очевидно, перевод зависит от целевого языка, а форматирование обычно зависит от целевой страны. Эта информация предоставляется браузерами в Accept-Language заголовке. Однако временная зона не доступна напрямую.
Определения
Слова «локализация» и «интернационализация» часто вызывают путаницу; вот упрощённое определение:
-
internationalization - Подготовка программного обеспечения к локализации. Обычно выполняется разработчиками.
-
localization - Написание переводов и локальных форматов. Обычно выполняется переводчиками.
Более подробную информацию можно найти в часто задаваемых вопросах по веб-интернационализации W3C, в статье Википедии или в документации GNU gettext.
Предупреждение
Перевод и форматирование контролируются настройками USE_I18N и USE_L10N соответственно. Однако обе функции связаны с локализациями и интернационализацией. Названия настроек являются неудачным следствием истории Django.
Вот ещё некоторые термины, которые помогут нам работать с общим языком:
-
locale name - Имя локали, либо спецификация языка в формате
ll, либо объединённая спецификация языка и страны в форматеll_CC. Примеры:it,de_AT,es,pt_BR. Часть языка всегда в нижнем регистре, а часть страны — в верхнем. Разделителем является нижнее подчёркивание. -
language code - Представляет имя языка. Браузеры отправляют имена языков, которые они принимают, в
Accept-LanguageHTTP-заголовке в этом формате. Примеры:it,de-at,es,pt-br. Коды языков обычно представляются в нижнем регистре, но HTTPAccept-Languageзаголовок нечувствителен к регистру. Разделителем является тире. -
message file - Файл сообщений — это текстовый файл, представляющий один язык, который содержит все доступные строки перевода и то, как они должны быть представлены на данном языке. Файлы сообщений имеют расширение
.po. -
translation string - Литерал, который можно перевести.
-
format file - Файл формата — это модуль Python, который определяет форматы данных для данной локали.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.2/topics/i18n/index/