Многоязычный сайт на MODX: как заложить основу правильно
На MODX можно разнести языковые версии по контекстам, но одной настройки недостаточно: нужны связанные переводы, отдельные URL и правила для меню и поиска. Разбираем рабочую схему и места, где сайт обычно начинает путать языки.

Если на сайте MODX русская и английская версии должны иметь отдельные адреса, меню и настройки, не превращайте язык в условие внутри одного шаблона. Надёжнее заранее определить структуру контекстов, связать переводы ресурсов и проверить, как ссылки строятся в каждом контексте. Иначе первая же новая страница может оказаться доступна только на одном языке, а переключатель начнёт вести на главную вместо перевода.
Сначала выберите схему адресов
Для небольшого и среднего сайта распространённый вариант — отдельный контекст на каждый язык: например, контекст для русской версии и контекст для английской. URL можно организовать как example.com/ и example.com/en/. У каждого контекста могут быть собственные стартовая страница, меню, настройки языка и корневой раздел ресурсов.
У этого подхода есть цена: контексты придётся настроить согласованно, а переводы страниц — явно связать. Само наличие двух деревьев ресурсов ещё не сообщает MODX, что конкретная страница на русском и её английская версия соответствуют друг другу.
До начала работы зафиксируйте:
- точную версию MODX Revolution — настройку и совместимость дополнений проверяйте именно для неё;
- список языков и адрес каждого контекста;
- правило для главных страниц, страниц без перевода и URL ресурсов;
- какие дополнения отвечают за связь переводов и формирование меню;
- кто будет создавать страницы и поддерживать переводы после запуска.
Не переносите готовые настройки из чужого проекта вслепую. Установка MODX, версия дополнения и выбранная схема URL влияют на детали конфигурации.
Сравните три подхода
Выбор зависит не от количества языков само по себе, а от того, насколько версии должны отличаться и кто ими управляет.
| Подход | Что выигрываете | Чем платите | Когда подходит |
|---|---|---|---|
| Контексты и отдельные деревья ресурсов | Раздельные настройки, стартовые страницы и меню языков | Нужно поддерживать соответствие страниц и проверять ссылки в каждом контексте | Корпоративный сайт или каталог с полноценными языковыми версиями |
| Контексты с дополнением для связи переводов, например Babel | Можно связать эквивалентные ресурсы и вывести переключатель языков | Появляется зависимость от дополнения и его совместимости с установленной версией MODX | Когда редакторам важно переходить между переводами, а не искать их вручную |
| Один контекст, язык в структуре или данных ресурса | Меньше контекстной конфигурации на старте | Сложнее разделять настройки, шаблоны, права и навигацию; легко смешать языки в выдаче | Небольшой проект с простыми требованиями и собственной логикой обработки |
Для большинства сайтов с отдельными полноценными версиями разумная отправная точка — контексты и инструмент связи переводов. Но дополнение не заменяет проектирование: оно не решит за вас, что показывать, если перевода нет, и как вести себя меню.
Настройте контексты до наполнения
Создайте языковые контексты и настройте для каждого базовый адрес, стартовую страницу и нужные параметры генерации URL. Затем проверьте, что прямое открытие стартовой страницы работает по ожидаемому адресу, а внутренние ссылки не добавляют неверный префикс языка.
Не копируйте значения настроек из инструкции для другой версии MODX без проверки. Названия и поведение параметров могут зависеть от версии ядра и установленных дополнений. Сверяйтесь с документацией именно для своей сборки и проверьте результат на чистом тестовом контексте.
Каждую страницу создавайте в контексте своего языка. Назначьте ей шаблон и параметры, проверьте алиас и полный URL. Если используется Babel, настройте связь между ресурсами-переводами в соответствии с документацией установленной версии. Не рассчитывайте, что совпадающий алиас автоматически свяжет страницы.
Проверьте меню и переключатель
Меню часто собирают через pdoTools или другие дополнения. Важно не только вывести нужные пункты, но и ограничить выборку текущим контекстом. Иначе на русской странице могут появиться английские ресурсы — особенно если часть страниц находится вне ожидаемого корня дерева.
Переключатель языка должен вести на связанный перевод текущей страницы. Если перевода нет, заранее выберите поведение: скрыть этот язык, показать его недоступным или отправить пользователя на стартовую страницу. Последний вариант прост, но может сбивать с толку: человек ожидает ту же страницу на другом языке, а получает главную.
Термин контекст — отдельная среда MODX со своими настройками и областью ресурсов; его используют, например, чтобы разделить языковые версии или сайты в одной установке.
Связь переводов — это редакционное отношение между двумя ресурсами, а не совпадение их адресов. Если не решить, куда ведёт переключатель для непереведённой страницы, решение за вас случайно примет шаблон.
Проверьте крайние случаи до запуска
Перед публикацией протестируйте не только главную и типовую страницу. Ошибки чаще обнаруживаются в URL, вложенных разделах и ресурсах, для которых перевод ещё не готов.
- Откройте стартовую страницу каждого языка. Проверьте домен, путь и отсутствие редиректа на чужой контекст. Успех — адрес стабилен после перезагрузки.
- Откройте вложенную страницу напрямую. Вставьте её URL в новую вкладку, а не переходите только через меню. Успех — MODX находит ресурс и сохраняет правильный язык.
- Пройдите по меню и хлебным крошкам. Убедитесь, что переходы остаются в текущем контексте, если ссылка не ведёт на внешний ресурс.
- Проверьте переключатель на связанном переводе. Он должен открыть эквивалентную страницу, а не главную другого языка.
- Проверьте страницу без перевода. Убедитесь, что выбранное поведение предсказуемо и не создаёт циклический редирект.
- Проверьте формы и поиск. Уведомления, результаты и страницы после отправки не должны внезапно менять язык.
Что обычно ломается
Ссылки ведут не туда
Частая причина — базовый адрес контекста не совпадает с реальным размещением сайта или ссылка генерируется с настройками другого контекста. Проверяйте итоговый HTML и адрес после перехода, а не только поля в менеджере MODX. Отдельно проверьте ссылки на ресурсы, перемещённые в другое дерево.
Меню смешивает языки
Проверьте контекст и корень выборки, а также ресурсы, помеченные как скрытые или удалённые. Если меню строит дополнение, выясните, какие параметры оно использует в установленной версии. Не добавляйте фильтры наугад: можно случайно убрать нужные пункты.
Перевод есть, переключатель его не видит
Проверьте, связаны ли ресурсы как переводы и доступна ли эта связь для текущего контекста. Совпадение заголовков или алиасов не гарантирует связи. После изменения настроек очистите кэш MODX и повторите проверку в приватном окне.
Страница открывается только при переходе из менеджера
Это сигнал проверить сохранённый URL, публикацию ресурса, контекст и правила веб-сервера. Воспроизводите проблему прямым запросом к адресу. Если сайт использует собственные правила перенаправления, сравните их с документацией для вашей версии MODX и конфигурацией сервера.
Как выбрать схему и что делать дальше
Если языковые версии отличаются содержанием, меню или настройками, начните с отдельных контекстов. Если редакторы должны быстро переключаться между эквивалентными страницами, добавьте проверенное для вашей версии дополнение связи переводов. Один контекст выбирайте только тогда, когда вы осознанно готовы поддерживать разделение языков собственной логикой.
Сначала соберите небольшой тестовый набор: главная, раздел, типовая страница, страница без перевода и форма. Проверьте их по обоим языкам на тестовом окружении. После этого зафиксируйте правила создания ресурсов для редакторов и только затем переносите весь контент. Отдельно измеряйте ошибки 404 и проверяйте внутренние ссылки после публикации новых страниц. SEO-разметка и настройка hreflang — отдельная задача; здесь речь только о структуре и поведении языковых версий.
Локализатор видео: Перевод и озвучка видео на другой язык с укладкой в исходный тайминг. Глоссарий терминов, отметки проблемных реплик.
Спросить за 250 ₽Источники: MODX Documentation: Contexts, Babel — исходный код и документация проекта
Частые вопросы
Обязательно ли делать каждый язык отдельным контекстом MODX?
Нужно ли устанавливать Babel?
Можно ли оставить одинаковые алиасы в разных языках?
Что показывать, если у страницы нет перевода?
Достаточно ли создать два дерева ресурсов, чтобы переключатель заработал?
Нужно ли настраивать SEO отдельно для каждого языка?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.