[localizator] Мультиязычность, СЕО, автоперевод...

Языковые версии \ сателиты без контекстов, с автоматическим переводом всех полей ресурса + сео, да еще и автоперевод лексиконов — это я уместил в названии localizator.
Зачем я это сделал: бабeл мне ниразу не подошел, долго я держал один проект на migx «локализации», но слишком он не удобен, собрал все минусы которые успел выявить и решил их в своем компоненте.
Возможности
1. Создание псевдоконтекстов «локализации» (можно вместе работать через site.ru/en/ и ch.site.ru)

2. У ресурса есть таб, где заполняются все стандартные поля ресурса + сео, далее по нажатию кнопки это все можно перевести на другие языки, поле контента пока что поддерживает только tiny mce rte.

3. Для удобства пользования лексиконами есть отдельные таб на странице компонента, где видны только лексиконы компонента. Там же выбор языка. Тут тоже есть автоматизация перевода, одно нажатие кнопки.

Локализация pdoTools
Про работу с pdoResources и pdoMenu не забыл, вот пример:
{'!pdoMenu' | snippet : [
'parents' => 0,
'leftJoin' => '{
"localizator" : {
"class" : "localizatorContent",
"alias" : "localizator",
"on" : "localizator.resource_id = modResource.id"
}
}',
'select' => '{ "localizator" : "modResource.*, localizator.*, modResource.id" }',
'where' => '{ "localizator.key" : "' ~ ('localizator_key' | option) ~ '"}',
]}Итого все поля ресурса заменяются на переведенные.Как использовать
Все поля ресурса подменяются локализированными, кроме content, он выводится через {$_modx->resource.localizator_content}.
Настройки
Для автоматизации перевода нужен api key для яндекс переводчика, получить можно тут: translate.yandex.ru/developers/keys и указать в настройке localizator_key_yandex, так же что бы переводчик понимал с какого языка переводить нужно указать ключ локализации в localizator_default_language
Стоимость
Компонент полностью бесплатен, делал для своего проекта, думаю многим облегчит жизнь.
Отправить свое спасибо можно тут: yasobe.ru/na/localizator или попросить у меня номер карты в лс :)
Демо: localizator.but1head.ru/
Компонент отправил в modstore.pro, исходники на github.com/but1head/localizator
Комментарии: 353
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
жопой чуюуверен, что пригодится и не раз.P.S. Ссылка на Git не работает.
И никаких плагинов, контекстов и дополнительных настроек!
PS По описанию это похоже на Lingua (там тоже поля документа создаются для каждого языка. Очень интересно попробовать и сравнить, и да, сателлиты как раз делаю прямо сейчас, до чего же кстати, если все поойдет)
По поводу полей — создаются только pagetitle, longtitle, menutitle, introtext, description, content, seotitle, keywords, и подменяются если нужно. В настройках можно задать только перевод определенных полей.
Демо вполне рабочее, только там pdoTools не понимает что главная в /en/ это не / (ссылка), пока не знаю как его обучить, руками в чанке можно поправить.
На боевой проект в теории можно, я пока перестраиваю свой проект на эту связку.
Даже для минишопа пробовал — было «почти» хорошо.
Думаю добавлю в компонент кнопку «перевести все» и чтоб крон обратабывал.
Скорость загрузки идентична на всех языках, кэш работает для каждой версии.
Разницы в скорости без и с локализатором не заметил.
Сейчас у меня там выводится только домен.
P.S.: Видел для мультиязычности на MODX проект SLI (github), но обновлялся годы назад, плюс идет поверх системы, поэтому экспериментировать с ним не решился. Нативное решение очень радует). Отключенный перевод контента — это супер))
Делаете 2 псевдоконтекста и все.
попробовал что то сделать, нажимаю автоматический перевод пишет «Для автоматического перевода необходимо добавить хотя бы одну запись в таблицу»…
Что писать в localizator_default_language, ru Russian или Ru ???
Чот скудная документация, извините мозги после годовой работы без выходных не пашут, но хотелось бы поподробней информативней как то…
нужно на странице локализатора добавить основной язык (допустим русский) + те, на которые нужно перевести (допустим украинский) и прописать http hosts
ru
после всего этого нужно на странице ресурса во вкладке локализации (почему не во вкладке «документ» — не знаю) создать «перевод» (еще одна странность вытекающая из первой, так как это не перевод, а основной текст) и заполнить все поля на основном языке, после этого уже можно жать на автоперевод
вопрос создателю: будет ли в будущем возможность перевода любых полей, тв параметров, минишоповских и т.п.?
спасибо за компонент!
Если кто-нибудь задонатит yasobe.ru/na/localizator то демка чудом оживет.
При переходе на Main — ведет на ru версию.
Можешь запилить исходники демо-сайта, я имею в виду элементы, тоже на GitHub? Я что-то не хочу быдлокодить, но в упор не понимаю, как можно сделать ссылки в меню. А так залез и смотришь, все что хочешь
Не знаете почему вот так всё? Без подписей, надписей?
Контексты нужно создавать?
Можно в паре предложений маленький «fast start»?
2) в настройке localizator_default_language указываем ключ основной локализации (у меня это ru, на скрине pt)
3) в настройке localizator_key_yandex указываем апи ключ яндекса, translate.yandex.ru/developers/keys
Конец.
Контент указывается в табе ресурса.
1. Вот главная страница. К ней сделана локализация во вкладке.
2. Вот настройки модуля
3. Вот системные настройки
И в итоге — перехожу по адресу sitename.com/en/ — получаю 404.
Где я что пропустил?
Пробовал подгружать через {$_modx->lexicon->load('minishop2:default')} — разницы нет.
Следовательно вам надо (возможно синтаксис не правильный)
или в плагине\сниппете
А вообще должно было «само», но видимо минишоп грузит словари раньше чем локализатор подменит язык.
Пока чтото не особо выходит(
Теги товаров \ тв параметры не получится, только костылями
вообще запутался, может посмотрите доступ в админку дам, отблагодарю
Есть 2 языка RU EN
Создал два псевдоконтекста, во вкладке Локализация при добавлении перевода можно выбрать эти оба.
То есть получается что, чтобы создать ресурс с переводом, необходимо заполнить 3 вкладки?
1* Основная (там что в основной вкладке Документ)
2* RU
3* EN
Я правильно понял или есть какие-то тонкости?
И у каждого такого сайта 2 языка будет. На контекстах уже не получится, насколько я понимаю, т.к. их функции заняты. Ваше решение, кажется, то, что нужно. Только еще 2 моментна не понял:
1)может ли одна страница быть на 2х языках, но иметь разный темплейт?
2)не очень понял про автоматический перевод. Обязательно ли его подключать и использовать? Можно ли заполнять pagetitle, longtitle и т.п. вручную? Потому что в будущем, возможно, будет китайский язык добавлен, и нет уверенности, что яндекс переводчик нормально переведет.
1) Да, в плагине можно проверять $modx->localizator_key и от него менять шаблон, смотрите плагин
2) Можно вручную
Свои контексты можете удалять (хотя локализатор для одного контента сделан, т.е. разделение новостей не предусмотрено, с другой стороны если новость не переведена на псевдоконтекст то она не выводится и выдает 404).
Псевдоконтексты вам нужны такие:
http_host: site.ru, ключ языка: ru
http_host: site.ru/en/, ключ языка: en
http_host: spb.site.ru, ключ языка: ru
http_host: spb.site.ru/en/, ключ языка: en
и т.д., или en.spb.site.ru…
У меня настроен Localizator на два языка( RU — domain.com, EN — domain.com/en/)
Столкнулся с такой проблемой, что при работе с mFilter2 и с выводом списка результатов с ajax кнопкой первая выборка нормально переводится, а после нажатия кнопки «Загрузить ещё» элементы подгружаются не с соответствующими переводами, а просто с плейсхолдерами. И на английской версии сайта(domain.com/en/), если выводить значение {$_modx->config.cultureKey}, то на «первых» результатах правильно выводится «en», а на подгруженных ajax'ом выводится «ru». Видимо при ajax запросе нужно как-то пробрасывать правильный cutureKey, вот только никак не могу понять как и куда…
логика такая, только тут еще запрос именно msearch2 бы выловить.
Получается и пространство имён нужно как-то подгружать с ajax'ом?
Установила компонент, в настройкак localizator_default_language указала, API ключ яндекс добавила, В Ресурсах Локализацию сделала, но заполненные поля не подтягиваются, надо все вручною, исходя из прочитанного понямаю что должно вроде подтягиваться, в настройках также попыталась указать названия дополнительных полей, чтоб они тоже переводились, но на сайт ничего не выводится. Через en.sitename.com выводит изначальный русский текст, а через sitename.com/en/ выводит ошибку 404
Если добавить вызовы в чанки, как у вас в изходниках как github, ничего не генерируется код остается кодом.
Подскажите плиз в чем ошибка и куда копать.
2 «контекста», ru и en. localizator_default_language = ru. У ресурса заполняется ru, нажимаете авто-перевод — получаете en. Смотрите в лог ошибок, там все должно быть написано. Возможно ключ заблокирован (не дает больше 1кк переводить в сутки). Если уж совсем все плохо контакты в профиле.
Подскажи, пожалуйста, как вывести pdomenu, чтобы срабатывала локализация, без использования fenom?
Вызываю так:
Лог:
localizator_key ничего не выводит, заменил на cultureKey, для других языков меню выводит, а вот для ru пусто.
ситуация такая, что есть 2 контекста для регионов.
site.ru
site.ru/region/
Переключение контекстов сделано по плагину Безумкина bezumkin.ru/sections/tips_and_tricks/2439/
Настройка локализации
prntscr.com/ftjy5v
prntscr.com/ftjxlz
Для контента нашел: {$_modx->resource.localizator_content}, но не понимаю, как это использовать))
пока получилось только вывести pagetitle.
Дополнение крутое.
С tinymce работает.
{$_modx->resource.localizator_content}
Вот так.
Проверь, еще должен быть включен fenom для обработки страниц (системные настройки / pdotools)
Создал на хостинге поддомен. В настройках локализатора создал два псевдоконтекста
site.ru
en.site.ru
Перехожу на en.site.ru выдает 500 ошибку
Если делать через папку /en/ все работает
Как корректно настроить работу через поддомен?
Можете прислать доступ, гляну. Контакты в профиле.
При переключении языков почему-то выводятся разные корзины. Т.е. происходит независимое добавление товаров на разных локализациях. Подозреваю, что это связано с тем, что у меня одна из локализаций сделана на поддомене.
Как побороть эту проблему?
Решение
В системной настройке session_cookie_domain указал .site.com
Подскажите пример, как вывести переведённые поля pagetitle и description у товаров в категории минишопа?
{$_modx->resource.description}
Все стандартно, компонент подменяет значения
А как получить их в каталоге товаров, т.е через msProducts?
Этот коммент видел, но у меня не получилось сделать modx.pro/components/12012-localizator-multilingual-seo-translation/#comment-82299
Вот такой плагин получился (возможно что-то лишнее):
Попытался сделать с учетом папок, но тоже не хочет работать…:
OnWebPageInit
OnParseDocument
OnLoadWebDocument
msOnBeforeAddToCart
msOnBeforeRemoveFromCart
msOnBeforeChangeInCart
msOnSubmitOrder
msOnChangeOrderStatus
Поставил у себя — что-то ничего не сработало. События назначил.
Для языков типа site.ru/en/ подходит?
Или как через API создать перевод.
Доступные поля можно посмотреть в БД
На выходе получаю просто `Array`
Не вижу отличий, но он, по крайней мере, сохранен у меня в консоли.
2. Перенести контен в основной язык этим скриптом (добавить нужные поля 'content' => $resource->content,) modx.pro/components/12012/#comment-83962
3. Перевести этим скриптом modx.pro/components/12012/#comment-93457
Пробую так: prnt.sc/lfgYjY8GrPRL
Ругается на синтаксическую ошибку…
Скрипт сработал
Но локализации spb в ресурсах не добавились:https://prnt.sc/uKX81XjRPLcN
Вот скрипт:
1. Каким образом необходимо выполнить вышеуказанный код для переноса контента ресурсов (например, товары miniShop2) из определенной категории (например, id-11) в языковую версию (ru)?
2. Как «потом вызывать процессор core/components/localizator/processors/mgr/content/translate.class.php»?
Пробую так: prnt.sc/lfgYjY8GrPRL
Ругается на синтаксическую ошибку…
Для пунктов фильтрации по цвету решил вводить цвета в опции на латинице и потом через словарь выводить перевод.
А как быть с названиями категорий?
translit — сниппет транслитерации.
А подтянуть перевод из локализации никак нельзя? Это же названия родительских ресурсов по сути.
Если как в топике сделать leftJoin, не работает?
У меня просто не было категорий в фильтре…
Получается надо сначала приджойнить категории, а потом джойнить к категориям и продуктам локализатор. Так чтоли?
Вызов фильтра:
про категории только джойны
В результате сделал через сниппет. В него передается id категории, а на выходе локализованный pagetitle.
Не знаю насколько это правильное решение, но по крайней мере работает.
el заменить на cultureKey основного языка.
И уже ниже можно использовать {$site_url} для правильной ссылки на главную.
Кажется, этого, в моем случае по крайней мере, было бы достаточно… Кодить, вот, не умею, чтоб проверить.
Тоже, правда, костылем выглядит…
Локализатор меняет значение id товара в форме с кнопкой Купить, поэтому в корзину добавляется другой товар.
То есть вместо id товара выводится id записи в таблице локализатора.
Подскажите, как поправить?
Сниппет getLocalizatorField
Вызов:
Хотелось бы выводить так:
Написал модификатор для этого. Буду благодарен, если кто-то улучшит код.
Теперь он не путается со сниппетом localizator и дружит с ТВ полями
Работает так
Можно использовать id tv поля, можно имя (видно из кода)
Запилил я это все в плагин (проверено)
Галочку не забудьте
И для страждущих getImageList (проверено)
или даже так, когда данные в другом ресурсе (не успел проверить, но вроде должно)
Пробовал так
Пусто
Пробовал так
Тоже пусто
Localizator отрабатывает, но термины из словаря minishop2 не заменяются.
Пробовал добавлять в шаблон
но термины все равно не подменяются.
site.com/ru/ и site.com/en/
в HTTP HOST (localizator) прописано site.com/ru/ и site.com/en/
вывожу
{'site_url' | option} или {$_modx->config.site_url}и получаю site.com/ а должно быть site.com/ru/ или /en/Посмотрел на примере у Владимира и там тоже самое если перейти на EN и посмотреть ссылку в шапке на логотипе, то она ведет на русский контекст
Как правильно выводить линк на главную страницу того (псевдо) контекста где сейчас находится пользователь а не посылать его на основной по умолчанию web
<a class="site-logo" href="{'site_url' | option}">Site</a>или<a class="site-logo" href="{'site_url' | option}{'cultureKey' | option}/">Site</a>Тебе скорее всего подойдет такой вариант:
Ниже уже можешь использовать переменную $site_url
Простите за дубль вопроса, невнимательно прочитал топик.
А как сделать что бы нельзя было попасть на site.com а сразу перекидывать пользователя на /ru/ или /en/?
У меня nginx + apache и в последнем
php_flag register_globals Off AddDefaultCharset utf-8 RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/$ [NC] RewriteCond %{HTTP:Accept-Language} (ru|uk|by|kz) [NC] RewriteRule .* https://site.com/ru/ [R=302,L] RewriteCond %{REQUEST_URI} ^/$ [NC] RewriteRule .* https://site.com/en/ [R=302,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]Сделал вывод в placeholders и добавил css class «active»
getLanguages
В шаблоне
Содержимое section-langs-1
Содержимое section-langs-2
На уникальность не претендую, но уверен что кому то поможет.
Критика и правки приветствуются.
Сделал такой сниппет getLanguageName:
В чанках сделал так:
чанк section-langs-1
Чанк: section-langs-2:
Чанк вывода панели выбора языков:
Вывожу для Bootstrap 5, а не как в
Причем как видно я переделал отображение знака языка не через картинку а через flag_24.png.
Использовал пример под Babel с
Заменил в нем косяки (языки kg на самом деле ky (там ky вообще какой то левый флаг не понял что за страна), ir (Иранский) у меня оформлен как fa (персидский),
Добавил стили
в настройках .htaccess добавил так:
Получилась такая красота https://disk.yandex.ru/i/MG9-_uxLZDNTEA
Файл с иконками языка https://disk.yandex.ru/i/y-G8apn1dSooww
Файл css стилей https://disk.yandex.ru/d/R-eJsFVVQP5OmA
Получилась такая панелька.
Можно было просто добавить еще один плейсхолдер 'languageName'=> $language->name (к имеющимся cultureKey, active и url) в сниппете getLanguages. В чанках подставлять просто {$languageName}
в новом FireFox (56.0.1 (64-бит)) не прокручивается окно локализации и не дает в контент сделать запись.
В Хроме все нормально (Версия 61.0.3163.100 (Официальная сборка), (64 бит)). Win 8.1
и выводит ли через феном site_url
Не работает
Через феном не выводит нужный site_url, а просто дефолт
у меня подмена site_url для феном такая, но вот беда пагинацией
Пагинация выдает такие ссылки
site.ru/en/en/cat.html?page=2
Или это глюк pdoPage, а точнее глюк формирования page.nav?
Остальные сниппеты нормально работают, в том числе uri в самом pdoPage, т.к. обертка pdoResource
Сейчас нет компа под рукой
Так тоже выводит дефолтный site_url
У тебя подмена плейслохолдера только происходит
т.е.
Все таки я склоняюсь, что pdoPage не дружит с base, но на это наверно только Василий может ответить)
В ресурсе sitemap укажите «настройки» > тип содержимого XML
и т.д.
Но на старте возникает проблема:
при вставки в локализатор контента, он не вставляется, и не переводится соответственно. Остаются заголовки, И так далее, а сам контент исчезает при повторном открытии: Видно на видео
На сайте два языка: русский и английский. Создал, к примеру, два «контекста» site.com и site.com/en/
После переключения на англоязычную версию — ссылки в меню становятся на английском, но все равно ведут на русскоязычные версию сайта, т.е. должно быть быть site.com/en/about.html а ведет на site.com/about.html. При переходе на англоязычную версию сайта () в base отображается адрес site.com. Должен быть site.com/en/? А если вбить в base site.com/en/, то все стили на сайт ломаются, вообще не подгружаются
На сайте один контекст и два языка (en и ru) через localizator в системной настройке cultureKey стоит «ru»
Если вывожу в чанке {$_modx->config['cultureKey']} или {'localizator_key' | option} то вижу текущий язык, но при отработке фильтра ajax'ом язык {$_modx->config['cultureKey']} слетает на установленный в системных настройках а {'localizator_key' | option} вовсе не отображает.
событие OnInitCulture
Переписать можно куда лучше и универсальнее, просто задачи не стояло. Надеюсь, помог.
Вот демка localizator.tirinipul.ru/catalog/
Я уже перепробовал все что мог, не понимаю куда копать дальше.
Смотрите, если почитать код, то там можно увидеть, что есть обращение к куки.
Но у вас на демке куки не пишутся. Значит что? Что в этом проблема. И тут я вспомнил, что нужен еще один плагин. Я его просто в другое место спрятал и поэтому сразу не нашел.
Событие OnHandleRequest, например.
Нужно было еще сессии и кеш прибить.
Подскажите пожалуйста, поменять порядок вывода языков, если используешь приведенный тут getLanguages снипет?
Отметку активного языка сделал через условие, а как менять порядок вывода не знаю.
если 3 языка, то просто делать для каждого ресурса по 3 тв параметра для каждой характеристики и потом в шаблоне по условию, в зависимости от текущего языка их выводить?
Там все поля заполняются для каждого языка.
Может сделать второй контекст пустой?
Подскажите куда копать, может сталкивался.
Когда добавляю или пытаюсь изменить значение двух полей полей — Аннотация и SEO Описание, то после сохранения они заменяются на 0.
Думал может конфликтует с каким дополнением, но сделал на другом сайте тот же набор дополнений и там все по-прежнему работает. Как-то можно найти причину подмены текста на 0?
Последняя версия MODX и пакета
В этом файле тоже text на string нужно заменить
строка 83 и 90
github.com/but1head/localizator/blob/master/core/components/localizator/model/localizator/mysql/localizatorcontent.map.inc.php
В этом файле тоже text на string нужно заменить
строка 83 и 90
@but1head скажи хотя бы в какую сторону копать? Всё перерыл, но никак не могу понять — от чего зависит выбор именно Tiny.
На русском пустота, хотя в локализации и в стандартном теле ресурса есть текст:
С английским всё нормально:
В логах ничего нет, названия переводятся нормально.
Во вкладке локализация переведено с русского на русский и английская версия.
При cultureLAnguage ru ничего не выводит, при en всё как нужно. Разумеется Fenom везде включен.
but1head, очень надеюсь на твою помощь, ибо я в тупике…
Собственно, а как обновить ранее добавленные разделы и страницы, просто в ручную каждый добавлять не есть гуд, пробовал в самом приложении в словарях сделать автоперевод, он не работает, постоянно загрузка идет в логах ошибок нету, в консоле тоже пусто. Подскажите как обновить все?!
Предыдущий вариант выводил только иностранный перевод, но не русский :D Решил проблему гениально тупо, но работает:
а если не трудно то покажите шаблон 'tpl' => 'newsRowTpl'. Мне нужно тв с текстом вывести, не получается (через сниппет pdoResources).
Благодарю.
Делал вывод по аналогии как тут
Возник тот же вопрос… Вам удалось как-то его решить?
заменить на:
Добавление записи в словарь — работает, а удаление — нет в компоненте, у всех не работает?
пример использования:
Вот эту строчку
заменить на
Но костыль не очень конечно. Если обновлять на новые версии, то всё потрётся. Как придумать по деликатнее способ?
и что бы в письме покупателю они переведенные отправлялись?
Ну а в методе уже можно поменять логику, как душе угодно.
1. добавляем в чанк шаблон tpl.msEmail конструкцию из Получение и вывод pagetitle от другого ресурса с условием проверки локализации
и {$product.name} заменяем на наш {$tTitle}
проверяем наш шаблон письма через
Хотя pdoMenu, pdoResources, MIGX выводить без проблем.
Вот лог
Если вызываю так то выводит только на одном языке:
Добавляю вызов localizator не выводит вообще нечего:
Что я мог сделать не так?
на появляется когда меняешь настройку pdoFetch.class на pdotools.pdofetchlocalizator
И такой вызов
1.
2.
Локализации добавлены, язык по умолчанию выбран
UPD: вопрос снят — нужно было создать один перевод для основного языка на странице, тогда автоматический перевод работает. Было бы здорово указать это в доках))
Как migx тут получить? Чего то не соображумассив пустой
нашел решение
где tmplvarid это id tv параметра
У меня есть 4 локализации
Русский и английский работают без проблем, а вот арабский и китайский выдают ошибки
Английский
Арабский
С чем может быть связано, кто-нибудь сталкивался?
Так?
Сниппет переключения языка для Bootstrap 4
В чанке, использую так
P.S. locfield представленный выше модуль, работает криво при выводе content:
А вызов из документации вообще ничего не выводит
Хотелось бы понять почему так происходит…
Также, может кому-то помогу, представлю mysql запрос, который перенесет уже имеющую локализацию сделанную на доп. полях (tv). К примеру, keywords_en, country_en и т.п. с постфиксом _en на конце:
Не забудьте в чанке, который отвечает за вывод начала документа (), прописать
, после добавления processElementTags в конце плагина проблем нет.
Добавляю код допила плагина, с учетом всех косяков.
Скрипт, генерации mysql запросов.
Используется при статических переводах, к примеру заголовки и т.д. Вызывается перевод на примере скриншота так . Но не забудьте, что сгенерированный запрос нужно выполнить в phpMyAdmin… Сам скрипт, нужно поместить в созданную в корне папку, к примеру lexicongen
Привожу код, сниппета translit:
P.S. Можно добавить trim, или replace пробелов в fenom конструкцию, если контент менеджер случайно пробелы впишет до или после " Австрия"
Как?
Спасибо!
Локализации настроил: prntscr.com/qksnz0
Настройки указал: prntscr.com/qkso72
Пытаюсь добавить перевод: prntscr.com/qksola
А он мне все равно ошибку выдает: «Не указан ключ локализации» в смысле он не указан? В настройках указан localizator_default_language: ru
Компонент работает на modx revo 2.7.0???? И если да, то что у меня не так с компонентом?
prntscr.com/qkwpf3
prntscr.com/qkwpnu
Вот и не пойму в чем дело.
Страница «контакты» — prntscr.com/qkwzhz
Пытаюсь добавить русскую локализацию: prntscr.com/qkwzx2
Все равно выдает ошибку.
Возник следующий вопрос -совместим ли компонент с wayfinder или придется часть функционала переписывать на pdotools?
Подскажите, как можно к полю «Содержимое» (которое localizator_content) подключить установленный редактор кода? У меня установлен Ace
Что не так?
modx+siteDev). Голову сломал что не так. Люди добрый помогите кто советом пожалуйста, погибаю). Просто смотрю не одного у меня беда такая случалось, а путного ничего по этому поводу в просторах сети не нашел.
Как сделать так, чтобы при сохранении ресурса автоматический переносил содержимого ресурса и TV в раздел локализаций?
из этого следует, что если открыть несуществующий ресурс в админке, то получим 500 ошибку
было бы неплохо добавить проверку в следующем обновлении
Если сайт уже есть на одном языке, а нужно добавить второй, можно ли добавить только одну локализацию?
Как в этом случае выводить content — из ресурса для первого языка и из локализации для нового?
Content ресурса тоже подменяется на перевод — в шаблонах вообще ничего менять не надо. И мой первый вопрос отпадает, если перевода нет, выводится content самого ресурса. Наверняка где-то собака зарыта, не подскажешь?
Вместо цен отражается ноль, если в товаре создать перевод. Плагин localizator отключаешь и все отлично начинает работать. Ошибок на эту тему в журнале нет. Выходит компонент перестал быть совместим с minishop2? Что за чудеса такие?
Нужно выводить перевод по определенному тегу.
Вывод по тегу работает, но правильно подключить Localizator к выводу не удается.
Буду рад любым подсказкам
Лог выдает:
Либо просто id способа доставки/оплаты подставлять.
Пробовал на другом разделе site.com/faq/ — все ок. На странице site.com/news/ есть вызов pdoPage с аякс-подгрузкой — думал из-за этого — убрал вызов, но проблема осталась.
Кто-нибудь сталкивался с подобным багом?
/core/components/localizator/model/localizator/localizator.class.php: 82) localizator: yandex error — 408, see tech.yandex.ru/translate/doc/dg/reference/translate-docpage/
Все работало и потом отвалилось
Подробнее — https://translate.yandex.ru/developers/keys
А можно ли использовать компонент с разными доменами?
Например, русская версия на site.ru
А английская на site.com
Ну и например китайская на cn.site.com
и такое получается при переключение языков, например зашли на китайскую zh версию сайта
и потом если переходим на любой другой язык, то ссылка меняется на неверную (404 ошибка)
т.е. буквы zh и / вырезались из ссылки
Как это можно починить?
для переключения использую стандартный Сниппет getLanguages
На одних страницах все работает, на других изображение
«Ломается» структура, выводит Доп поля ниже основных полей без стилей и функционала.
MODX Revolution 2.8.3-pl
MySQL-8.0-Win-10
OpenServer 5.4.0
В репозитории есть issue по MySQL 8 github.com/modxcms/revolution/issues?q=is%3Aissue+is%3Aopen+MySQL
Можете понизить версию MySQL и не будет ошибки
Я и до этого пробовал откат, но у меня modx посыпался. Оказалось надо было дамп сливать и на новую версию заливать ))
Вообще есть смысл стремиться к MySQL 8?
Сниппет:
<?php
$output = "";
$pdo = $modx->getService('pdoTools');
$uri = $_SERVER['REQUEST_URI'];
if(substr($uri, 0, 1)) {
$uri = mb_substr($uri, 1);
$tmp = explode('/', $uri);
if($path = $tmp[0]) {
$tmp = $modx->getObject('localizatorLanguage', array('http_host:LIKE' => "%/{$path}/"));
if($tmp) {
$uri = str_replace("{$path}/", "", $uri);
}
}
}
$protocol = 'https://';
$languages = $modx->getIterator('localizatorLanguage', ['active' => 1]);
foreach($languages as $language) {
if(mb_substr($language->http_host, -1) == '/') {
$placeholders = array(
'cultureKey'=>$language->key,
'active'=>$language->key == $modx->localizator_key? 'active': '',
'url'=>$protocol. $language->http_host. $uri,
);
} else {
$placeholders = array(
'cultureKey'=>$language->key,
'active'=>$language->key == $modx->localizator_key? 'active': '',
'url'=>$protocol. $language->http_host. '/'. $uri,
);
}
$output .= $pdo->getChunk($tpl, $placeholders);
}
return $output;
Вывод:
{$_modx->runSnippet('!getLanguages', ['tpl' => 'section-langs-2'])}
Заранее спасибо!
Подскажите, пожалуйста, как правильно настроить локализацию типа en.site.ru.
На хостинге создал поддомен, создал локализацию, создал перевод страницы. Но открывается заглушка хостинга при клике на язык. Что-то еще нужно донастроить?
Вся загвоздка была в том, что бы правильно подвязать поддомен в панели хостинга.
для локализации в виде en.site.com нужно лишь включить «автоподдомены», это когда поддомены создаются автоматически (не нужно создавать алиасы) или, если на хостинге нет функции «автоподдомены» добавить вручную alias (псевдоним, синоним) en.домен.зона и убрать «главное зеркало» основного домена.
А в htaccess прописать редирект домена и всех поддоменов с www на без www
Ни как это не обойти?
Удаляю — слетает сайт.
Пришлось снова его установить.
Решил пойти путем удаления локализаций. Но пропали все стандартные выводы заголовком и доп полей.
Как быть?