Подготовка проекта к интернационализации
Давайте подготовим проект к использованию различных языков. Мы собираемся создать английский и испанский вариант для нашего магазина. Отредактируйте файл settings.py вашего проекта и добавьте в него следующие настройки LANGUAGES. Поместите их рядом с параметром LANGUAGE_CODE:
LANGUAGES = (
('en', 'English'),
('es', 'Spanish'),
)
Параметр LANGUAGES содержит два кортежа, состоящие из кода языка и имени. Коды языков могут быть специфичными для конкретного языка, например en-us или en-gb или универсальные, например en. С помощью этого параметра мы указываем, что наше приложение будет доступно только на английском и испанском языках. Если не определить пользовательские языки, сайт будет доступен на всех языках, на которых будет переведен Джанго.
Отредактируйте LANGUAGE_CODE настройку следующим образом:
LANGUAGE_CODE = 'en'
Добавьте 'django.middleware.locale.LocaleMiddleware' в настройки MIDDLEWARE_CLASSES. Убедитесь, что эта строка вставлена после SessionMiddleware, потому что LocaleMiddleware необходимо использовать данные сессии. Она также должна быть помещена перед CommonMiddleware, поскольку для разрешения запрошенного URL-адреса требуется активный язык. Параметры MIDDLEWARE_CLASSES должны выглядеть следующим образом:
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
# ...
)
Порядок промежуточного программного обеспечения очень важен, так как каждое промежуточное программное обеспечение может зависеть от данных, которые были заданы другим программным обеспечением, выполненным ранее. Промежуточное программное обеспечение применяется для запросов в порядке их появления в MIDDLEWARE_CLASSES и в обратном порядке для ответов.
Создайте следующую структуру каталогов в главном каталоге проекта рядом с файлом manage.py:
locale/
en/
es/
Каталог locale — это место, где будут находиться файлы сообщений для приложения. Отредактируйте файл settings.py и добавьте в него следующий параметр:
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale/'),
)
Параметр LOCALE_PATHS указывает каталоги, в которых Джанго должен искать файлы перевода. Пути языка, которые появляются первыми, имеют наивысший приоритет.
При использовании команды makemessages из каталога проекта файлы сообщений будут создаваться в каталогах созданных внутри директории locale/. Однако для приложений, содержащих язык и региональные стандарты, в этом каталоге будут созданы файлы сообщений.