Настройка мультиязычности MODX (Babel/LangRouter)

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

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Настройка мультиязычности MODX (Babel/LangRouter)
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Настройка мультиязычности MODX (Babel/LangRouter)

MODX не имеет встроенной мультиязычности — для неё используют комбинацию контекстов и специализированных пакетов. Два основных подхода: Babel (ассоциирует ресурсы разных контекстов) и LangRouter (маршрутизация по языковому префиксу).

Архитектура: контексты + Babel

Каждый язык — отдельный контекст. Babel устанавливает «связи» между соответствующими ресурсами разных контекстов.

Контекст: web (русский, главный)
├── Главная (id: 1)
├── О компании (id: 5)

Контекст: en (английский)
├── Home (id: 100) ← linked to id:1
├── About Us (id: 105) ← linked to id:5

Установка Babel

# Package Manager → Babel

Системные настройки Babel:

babel.sites: web,en,de   (ключи контекстов через запятую)
babel.contextPrefix_en: en/  (URL-префикс)
babel.contextPrefix_de: de/
babel.contextPrefix_web:     (пустой = главный язык без префикса)

Переключатель языков через BabelLinks

[[!BabelLinks?
    &tpl=`@INLINE
    <a href="[[+url]]" hreflang="[[+cultureKey]]"
       class="lang-switch [[+active:is=`1`:then=`lang-switch--active`]]">
        [[+cultureKey:upper]]
    </a>
    `
    &activeCls=`active`
]]

BabelLinks автоматически создаёт ссылки на связанные ресурсы в других контекстах.

LangRouter: маршрутизация без контекстов

LangRouter — альтернатива без контекстов. Один контекст, разные языки хранятся в TV или через lex-файлы.

# Package Manager → LangRouter
[[!LangRouter?
    &default=`ru`
    &langs=`ru,en,de`
]]

LangRouter добавляет /en/, /de/ префиксы к URL и переключает cultureKey.

Лексиконы (перевод интерфейса)

Для перевода статичного текста шаблонов — лексиконы MODX:

// core/lexicon/ru/default.inc.php
$_lang['btn_more'] = 'Подробнее';
$_lang['contact_us'] = 'Связаться с нами';
$_lang['read_more'] = 'Читать далее';

Вывод в шаблоне:

[[%btn_more? &namespace=`mysite` &topic=`default`]]

hreflang для SEO

[[!BabelLinks?
    &tpl=`@INLINE <link rel="alternate" hreflang="[[+cultureKey]]" href="[[+url]]">`
    &toPlaceholder=`hreflang`
]]
<head>
    [[+hreflang]]
    <link rel="alternate" hreflang="x-default" href="[[++site_url]]">
</head>

Babel vs LangRouter vs контексты без пакетов

  • Контексты + Babel — стандарт для крупных сайтов. Полное разделение контента, шаблонов, настроек.
  • LangRouter — проще для небольших сайтов, меньше настроек, но ограниченная гибкость.
  • Вручную — только для простых случаев (2 языка, небольшой сайт).

Сроки

Настройка двух языков через Babel с переключателем и hreflang — 2–3 дня.