Мои проекты

Два языка и несколько сайтов

Разделяем перевод интерфейса, перевод страниц и настройки конкретного домена.

Урок 16 / 22 · Commentail 1.3.2

Интерфейс Commentail и письма переведены на en, ru, de, fr, es и pt-br. Текст комментария и введённая модератором причина остаются на исходном языке. Переключение языка интерфейса их не переводит.

Включим языки проекта

Если сайт ещё не настроен на несколько языков, начните с его стандартного механизма Django/Wagtail. В settings добавьте нужные коды:

python
from django.utils.translation import gettext_lazy as _

LANGUAGE_CODE = "en"
LANGUAGES = [("en", _("English")), ("ru", _("Russian"))]
# Keep the existing LocaleMiddleware after SessionMiddleware and before CommonMiddleware.
# If WAGTAILADMIN_PERMITTED_LANGUAGES is restricted, add these languages there too.

Не дублируйте LocaleMiddleware. Для выбора языка используйте существующий переключатель сайта. Если его пока нет, подключайте стандартный Django set_language с POST и CSRF по документации Django (на английском), а не меняйте глобальную LANGUAGE_CODE для каждого посетителя.

Проверьте русскую и английскую страницу, форму ошибки и админку обычного модератора. Комментарии привязаны к Site и конкретному target: не обещайте общий разговор у разных переводных Page. Для переведённого дерева root page проверьте публикацию и принадлежность Site; версия 1.3.2 исправляет доступ в таком дереве.

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

Настройки по домену

Техническая конфигурация разрешается от встроенных значений к default, затем к точному Site.hostname:

python
COMMENTAIL = {
    "default": {"AUTHOR_LIMIT_PER_HOUR": 20},
    "forum.example.org": {"AUTHOR_LIMIT_PER_HOUR": 40},
}

Ключ — forum.example.org, без схемы, порта и пути. Порт и root page задаются в Wagtail Site, а не в этом ключе. OBJECT_ADAPTERS и RULES_CSV_* принадлежат проекту и допустимы только в default.

Для разных CAPTCHA на разных доменах укажите оба ключа в каждом переопределении CAPTCHA_OPTIONS: словарь заменяется целиком. Нельзя задать там один secret_key в расчёте, что site_key унаследуется из default.

Проверим изоляцию

На каждом домене проверьте открытую страницу, заголовок письма, ссылки подтверждения и права редакторской группы. Подтверждение гостя и квоты разделяются по Site. Неправильный hostname/root может дать пустой виджет или чужую область настроек; сначала исправьте Site, не обходите проверку адаптером.

Другие уроки по этой задаче

Документация по теме

Была ли статья полезна?

Комментарии 0

Имя: до 40 символов.

После отправки мы пришлём письмо со ссылкой для подтверждения email.

Не более 5000 символов.

Опубликованных комментариев пока нет.