Налаштування мультимовності 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) ← пов'язано з id:1
├── About Us (id: 105) ← пов'язано з 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 дні.