Как добавлять переводы в проект Django
Давайте посмотрим на процесс интернационализации проекта. Он состоит из следующих действий:
1. Отметить подлежащие переводу строковые литералы в своем коде Python и шаблонах;
2. Выполнить команду makemessages, чтобы создать или обновить файлы сообщений, включающие все переводные строковые литералы из исходного кода;
3. Перевести содержащиеся в файлах сообщений строковые литералы и скомпилировать их с помощью команды управления compilemessages.
Как Django определяет текущий язык
Django поставляется с компонентом фреймворка промежуточных программных компонентов, который определяет текущий язык на основе данных запроса.
Это класс LocaleMiddleware, который находится в django.middleware.locale.LocaleMiddleware и выполняет следующую работу:
1. Если используется i18n_patterns, то есть применяются переведенные шаблоны URL-адресов, то в запрошенном URL-адресе отыскивается префикс языка, чтобы определить текущий язык.
2. Если языковой префикс не найден, то в сеансе текущего пользователя отыскивается существующий языковой сеансовый ключ, LANGUAGE_SESSION_KEY.
3. Если язык в сеансе не задан, то отыскивается существующий cookie-файл с текущим языком. Конкретно-прикладное имя этого cookie-файла можно указать в настроечном параметре LANGUAGE_COOKIE_NAME.
По умолчанию cookie-файл имеет имя django_language.
4. Если cookie-файл не найден, то отыскивается HTTP-заголовок Accept-Language запроса.
5. Если в заголовке Accept-Language язык не указан, то Django использует язык, указанный в настроечном параметре LANGUAGE_CODE.
По умолчанию Django будет использовать язык, указанный в настроечном параметре LANGUAGE_CODE, при условии что не используется промежуточный компонент LocaleMiddleware.
Описанный здесь процесс применим только при использовании этого компонента фреймворка промежуточных программных компонентов.