Skip to content
  1. Компоненты
  2. multiLingual

multiLingual ​

Компонент multiLingual реализует функциональность мультиязычных сайтов без дополнительных контекстов, в отличие от компонента Babel.

"Из коробки" подходит для большинства небольших сайтов вроде "сайта-визитки" или несложного каталога.

Для работы с более сложными сайтами, применяющими различные дополнительные компоненты, предполагающие хранение сущностей, которые должны переводиться на разные языки, требуется расширение компонента.

Настройка компонента ​

Для работы компонента должны быть включены ЧПУ (friendly URLs)

Компонент требует установки pdoTools версии не ниже 2.8.2 (с версиями ниже компонент не тестировался).

Перед тем, как начать работу с компонентом, необходимо установить настройку ml_default_site_url. В нее необходимо записать URL сайта по-умолчанию. Например https://mysite.ru/

Работа с мультиконтекстными сайтами ​

Если ваш сайт содержит более одного контекста, на каждом из которых вы бы хотели создать мультиязычные версии, необходимо в каждом из контекстов определить настройку ml_default_site_url.

Например, у вас на одной установке modx работают два сайта: http://mysite.com и https://mynewsite.ru.

В контексте первого сайта вы указываете в настройке ml_default_site_url значение http://mysite.com/

В контексте второго - https://mynewsite.ru/

Обратите внимание на слэш на конце.

Плагин mlSetLanguage должен выполняться позже плагина, который переключает контексты! Поэтому в настройках плагина mlSetLanguage, напротив события OnHandleRequest поставьте приоритет выше, чем у вашего переключателя контекстов.

Про выборку ресурсов и pdoTools ​

При работе со сниппетами пакета pdoTools для выборки ресурсов, такими как pdoResources и pdoMenu, данные сниппеты ничего не знают о компоненте multiLingual, поэтому по-умолчанию, независимо от языковой версии, они будут получать из БД поля ресурсов со значениями на языке по-умолчанию.

Для того, чтобы данные сниппеты выдавали на выходе выборки с переведенными полями, необходимо заменить значения двух системных настроек:

НастройкаЗначение
pdoFetch.classmlFetch
pdofetch_class_path{core_path}components/multilingual/model/multilingual/

При выборке ресурсов другими способами, подстановка переводов ложится на плечи разработчика.

Более подробное описание механизма описано в разделе Принцип перевода выборок

Принцип работы с компонентом ​

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

В системных настройках вы можете редактировать набор полей, доступных для перевода:

  • Настройка ml_resource_fields задаёт json массив, в котором указываются поля для переводов:
json
{
  "modResource" : [
    "pagetitle",
    "longtitle",
    "content",
    "description",
    "introtext",
    "menutitle"
  ]
}

Ключ - имя класса, значение - массив полей для перевода.

  • Настройка ml_resource_tv_fields задаёт json массив, в котором перечисляются названия tv полей для перевода:
json
["tv1","tv2"]

Внимание

Перечисляются именно названия tv-полей, а не ID