Вебзик
СОЗДАНИЕ КАЧЕСТВЕННЫХ САЙТОВ
ИНТЕРНЕТ-МАГАЗИНЫ ПОД КЛЮЧ

Мультиязычный сайт на Evolution CMS (Modx Evo) используя дополнение evoBabel

23.12.2020 | Мастерская

И так встала задача реализовать на одном сайте возможность переключение языков, в частности нужно было создать версию сайта на английском языке. При этом сайт уже работает, имеет свою логику и структуру, она должна быть сохранена и в английской ветке, также нужно чтобы переключение языков работало в рамках текущих страниц  по принципу (русская – английская). Пользователь должен иметь возможность самостоятельно добавлять и редактировать  как русские, так и английские страницы сайта.

На сайте установлена система управления сайтом Evolution CMS (ранее она была известна как Modx Evo), система в принципе адекватная, и даже есть компонент при помощи которого можно организовать мультиязычность на сайте – это evoBabel, кому интересно оставил ссылку на страницу самого дополнения https://github.com/webber12/evobabel-0.2 также она доступна для установки через специальный модуль Extras (именно через него я и установил это дополнение).

установка evoBabel через модуль Extras

После установки у вас должны появиться нужные компоненты сниппеты, плагин, модуль и тв-параметр (relation), описывать ручную установку я не буду, так как она хорошо описана по ссылке выше, да и проще установить всё через модуль Extras. Далее нам нужно добавить новый шаблон назовём его Lang, можно придумать любое название, главное запомнить ID этого шаблона, его потом нужно будет указать в конфигурации модуля. Также нужно создать две папки (документа) например RU и EN в них будут помещены соответствующие документы, относящиеся к разным языковым веткам. Папок может быть и больше всё зависит от того сколько языков будет у вас на сайте. В качестве шаблона для этих папок применяем ранее созданный шаблон Lang.  

Да не забудьте проверить, чтобы тв-параметр relation (он должен создаться автоматически при установке дополнения) был присвоен всем шаблонам, кроме шаблона Lang. В папках (документах) RU, EN нужно указать следующее:

  • Заголовок – название папки например – RU
  • Расширенный заголовок – название для флажка переключения языков я указал - RU
  • Описание – тут нужно указать ID главной страницы этой ветки, для русской ветки обычно это 1, а вот для других версий нужно смотреть как у вас. Если в папке EN пока нет главной страницы Home то нужно её создать.
  • Псевдоним – я указал ruдля папки RUи en– для папки EN
  • Шаблон - Lang

настройка языковых папок evoBabel несколько языков

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

Конфигурация модуля evoBabelLexicon

Далее нам нужно зайти в Модули – Управление модулями – evoBabelLexicon - Конфигурация там нужно обязательно указать следующее:

  • id шаблона языка - указываем ID созданного ранее шаблона Lang
  • id TV языковых связей - указываем ID тв-параметра relation
  • язык по умолчанию - нужный язык я выбрал RU
  • показывать панель – надо указать 1 или 0, где 1 – показывать, а 0 – скрыть
  • публиковать (0 -нет, 1 - да) – нужно ли сразу публиковать созданные документы (при создании страницы на другом языке) я выбрал 0, так как её надо наполнить переводом и уже потом опубликовать, но вы можете сразу публиковать, выбрать 1.
  • язык переводов – я выбрал ru

конфигурация модуля evoBabelLexicon

После того как мы скопировали все документы относящиеся к русской версии сайта в папку RU можно на её основе создать английскую ветку документов. Для этого открываем документ в русской версии на редактирование, в самом верху вы увидите, что у вас добавился значок для переключения между документами разных версий, так же если на него нажать можно создать копию этого документа в папке EN, поочерёдно открываем и создаём документы для английской версии. Обратите внимание на псевдоним, он будет одинаковый у русских и английских страниц, если нужно вы можете его изменить. Если документ в английской ветке уже создан, то можно быстро переключиться на его редактирование из русской версии и обратно, это достаточно удобно.

переключение между языковыми страницами в evoBabel

Теперь разберёмся, зачем нужен модуль evoBabelLexicon, и как с ним работать. По сути это модуль для переводов различных слов для разных языковых версий. Он позволяет использовать один и тот же шаблон для документов разных языковых веток, при этом при загрузке нужной языковой версии меняется и перевод этих слов.

работа с модулем evoBabelLexicon

Для начала нужно создать нужное количество языков, по умолчанию создан один язык –ru (русский). Добавим ещё одну языковую версию – en (английский).

создание нового языка в evoBabel

После этого можно добавлять переводы, нажимаем создать – в графе имя параметра пишем название параметра (его мы будем использовать в шаблонах) можно писать на кириллице или в латинице кому как удобно. В графе Id ничего ставить не нужно, он присвоиться автоматически при сохранении. В графе перевода ru – пишем русский текст, в графе en – пишем английский перевод этого слова. Сохраняем, теперь можно использовать это слово в шаблонах или чанках сайта вызов в таком формате [%имя параметра%]. Обязательно создать параметры Главная страница, Корневая папка, Страница не найдена с заданием id этих ресурсов для каждого языка.

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

В некоторых случаях, когда используется сниппет Doclister или DLMenu нужно выбирать документы с разных языковых версий, может возникнуть сложность как указать в вызове сниппета с какой папки выбирать документы, на самом деле тут всё просто в модуле evoBabelLexicon задаём новый параметр например parent_menu в ru – указываем id папки откуда нужно выбирать русские документы, а в en – указываем id папки откуда нужно выбирать английские документы. В сниппете указываем &parents=`[%parent_menu%]` и всё у вас будет работать как нужно.

Источник: Создание Сайтов НН