Как настроить многоязычность для товаров, локализацию контента на разных языках в модулях "Задания", "Услуги", "Маркет" в пользовательском пакете (собрании) переработанных модулей и плагинов, в сборке скриптов фриланс биржи и маркетплейса.
Алгоритм действий для всех трех модулей одинаков.
Инструкцию рассмотрим на примере модуля, - market. Названия расширений используем по коду в админке в списке расширений.
Требования перед началом работы созданию мультиязычного контента, - структуры категорий и товаров маркетплейса.
1. Установленный модуль "MarketPlace" коммерческой версии - market.
2. Установленный и настроенный плагин "Content Internationalization" - i18n. Как его настроить инструкция здесь.
Имейте ввиду, пока не выполнен пункт№2 - нет смысла переходить к пункту№3
3. Устанавливаем плагин "Module Market Content Internationalization" - i18n4market и приступаем.
Ход работы и порядок действий
Всё начинается с мультиязычности (интернеционализации) самой структуры модуля.
Например, категорий много. Писать буду по своему, то есть для меня такой путь быстрее, но всегда можно одной и той же цели достичь разными путями.
1. Подготавливаем коды корневых (родительских) категорий, в которых будут мультиязычные товары.
Как правильно заполнять структуру категорий - это отдельная тема.
Путь первый: Идем в phpMyAdmin открываем свою базу и скролим в самый низ до префиксбазы_structure.
Жмем на имя этой таблицы.
Жмем на кнопку "Экспорт".
Выбираем "CSV for MS Excel".
Жмем кнопку "Вперед". - Смотрите скриншоты. на скриншоты можно нажимать, если нужно увеличить.
Открываем скачанный файл table_structure.csv, например "LibreOffice Calc".
Кликаем по ячейке "B1" и сортируем, не важно во возрастанию или убыванию.
Нас интересует все, что в колонке "structure_code", где слева в колонке "structure_area" напротив прописано "market" - выделяем и копируем.
Напишу по другому.
После сортировки, смотрим в колонке "structure_area", где у нас прописано "market", а напротив, в колонке "structure_code" справа у нас прописаны коды корневых (имеют точку после первого значения) категорий, которые нам нужны для мультиязычности.
Выделяем эти коди копируем, вставляем, например в текстовый документ программы "Notepad++" и форматируем весь текст так, чтобы всё было записано в однустроку через запятую. Никаких пробелов и энтеров. С форматированием закончили выделяем всё и копируем.
Путь второй: открываем две вкладки, - в одной структуру модуля market, а вдругой конфигурацию плагина i18n4market и из полей первой копируем коды корневых категорий в поле второго, в одну строку, через запятую.
2. Конфигурация плагина "Module Market Content Internationalization" - i18n4market.
Заходим в настройки, и справа от "Корневые категории для применения i18n4market" вставляем скопированные коды категорий.
В форме ниже, - Список локалей сайта и каждая локаль с новой строки, формат: locale_code|Заголовок локали, - как пример:
en|English ru|Русский ua|Українська
Всё. закрываем админку и идем прямо в список товаров.
3. Мультиязычность категорий модуля "маркетплейса", она же "Интернационализация структуры".
3.1. Открываем сразу два шаблона своей темы market.list.tpl и market.tpl - в обоих вставляем две кнопки
<!-- IF {PHP.usr.isadmin} OR {PHP.usr.maingrp} == 5 -->
<li>
<a href="{PHP|cot_url('admin', 'm=market')}" uk-tooltip="{PHP.L.market_admin_moder_mod}" title="{PHP.L.market_admin_moder_mod}" class="uk-btn-icon-fa uk-btn-dangrlight shadow-dangrlight">
<i class="fa-solid fa-gear fa-spin fa-2xl"></i>
</a>
</li>
<!-- IF {PHP.cot_plugins_active.i18n4market} -->
<li>
<a href="{PHP|cot_url('i18n4market', 'm=structure')}" uk-tooltip="{PHP.L.i18n4market_structure}" title="{PHP.L.i18n4market_structure}" class="uk-btn-icon-fa uk-btn-dangrlight shadow-dangrlight">
<i class="fa-solid fa-language fa-xl"></i>
</a>
</li>
<!-- ENDIF -->
<!-- ENDIF -->
Потом, что нужно всегда можно удалить.
Стили мои, никто не мешает сделать по-своему.
3.2 Шаблон market.tpl.
в нужном месте "под рукой" размещаем
<!-- IF {PHP.cot_plugins_active.i18n4market} -->
<div class="uk-card uk-card-small shadow-sldlight uk-background-blur-sldlight uk-card-hover uk-border-rounded uk-margin-medium-bottom">
<div class="uk-card-body">
<!-- BEGIN: I18N_LANG -->
<p class="uk-card-title">{PHP.L.Language}:</p>
<ul class="uk-list uk-list-divider">
<!-- BEGIN: I18N_LANG_ROW -->
<li>
<a href="{I18N_LANG_ROW_URL}">{I18N_LANG_ROW_TITLE}</a>
</li>
<!-- END: I18N_LANG_ROW -->
</ul>
<!-- END: I18N_LANG -->
<div class="buttons">{PAGE_I18N_TRANSLATE} {PAGE_I18N_DELETE}</div>
<!-- IF {PHP.item_i18n4market_locales} == '' -->
<a href="{PHP|cot_url('plug', 'e=i18n4market&m=market&a=add&id={PHP.item.item_id}')}" class="uk-button uk-button-success">{PHP.L.i18n4market_translate}</a>
<!-- ENDIF -->
</div>
</div>
<!-- IF {PHP.item_i18n4market_locales} > 1 -->
<!-- IF {PHP.item.ipage_locale} == 'en' OR {PHP.item.ipage_locale} == 'ua' -->
<!-- IF {PHP.i18n4market_admin} OR {PHP.usr.isadmin} -->
<div class="uk-card uk-card-small shadow-sldlight uk-background-blur-sldlight uk-card-hover uk-border-rounded uk-margin-medium-bottom">
<div class="uk-card-body">
<ul class="uk-list uk-list-divider">
<!-- IF {PHP.item.ipage_locale} == 'en' -->
<li>
<a href="{PAGE_ADMIN_EDIT_URL}" class="uk-button uk-button-warning">{PHP.L.i18n4market_editing}</a>
</li>
<!-- ENDIF -->
<!-- IF {PHP.item.ipage_locale} == 'ua' -->
<li>
<a href="{PAGE_ADMIN_EDIT_URL}" class="uk-button uk-button-primary">{PHP.L.i18n4market_editing}</a>
</li>
<!-- ENDIF -->
</ul>
</div>
</div>
<!-- ENDIF -->
<!-- ENDIF -->
<!-- ENDIF -->
<!-- ENDIF -->
Имейте ввиду, - код приведенный выше, это если у нас по дефолту стоит - русский, то есть в конфиге
$cfg['defaultlang'] = 'ru';
3.3. Сам процесс интернеционализации структуры.
В пункте 3.1 в шаблон списка товаров и в саму карточку товара мы поставили по две кнопки, каждая вторая в каждом случае, - это кнопка со ссылкой на страницу создания англоязычного эквивалента названия категории и её описания, если в момент перехода по ссылке у нас был выбран английский язык интерфейса.
Если выбран русский - при переходе во ссылке откроется выбор локали, какую будем переводить, - имеется ввиду категории и описание. До самих товаров еще далеко. Когда переведем все категории, а уже только потом приступаем к переводу товаров.
Переводим структуру модуля маркет на английский
Переводим структуру модуля маркет на украинский
4. Перевод карточек товара (перевод публикаций в модуле маркетплейса)
Уже только после того, как перевели полностью на все языки структуру/категории приступаем к товарам.
4.1. Идем в любую карточку товара. в пункте №3.2 мы там прописали специальные кнопки для операций с переводом.
какой бы язык интерфейса сейчас бы не был выбран, - всё равно будет линк на перевод. смотрите скриншоты.
4.2. Жмем кнопку "перевести" и заполняем значения перевода, например у нас украинский.
4.3. Сохранеямся и возращаемся в карточку товара.
По кнопке сохранения мы уже автоматом попадаем в украиноязычную версия нашей карточки товара, потому как переводили на украинский.
Теперь у нас появились дополнительные кнопки для управления - редактирование перевода и список уже существующих локализаций у этой карточки товара. смотрите скриншот.
4.4. Меняем язык интерфейса на английский
и у нас дополнительно появляется ссылка "Translate" - то есть перевести на английский. Жмем. переводим. сохраняемся.
Смотрите скриншоты.
Всё.
Автор: webitproff
03.04.2024
прим.0.9.25 (09.04.2024)
// $display = ($hidePrivate && $isModule) ? cot_auth($extension, $code, 'W') : true; $display = ($hidePrivate && $isModule) ? cot_auth($extension, $code, 'R') : true;









