Подготовка проекта к интернационализации
Давайте подготовим проект под использование разных языков.
Вы создадите английскую и русскую версии своего проекта. Отредактируйте файл settings.py проекта, добавив в него следующий ниже настроечный параметр LANGUAGES. Поместите его рядом с настроечным параметром LANGUAGE_CODE:
LANGUAGES = [
('en', 'English'),
('ru', 'Russian'),
]
Параметр LANGUAGES содержит два двухэлементых кортежа, состоящих из кода и названия языка.
Коды языков могут быть специфичными для региона, например en-us или en-gb, либо обобщенными, например en.
С помощью этого параметра указывается, что приложение будет доступно только на английском и русских языках.
Если не определить конкретно-прикладной параметр LANGUAGES, то сайт будет доступен на всех языках, на которые переведен Django.
Приведите настроечный параметр LANGUAGE_CODE к следующему виду: LANGUAGE_CODE = 'en'
Добавьте 'django.middleware.locale.LocaleMiddleware' в настроечный параметр MIDDLEWARE.
Проверьте, чтобы этот параметр стоял после компонента SessionMiddleware, поскольку для компонента LocaleMiddleware необходимы сеансовые данные.
Его также необходимо разместить перед промежуточным компонентом CommonMiddleware, потому что последнему нужен активный язык для конвертирования запрошенного URL-адреса.
Теперь настроечный параметр MIDDLEWARE должен выглядеть следующим образом:
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Внутри главного каталога проекта, рядом с файлом manage.py, создайте следующую ниже каталожную структуру:
Каталог locale – это место, где будут находиться файлы сообщений в приложении.
Снова откройте файл settings.py и добавьте в него следующий ниже настроечный параметр:
LOCALE_PATHS = [
BASE_DIR / 'locale',
]
Параметр LOCALE_PATHS задает каталоги, в которых Django должен искать файлы перевода. Пути locale, которые появляются первыми, имеют наивысший приоритет.
При использовании команд makemessages из каталога проекта файлы сообщений будут генерироваться в созданном вами пути locale/.
Однако для приложений, содержащих каталог locale/, файлы сообщений будут генерироваться в своем каталоге locale/.