Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

7.1 Введение в интернационализацию и подготовка проекта
5 из 5 шагов пройдено

Как добавлять переводы в проект 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.

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


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