Интернационализация и локализация¶
Быстрый обзор¶
Цель интернационализации и локализации заключается в том, чтобы позволить одному веб-приложению предлагать свой контент на языках и в форматах, адаптированных к аудитории.
Django имеет полную поддержку translation of text, formatting of dates, times and numbers и time zones.
По сути, Django делает две вещи:
- Он позволяет разработчикам и авторам шаблонов указывать, какие части их приложений должны быть переведены или отформатированы для местных языков и культур.
- Она использует эти крючки для локализации веб-приложений для конкретных пользователей в соответствии с их предпочтениями.
Перевод зависит от целевого языка, а форматирование обычно зависит от целевой страны. Эта информация предоставляется браузерами в заголовке Accept-Language
. Однако часовой пояс не всегда доступен.
Определения¶
Слова «интернационализация» и «локализация» часто вызывают путаницу; вот упрощенное определение:
- интернационализация¶
- Подготовка программного обеспечения к локализации. Обычно выполняется разработчиками.
- локализация¶
- Написание переводов и местных форматов. Обычно выполняется переводчиками.
Более подробную информацию можно найти в W3C Web Internationalization FAQ, Wikipedia article или GNU gettext documentation.
Предупреждение
Перевод и форматирование управляются настройками USE_I18N
и USE_L10N
соответственно. Однако обе эти функции связаны с интернационализацией и локализацией. Названия настроек являются неудачным результатом истории Django.
Вот еще несколько терминов, которые помогут нам найти общий язык:
- имя локали¶
- Имя локали, либо спецификация языка в форме
ll
, либо комбинированная спецификация языка и страны в формеll_CC
. Примеры:it
,de_AT
,es
,pt_BR
,sr_Latn
. Языковая часть всегда пишется в нижнем регистре. Часть страны пишется в заглавном регистре, если она содержит более 2 символов, в противном случае она пишется в верхнем регистре. Разделителем является знак подчеркивания. - код языка¶
- Представляет собой название языка. Браузеры отправляют названия языков, которые они принимают, в HTTP-заголовке
Accept-Language
, используя этот формат. Примеры:it
,de-at
,es
,pt-br
. Коды языков обычно представляются в нижнем регистре, но заголовок HTTPAccept-Language
не чувствителен к регистру. Разделителем является тире. - файл сообщения¶
- Файл сообщения - это текстовый файл, представляющий один язык, который содержит все имеющиеся translation strings и то, как они должны быть представлены в данном языке. Файлы сообщений имеют расширение
.po
. - строка перевода¶
- Букварь, который можно перевести.
- файл формата¶
- Файл формата - это модуль Python, определяющий форматы данных для данной локали.