
- MODX 2
- MODX 3
- miniShop2
- miniShop3
- PHP 7.2


msCatalyst работает с Babel, Localizator на MODX 2 и localizator3 на MODX 3. Пример: английская версия демо-каталога на Localizator, chelnysite.ru/en/.
Сниппет выбирает язык так:
&lang, если он задан;cultureKey контекста. Babel держит каждый язык в своём контексте, поэтому с Babel ничего настраивать не нужно.Язык входит в ключ кэша индекса и передаётся в AJAX-запросы. Русская и английская версии каталога не смешиваются.
Поставьте вызов сниппета в шаблон каждого языкового контекста с &parents своего каталога. Названия товаров, категорий и TV берутся из ресурсов этого контекста.
Синхронизация обновляет связанные переводы. Для каждого контекста из babel.contextKeys в сопоставлении полей есть «Заголовок (Babel en)», «Аннотация (Babel en)» и другие текстовые поля. Колонка title_en сама сопоставится с заголовком в контексте en. Записывается ресурс, который Babel связал с товаром. Новые переводы создаёт Babel, синхронизация товары без связи пропускает.
Если на сайте стоят и Localizator, и Babel, колонки вида title_en достаются Localizator, а колонки с пометкой Babel идут в Babel.
msCatalyst читает переводы из таблиц Localizator: pagetitle, longtitle, menutitle, introtext, description, content, названия категорий в фильтре «Раздел» и значения TV с включённой локализацией. Поиск идёт по переведённым полям. Карточки товаров выводятся через сниппет Localizator, если он установлен, поэтому msProducts в карточках тоже получает переведённые поля.
Товары без активного перевода на текущий язык скрыты. Чтобы показать их с исходными полями, задайте &langStrict=`0`.
На MODX 3 Localizator выходит отдельным пакетом localizator3 со своими таблицами. msCatalyst находит его сам. Подписи опций MiniShop3, переведённые в localizator3, становятся названиями фильтров на этом языке. Переводы значений опций localizator3 привязывает к записям, которых в MiniShop3 нет, поэтому значения переводите на вкладке «Переводы».
В сопоставлении полей появляется группа «Переводы»: «Заголовок (en)», «Содержимое (en)» и локализованные TV для каждого языка. Колонки вида name_en, en_title или «Заголовок (EN)» сопоставляются с переводом, а не с основным полем. Если перевода у товара ещё нет, синхронизация его создаст. Откат запуска возвращает прежние переводы.
Экспорт выгружает переводы теми же колонками, так что файл можно отдать переводчику и загрузить обратно.
Лексиконы ru и en входят в пакет. Остальное переводится на вкладке «Переводы» страницы компонента:
Пустое поле означает «показывать оригинал». Кнопки «Скачать CSV» и «Загрузить CSV» нужны для перевода в Excel или у переводчика: в файле колонки key и translation, разделитель ;.
Вкладка пишет обычные записи лексикона в пространство имён mscatalyst, поэтому их можно править и в «Управлении словарями»:
| Запись | Тема | Что переводит |
|---|---|---|
mscatalyst_facet_<ключ> | default | Заголовок группы, например mscatalyst_facet_color. |
mscatalyst_value_<значение> | values | Значение во всех фильтрах, например mscatalyst_value_красный. |
mscatalyst_value_<ключ>_<значение> | values | Значение в одной группе, например mscatalyst_value_color_красный. Эта запись важнее общей. |
mscatalyst_sort_<значение> | default | Подпись сортировки. Дефисы заменены на _, например mscatalyst_sort_ms_price_desc. |
Записи для модификатора |lex=, например color_red, тоже переводятся здесь.
Значения сравниваются без учёта регистра. Подходит и то, что хранится в базе, и то, что видит покупатель: имя производителя или подпись варианта TV.
|title= в &facets;mscatalyst_facet_<ключ> из лексикона пакета;mse2_filter_msoption_color или mse2_filter_tv_color. Переводы, сделанные для mFilter2, подхватываются сами;ms: (ms2_product_price или ms3_product_price).Записи одного языка не попадают в другой. MODX подставляет английские записи, когда перевода нет, но msCatalyst читает заголовки и значения только для языка запроса.