Локализация и интернационализация
Обзор
Цель локализации и интернационализации — предоставить пользователям веб-приложение на языках и в форматах, соответствующих их потребностям.
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 - Представляет имя языка. Браузеры отправляют имена принимаемых языков в HTTP-заголовке
Accept-Languageв этом формате. Примеры: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/1.10/topics/i18n/index/