«Freelance MarketPlace» Мультиязычность модулей
Как настроить многоязочность, локализацию контента в модулях "Задания", "Услуги", "Маркет" в пользовательском пакете (собрании) переработанных модулей и плагинов, в сборке скриптов фриланс биржи и маркетплейса
Как настроить многоязочность, локализацию контента на разных языках в модулях "Задания", "Услуги", "Маркет" в пользовательском пакете (собрании) переработанных модулей и плагинов, в сборке скриптов фриланс биржи и маркетплейса.
Алгоритм действий для всех трех модулей одинаков.
Инструкцию рассмотрим на примере модуля, - 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 - в обоих вставляем две кнопки
Как настроить многоязочность, локализацию контента в модулях "Задания", "Услуги", "Маркет" в пользовательском пакете (собрании) переработанных модулей и плагинов, в сборке скриптов фриланс биржи и маркетплейса
Как настроить многоязочность, локализацию контента на разных языках в модулях "Задания", "Услуги", "Маркет" в пользовательском пакете (собрании) переработанных модулей и плагинов, в сборке скриптов фриланс биржи и маркетплейса.
Алгоритм действий для всех трех модулей одинаков.
Инструкцию рассмотрим на примере модуля, - 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. Сохранеямся и возращаемся в карточку товара.
По кнопке сохранения мы уже автоматом попадаем в украиноязычную версия нашей карточки товара, потому как переводили на украинский.
<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" - то есть перевести на английский. Жмем. переводим. сохраняемся.
Смотрите скриншоты.
Всё.
https://abuyfile.com/ru/forums/marketplace-script/multilingual_mod/topic51
4.4. Меняем язык интерфейса на английский
и у нас дополнительно появляется ссылка "Translate" - то есть перевести на английский. Жмем. переводим. сохраняемся.
Смотрите скриншоты.
Всё.
https://abuyfile.com/ru/forums/marketplace-script/multilingual_mod/topic51
Abuyfile
«Freelance MarketPlace» Мультиязычность модулей | Мультиязычность модулей - Форумы | aBuyFile
Как настроить многоязочность, локализацию контента в модулях "Задания", "Услуги", "Маркет" в пользовательском пакете (собрании) переработанных модулей и плагинов, в сборке скриптов фриланс биржи и маркетплейса
https://abuyfile.com/ru/market/plugincms/pagetuning
Плагин к модулю страниц - в любом месте сайта получаем и выводим меню дерево категорий с подкатегориями структуры модуля страниц.
Совместимость плагина "Меню категорий".
Плагин совместим с последней версией движка Cotonti, а на момент создания плагина это v.0.9.25 beta от 09.04.2024.
Работа плагина тестировалась на сервере с PHP v7.4.
Особенностью плагина явлется его мультиязычность, то есть если у вас два языка и больше, и названия категорий на разных языках, то при смене языка меняется и локализационнные названия категорий.
Демо плагина на скришотах и на этом сайте.
Для установки и работы плагина, разумеетстя требуется установленный модуль "Pages", без него плагин просто не установите.
На данный момент, установка плагина в админке простейшая, - "в один клик" и не имеет собственных настроек конфигурации.
Для скрытия категорий в меню, нужно просто убрать права все права у группы пользователей на эту категорию в настройках.
Плагин к модулю страниц - в любом месте сайта получаем и выводим меню дерево категорий с подкатегориями структуры модуля страниц.
Совместимость плагина "Меню категорий".
Плагин совместим с последней версией движка Cotonti, а на момент создания плагина это v.0.9.25 beta от 09.04.2024.
Работа плагина тестировалась на сервере с PHP v7.4.
Особенностью плагина явлется его мультиязычность, то есть если у вас два языка и больше, и названия категорий на разных языках, то при смене языка меняется и локализационнные названия категорий.
Демо плагина на скришотах и на этом сайте.
Для установки и работы плагина, разумеетстя требуется установленный модуль "Pages", без него плагин просто не установите.
На данный момент, установка плагина в админке простейшая, - "в один клик" и не имеет собственных настроек конфигурации.
Для скрытия категорий в меню, нужно просто убрать права все права у группы пользователей на эту категорию в настройках.
aBuyFile
Плагин "Дерево (меню) категорий" для модуля "Pages" скачать - Плагины для CMS
Плагин к модулю страниц - в любом месте сайта получаем и выводим меню дерево категорий с подкатегориями структуры модуля страниц. Плагины для Cotonti
Плагин "Connecting Libs" для сайтов на CMF Cotonti/
Тестировалось на последнем релизе движка: Core v.0.9.25 beta/DB v.0.9.25/PHP v.7.4.
Основное назначение плагина простое и опциональное подключение без правки основного шаблона сайта:
UIKit 3 - это легкий и модульный front-end фреймворк для разработки быстрых и мощных веб-интерфейсов.
Bootstrap 5.3 - мощный, расширяемый и многофункциональный инструментарий для создания интерфейса.
Font Awesome 6.5.2 - это интернет-библиотека иконок и набор инструментов, которыми пользуются миллионы дизайнеров, разработчиков и создателей контента.
jQuery v3.7.1 - это быстрая, небольшая и многофункциональная библиотека JavaScript. Она значительно упрощает просмотр HTML-документов и манипулирование ими, обработку событий, анимацию и Ajax благодаря простому в использовании API, который работает во множестве браузеров. Благодаря сочетанию универсальности и расширяемости jQuery изменил способ написания JavaScript миллионами людей.
Пользовательские стили как локальным так и внешним файлом.
Установка:
Папку "connectinglibs" закачать в папку с плагинами "plugins". Убедитесь, что при загрузке файлов на сервер не было потерь, и все файлы были закачаны.
Войдите в админку, найдите в расширениях плагин "Connecting Libs" и установите его.
В конфигурации плагина подключите то, что вам нужно. Всё - можно идти спокойно верстать.
https://github.com/webitproff/cot-connectinglibs
Тестировалось на последнем релизе движка: Core v.0.9.25 beta/DB v.0.9.25/PHP v.7.4.
Основное назначение плагина простое и опциональное подключение без правки основного шаблона сайта:
UIKit 3 - это легкий и модульный front-end фреймворк для разработки быстрых и мощных веб-интерфейсов.
Bootstrap 5.3 - мощный, расширяемый и многофункциональный инструментарий для создания интерфейса.
Font Awesome 6.5.2 - это интернет-библиотека иконок и набор инструментов, которыми пользуются миллионы дизайнеров, разработчиков и создателей контента.
jQuery v3.7.1 - это быстрая, небольшая и многофункциональная библиотека JavaScript. Она значительно упрощает просмотр HTML-документов и манипулирование ими, обработку событий, анимацию и Ajax благодаря простому в использовании API, который работает во множестве браузеров. Благодаря сочетанию универсальности и расширяемости jQuery изменил способ написания JavaScript миллионами людей.
Пользовательские стили как локальным так и внешним файлом.
Установка:
Папку "connectinglibs" закачать в папку с плагинами "plugins". Убедитесь, что при загрузке файлов на сервер не было потерь, и все файлы были закачаны.
Войдите в админку, найдите в расширениях плагин "Connecting Libs" и установите его.
В конфигурации плагина подключите то, что вам нужно. Всё - можно идти спокойно верстать.
https://github.com/webitproff/cot-connectinglibs
GitHub
GitHub - webitproff/cot-connectinglibs: Connecting compiled CSS and JavaScript libraries UIKit 3 and/or Bootstrap 5.3, icons FontAwesome…
Connecting compiled CSS and JavaScript libraries UIKit 3 and/or Bootstrap 5.3, icons FontAwesome and Custom styles for Cotonti - webitproff/cot-connectinglibs