при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска соб...
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeVue
Всем привет!
Делаю Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeVue 4 в менеджере, автоперевод, miniShop3, mSearch, SEO-сниппеты. Репозиторий: github.com/modx-pro/localizator3.

Нужны тестировщики. Поставьте на свой MODX 3, сломайте что получится, опишите в Issues. Так быстрее дойдём до бесплатного релиза.
Установка:



Один ресурс MODX, несколько строк в localizator3_content. ID ресурса общий для Fenom, pdoTools и ссылок. Babel клонирует дерево; здесь одно дерево с переводами полей.
В менеджере: Localizator3 → Языки, вкладка Локализация на ресурсе (dropdown, Document / TV, «Перевести»). Vue через VueTools. На витрине: 6 сниппетов, Fenom, hreflang, sitemap.
Языки: key, name, HTTP host, cultureKey, rank. На ресурсе: Save, enable/disable, автоперевод. Поля формы настраиваются через OnBuildLocalizationTabs.
getLanguageList — переключатель языков (list или dropdown). URL ведёт на ту же страницу на другом host.
getLocalizedResources — pdoResources / pdoMenu / msProducts с JOIN локализации. Параметр onlyWithLocalization отсекает ресурсы без перевода.
makeLocalizedUrl — URL ресурса с учётом языка и http_host.
getLocalizedField — одно поле или TV на указанном языке; если перевода нет, вернёт default или значение из modResource.
getLocalizedCanonical — в : canonical и hreflang для всех активных языков.
getLocalizedSitemap — XML sitemap с alternate-ссылками по языкам.
Fenom-модификаторы (текущий язык из localizator3_key):
Имена и параметры могут измениться до релиза. Целевые примеры из roadmap F11:
getCurrentLanguage (1.1) — key, cultureKey, name или http_host текущей локали.
hasLocalization (1.1) — есть ли активный перевод ресурса на языке. Для условий в Fenom.
getResourceLocalizations (1.1) — массив языков ресурса: key, name, url, active, hasTranslation. Свой switcher без getLanguageList.
getLocalizedField / locfield + fallbackLanguage (1.1) — если перевода нет, взять язык по умолчанию из настроек.
makeLocalizedUrl + localized alias (1.1, F4-04) — URL с отдельным slug на язык, не только другой host.
getAlternateUrls (1.2) — alternate-ссылки текущего ресурса (данные для своего шаблона, без готового HTML как у getLocalizedCanonical).
getLocalizedContent (1.2) — вся строка localizatorContent + TV: массив или JSON для tpl / JS.
getDefaultLanguage (backlog) — key языка из localizator3_default_language.
locoptiondescription (1.2, Fenom) — локализованное description опции MS3 (caption уже есть в locoptioncaption).
msProduct, locOption, locProductOption. mSearch: поля ru-pagetitle, en-content и т.п.
HTTP host, cookie localizator3_key, Accept-Language. localizator3_404_if_no_localization. Массовый перевод:
Каталог: docs/roadmap.md.
1.0.8-beta (выпущен): VueTools, lean bundles, inline-форма «Локализация», 6 сниппетов, MS3, mSearch, автоперевод.
1.0.9-beta: composables в grids, декомпозиция Vue-компонентов, hard check VueTools, fix URL в getLanguageList.
1.1.0:
Делаю Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeVue 4 в менеджере, автоперевод, miniShop3, mSearch, SEO-сниппеты. Репозиторий: github.com/modx-pro/localizator3.

Нужны тестировщики. Поставьте на свой MODX 3, сломайте что получится, опишите в Issues. Так быстрее дойдём до бесплатного релиза.
Установка:
- transport из Releases (1.0.8-beta);
- сборка: vueManager && npm run build, php _build/build.php (нужны VueTools ≥1.1.2-pl и pdoTools).



Один ресурс MODX, несколько строк в localizator3_content. ID ресурса общий для Fenom, pdoTools и ссылок. Babel клонирует дерево; здесь одно дерево с переводами полей.
В менеджере: Localizator3 → Языки, вкладка Локализация на ресурсе (dropdown, Document / TV, «Перевести»). Vue через VueTools. На витрине: 6 сниппетов, Fenom, hreflang, sitemap.
Кому подойдёт
- мультидомен и несколько языков на MODX 3;
- miniShop3 с переводами товаров и опций;
- pdoTools / Fenom, один ресурс, локализованные поля;
- автоперевод (Yandex, Google, DeepL, LibreTranslate, MyMemory) и CLI.
Менеджер
Языки: key, name, HTTP host, cultureKey, rank. На ресурсе: Save, enable/disable, автоперевод. Поля формы настраиваются через OnBuildLocalizationTabs.
Сниппеты (1.0.8-beta)
getLanguageList — переключатель языков (list или dropdown). URL ведёт на ту же страницу на другом host.
{'!getLanguageList' | snippet}
{'!getLanguageList' | snippet : ['outputMode' => 'dropdown', 'activeClass' => 'current']}getLocalizedResources — pdoResources / pdoMenu / msProducts с JOIN локализации. Параметр onlyWithLocalization отсекает ресурсы без перевода.
{'!getLocalizedResources' | snippet : [
'snippet' => 'pdoResources',
'parents' => 0,
'tpl' => '@INLINE <li><a href="{$uri}">{$pagetitle}</a></li>',
'onlyWithLocalization' => 1
]}makeLocalizedUrl — URL ресурса с учётом языка и http_host.
<a href="{'!makeLocalizedUrl' | snippet : ['id' => $id, 'language' => 'en']}">English</a>getLocalizedField — одно поле или TV на указанном языке; если перевода нет, вернёт default или значение из modResource.
{'!getLocalizedField' | snippet : ['field' => 'pagetitle', 'language' => 'en']}
{'!getLocalizedField' | snippet : ['field' => 'introtext', 'language' => 'de', 'default' => '']}getLocalizedCanonical — в : canonical и hreflang для всех активных языков.
{'!getLocalizedCanonical' | snippet}getLocalizedSitemap — XML sitemap с alternate-ссылками по языкам.
{'!getLocalizedSitemap' | snippet : ['parents' => '0', 'depth' => 5]}Fenom-модификаторы (текущий язык из localizator3_key):
{$pagetitle | locfield}
{$id | locfield : 'introtext'}
{$option_id | locoptioncaption : 'Цвет'}
{$product_option_id | locproductoptionvalue : '—'}Сниппеты в roadmap (ещё нет в 1.0.8)
Имена и параметры могут измениться до релиза. Целевые примеры из roadmap F11:
getCurrentLanguage (1.1) — key, cultureKey, name или http_host текущей локали.
{'!getCurrentLanguage' | snippet : ['field' => 'key']}
{'!getCurrentLanguage' | snippet : ['field' => 'name', 'format' => 'json']}hasLocalization (1.1) — есть ли активный перевод ресурса на языке. Для условий в Fenom.
{if '!hasLocalization' | snippet : ['id' => $id, 'language' => 'en']}
<a href="{'!makeLocalizedUrl' | snippet : ['id' => $id, 'language' => 'en']}">English version</a>
{/if}getResourceLocalizations (1.1) — массив языков ресурса: key, name, url, active, hasTranslation. Свой switcher без getLanguageList.
{foreach '!getResourceLocalizations' | snippet : ['id' => $id] as $loc}
<a href="{$loc.url}" hreflang="{$loc.key}" class="{if $loc.is_current}active{/if}">{$loc.name}</a>
{/foreach}getLocalizedField / locfield + fallbackLanguage (1.1) — если перевода нет, взять язык по умолчанию из настроек.
{'!getLocalizedField' | snippet : [
'field' => 'pagetitle',
'language' => 'en',
'fallbackLanguage' => 'ru'
]}makeLocalizedUrl + localized alias (1.1, F4-04) — URL с отдельным slug на язык, не только другой host.
{'!makeLocalizedUrl' | snippet : ['id' => $id, 'language' => 'en']}
{* ожидается: /en/about-us вместо общего alias на en.site.com *}getAlternateUrls (1.2) — alternate-ссылки текущего ресурса (данные для своего шаблона, без готового HTML как у getLocalizedCanonical).
{set $alternates = '!getAlternateUrls' | snippet : ['id' => $id, 'format' => 'json']}
{* массив: key, url, hreflang *}getLocalizedContent (1.2) — вся строка localizatorContent + TV: массив или JSON для tpl / JS.
{set $loc = '!getLocalizedContent' | snippet : ['id' => $id, 'language' => 'en', 'format' => 'json']}getDefaultLanguage (backlog) — key языка из localizator3_default_language.
{'!getDefaultLanguage' | snippet}locoptiondescription (1.2, Fenom) — локализованное description опции MS3 (caption уже есть в locoptioncaption).
{$option_id | locoptiondescription : 'Описание по умолчанию'}miniShop3 и mSearch
msProduct, locOption, locProductOption. mSearch: поля ru-pagetitle, en-content и т.п.
SEO и CLI
HTTP host, cookie localizator3_key, Accept-Language. localizator3_404_if_no_localization. Массовый перевод:
php core/components/localizator3/scripts/translate_resources.php --parents=1 --depth=5
Roadmap
Каталог: docs/roadmap.md.
1.0.8-beta (выпущен): VueTools, lean bundles, inline-форма «Локализация», 6 сниппетов, MS3, mSearch, автоперевод.
1.0.9-beta: composables в grids, декомпозиция Vue-компонентов, hard check VueTools, fix URL в getLanguageList.
1.1.0:
- overview переводов на ресурсе;
- Rich text (MODX RTE) в форме;
- копирование с другого языка, batch translate;
- локализованный alias на язык;
- getCurrentLanguage, hasLocalization, getResourceLocalizations, fallback в getLocalizedField / locfield (см. блок «Сниппеты в roadmap» выше).
- mFilter + locOption;
- XLIFF и CSV;
- переиндексация mSearch при save;
- getAlternateUrls, getLocalizedContent, Fenom locoptiondescription.
- очередь переводов в UI;
- sync shared TV;
- UI перевода лексиконов;
- translation memory, выход из beta.
Требования
- MODX 3.0+, PHP 8.2+
- VueTools ≥1.1.2-pl, pdoTools
- miniShop3, mSearch по желанию
Поблагодарить автора
Отправить деньги
Комментарии: 4
Огонь! Я ставил Localizator на несколько своих сайтов. Были сложности и приходилось как-то обходить. Но сам компонент вполне был рабочий.
Потестим.
Потестим.
Кстати вопрос возник. Раздражало что для базовой локализации надо было делать версию ru — т.е. создавать дублирование информации из полей и доп.полей. Это приводило к путанице. Могли записать в Content или доп. поля базовые, а на сайте информация не обновлялась. И приходилось делать проверки и условия Fenom чтобы для ru версии брать содержимое из основных полей, а не из локализации ru — а ее нельзя было не создавать. Как в новой версии будет? Тоже дублировать в ru локализацию? Можно ли сделать режим выбора использовать ru локализацию (или ту которая по умолчанию в localizator3_default_language) или брать для базовой локализации информацию из базовых полей и доп.полей/опций? Вижу что есть getLocalizedField который «если перевода нет, вернёт default или значение из modResource.» Вот это прям огонь.
И еще вижу из описания что есть переводы полей, TV-полей (MIGX тоже может переводить?) и опций товаров — вот это прям огонь огонь!
И еще вижу из описания что есть переводы полей, TV-полей (MIGX тоже может переводить?) и опций товаров — вот это прям огонь огонь!
Добавил localizator3_default_language
Выпустил новую версию:
[1.0.9-beta] — 2026-07-07
Добавлено
[1.0.9-beta] — 2026-07-07
Добавлено
- Настройка `localizator3_default_from_resource`: контент базового языка (`localizator3_default_language`) берётся из полей и TV ресурса. Во вкладке «Локализация» остаются только переводы.
- Методы `localizator::shouldUseResourceFields()`, `getLocalizedFieldValue()`, `buildDefaultLanguageSource()` и `localizatorContent::hydrateFromResource()`.
- PHP 8: в `findLocalization()` убрана передача `$request` по ссылке. В `OnHandleRequest` и `OnMODXInit` путь запроса передаётся через переменную. Устранён Fatal error «could not be passed by reference» на фронтенде.
- Установка на PHP 8.2: Symfony 7 вместо 8 в vendor, platform PHP 8.2, исправлен `platform_check.php` (#8).
- Resolver VueTools: корректный вызов `modTransportProvider::request()` в MODX 3, установка через общий helper. Сбой VueTools не прерывает установку Localizator3 (#8).
- Phinx-миграции: убрано двойное добавление MODX `table_prefix` к именам таблиц. Журнал миграций создаётся как `{table_prefix}localizator3_migrations`. Перед Phinx запускается repair для уже сломанных установок (#9).
- Удаление пакета: плагин `localizator3` и его события удаляются через resolver и атрибуты transport (`UNINSTALL_OBJECT`) (#10).
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.