Skip to content
msCatalyst
msCatalyst
Фасетный фильтр, поиск и синхронизация каталога для miniShop2 и MiniShop3
  • MODX 2
  • MODX 3
  • miniShop2
  • miniShop3
  • PHP 7.2
  1. Компоненты
  2. msCatalyst
  3. Мультиязычность

Мультиязычность ​

msCatalyst работает с Babel, Localizator на MODX 2 и localizator3 на MODX 3. Пример: английская версия демо-каталога на Localizator, chelnysite.ru/en/.

Язык запроса ​

Сниппет выбирает язык так:

  1. параметр &lang, если он задан;
  2. язык Localizator для текущего адреса;
  3. cultureKey контекста. Babel держит каждый язык в своём контексте, поэтому с Babel ничего настраивать не нужно.

Язык входит в ключ кэша индекса и передаётся в AJAX-запросы. Русская и английская версии каталога не смешиваются.

Babel ​

Поставьте вызов сниппета в шаблон каждого языкового контекста с &parents своего каталога. Названия товаров, категорий и TV берутся из ресурсов этого контекста.

Синхронизация обновляет связанные переводы. Для каждого контекста из babel.contextKeys в сопоставлении полей есть «Заголовок (Babel en)», «Аннотация (Babel en)» и другие текстовые поля. Колонка title_en сама сопоставится с заголовком в контексте en. Записывается ресурс, который Babel связал с товаром. Новые переводы создаёт Babel, синхронизация товары без связи пропускает.

Если на сайте стоят и Localizator, и Babel, колонки вида title_en достаются Localizator, а колонки с пометкой Babel идут в Babel.

Localizator ​

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 входят в пакет. Остальное переводится на вкладке «Переводы» страницы компонента:

  1. выберите язык;
  2. впишите перевод в строку с названием фильтра или значением (цвет, страна, производитель, вариант TV или опции);
  3. нажмите «Сохранить».

Пустое поле означает «показывать оригинал». Кнопки «Скачать 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.

Порядок выбора заголовка группы ​

  1. перевод с вкладки «Переводы» или из «Управления словарями» для текущего языка;
  2. |title= в &facets;
  3. запись mscatalyst_facet_<ключ> из лексикона пакета;
  4. ключ mFilter2 того же фильтра, например mse2_filter_msoption_color или mse2_filter_tv_color. Переводы, сделанные для mFilter2, подхватываются сами;
  5. подпись TV, подпись опции или лексикон магазина для полей ms: (ms2_product_price или ms3_product_price).

Записи одного языка не попадают в другой. MODX подставляет английские записи, когда перевода нет, но msCatalyst читает заголовки и значения только для языка запроса.