Localizator - поддержка TV параметров

1. Изменены окна редактирования локализаций, добавлена возможность редактирования TV-параметров

Для вывода на редактирование определенных TV-параметров добавлена настройка локализатора localizator_tv_fields

2. Сделан сниппет Localizator
{'Localizator' | snippet : [
    'snippet' => 'pdoMenu',
    'includeTVs' => 'img',
    'processTVs' => 'img',
    'parents' => 0,
    'level' => 1,
]}
TV-параметры будут заменяться на параметры из локализации.
Для этого нужно изменить настройку pdoFetch.class на pdotools.pdofetchlocalizator


Компонент по прежнему бесплатный и доступен на modstore.pro

Исходники на https://github.com/but1head/localizator

Отправить спасибо можете на Яндекс-кошелек 410015133943061
Артем
23 октября 2018, 18:51
modx.pro
12
2 115
+18
Поблагодарить автора Отправить деньги

Комментарии: 156

Aleksandr Huz
23 октября 2018, 19:15
0
Вот это работа! Очень круто!
    Raimei
    23 октября 2018, 20:35
    0
    На первом скриншоте: что это за вкладки с «добавить элемент»?
      Артем
      23 октября 2018, 20:39
      +2
      Это TV-параметр migx.
      Стрелками отмечены категории, доп.параметры распределены по категориям — вкладкам, как и при редактировании самого ресурса.
        Raimei
        23 октября 2018, 20:47
        0
        Получается можно использовать не просто TV, а сразу MIGX?

        Извините за немного глупые вопросы :)
          Артем
          23 октября 2018, 20:49
          0
          Да, можно)
          Raimei
          24 октября 2018, 15:14
          0
          Поля доступны только для редактирования но не автоперевода?
            Артем
            24 октября 2018, 15:20
            0
            укажи в настройке localizator_translate_fields tv параметры без префикса
            должно перевести, если это не migx
            для перевода migx допилить еще надо
              Raimei
              24 октября 2018, 15:24
              0
              В том то и дело — MIGX :/

              Сколько возьмете за допил? Штука must have, очень круто дополнила localizator. Буквально автоперевода для MIGX не хватает.
                Артем
                24 октября 2018, 15:27
                0
                На рабочем проекте возможно допилю
                  Raimei
                  24 октября 2018, 15:31
                  0
                  Как будете выкладывать решение, прикрепите к посту кошелек для «спасибо/на кофе»
                    Артем
                    01 ноября 2018, 15:12
                    0
                    Сделал PR на реп Локализатора, Никита думаю скоро выложит новую версию на модстор.
                    Либо пока что можете скачать из моего репозитория.
                    Баг поправил. Для перевода тв параметров (в том числе и migx) -их нужно также внести в системную настройку.
                      Антон
                      01 декабря 2018, 19:41
                      0
                      А та версия, которая сейчас в модсторе уже поддерживает перевод migx?
                      И если нет, то как обновить то, что сейчас установлено на сайте на версию из репозитория?
                        Артем
                        01 декабря 2018, 21:46
                        0
                        На модсторе актуальная версия. В системных настройках нужно указать поля для перевода.
                          Антон
                          02 декабря 2018, 00:05
                          0
                          Всё равно не переводит. Там, вроде, написано, что можно пустую строку оставить, тогда переведёт все, но хоть пустая, хоть с указанием полей — никакой разницы, при нажатии на автоперевод переводится только пейджтайтл и контент, а тв — нет.
      Рамис Хамидуллин
      24 октября 2018, 00:25
      0
      Отлично. Теперь можно работать с migx без костылей!
        Raimei
        29 октября 2018, 07:51
        0
        Обнаружил 2 бага.
        1. Через раз срабатывает визуальный редактор во вкладках (Firefox точно)
        2. При выводе pdoCrumbs не показывает родителя. Только Главная и Текущая страница
          Артем
          29 октября 2018, 10:10
          0
          1. какой редактор используете?
          2. а родительские переведены? у меня нормально выводится
            Raimei
            29 октября 2018, 10:17
            0
            1. TinyMCE Rich Text Editor (название пакета)
            2. Да. Причем в одном месте всё ок, в другом нет. На днях попробую повторить баг пошагово, или отпишусь в чем было дело.
              Артем
              29 октября 2018, 11:47
              +2
              по первому пункту нашел ошибку
              также автоперевод migx допилил
              позже выложу
                MrKarandash
                30 октября 2018, 20:10
                0
                del
                  Raimei
                  31 октября 2018, 20:26
                  0
                  Бага нет, всё таки я заработался.

                  Забыл добавить перевод родителю, отсюда и пустота.
                    Виталий
                    16 января 2019, 17:48
                    0
                    В чем ошибка была? Аналогичная проблема Визуальный редактор TinyMCE Rich Text Editor грузиться через, стоит актуальная последняя версия.

                    А также никак не могу понять, как можно удалять записи из словаря? На данный момент можно только добавить запись и все…
              MrKarandash
              30 октября 2018, 20:03
              0
              Все очень круто! Но возник вопрос, почему не брать поля для перевода из вкладки Документ? Или есть какие то трудности с такой реализацией?

              Кстати, так же если изменить текст в полях главной локализации и нажать на Автоматический перевод, то в тех локах, которые являются сторонними переводами, ничего не меняется. То есть по нажатии на кнопку они не обновляются. Нужно сперва удалять их после этого нажимать. Это так задумано или баг?
                Артем
                30 октября 2018, 20:10
                +1
                Не понял про поля из вкладки документ.
                Ещё в первой версии нужно было указать в системных настройках какие поля переводить.
                По второму вопросу — также, в системных настройках есть параметр, переводить уже переведенные языки.
                  MrKarandash
                  30 октября 2018, 20:13
                  0
                  Ну вот у меня основная версия — русская и я заполнял поля стандартные при редактировании ресурса на вкладке Докумен. А, как я понял, для работы дополнения нужно заполнять русскую локаль во вкладке Локализация, которая и будет потом переводиться на все остальные языки
                    Артем
                    30 октября 2018, 20:15
                    +1
                    Если указать язык по умолчанию, то при сохранении нового ресурса создаётся запись в локализаторе. Но это только для новых ресурсов.
              Андрей Розум
              01 ноября 2018, 15:38
              0
              Есть вывод новостей:
              [[!pdoPage? 
                &parents=`29` 
                &limit=`6` 
                &depth=`0` 
                &tpl=`News.main.ru` 
              ]]
              [[!+page.nav]]
              в tpl выводятся [[+longtitle]] и [[+introtext]], но они подхватываются из свойств документа. Каким должен быть вызов, чтобы они были из локализатора?
                Артем
                01 ноября 2018, 16:18
                0
                обновите модуль
                [[!Localizator? 
                  &snippet=`pdoPage`
                  &parents=`29` 
                  &limit=`6` 
                  &depth=`0` 
                  &tpl=`News.main.ru` 
                ]]
                [[!+page.nav]]
                  Андрей Розум
                  01 ноября 2018, 16:58
                  0
                  Обновил, но вызов в таком виде ничего не выводит.
                  И среди сниппетов не вижу чтобы появился сниппет Localizator.
                    Андрей Розум
                    01 ноября 2018, 17:05
                    0
                    Похоже что после обновления модуля у меня в локализаторе вообще пропал блок «содержимое», а вызов шел из него. Сейчас попробую переустановить модуль.
                      Андрей Розум
                      01 ноября 2018, 17:10
                      0

                      Вот так теперь выглядит.
                        Артем
                        01 ноября 2018, 18:06
                        0
                        Отправьте доступы на почту
                        nizart91@mail.ru
                          Андрей Розум
                          01 ноября 2018, 20:55
                          0
                          Сайт не мой, владелец слегка параноик, без его согласия не могу. ((

                          С содержимым сам разобрался. На сайте не было визуального редактора. Поставил TinyMCE, содержимое в локализаторе появилось.

                          Но вот вызов сниппета !Localizator все равно не отрабатывает. Сейчас попробую на другом сайте.
                  Артем
                  01 ноября 2018, 22:45
                  0
                  немного по-другому
                  [[!pdoPage?
                  &element=`Localizator`
                  &parents=`1` 
                  &limit=`2` 
                  &depth=`1` 
                  &tpl=`News.main.ru`  ]] 
                  [[!+page.nav]]
                    Андрей Розум
                    02 ноября 2018, 11:28
                    0
                    Спасибо!
                    В таком виде и после того как скопировал сниппет Localizator все заработало.
                  Raimei
                  05 ноября 2018, 00:31
                  0
                  Поставил 1.0.2-beta1 из modstore.

                  При установке почему-то обязательно тянется MIGX
                    Артем
                    05 ноября 2018, 07:24
                    0
                    Да, я за основу брал migx. Нужен как раз для рендеринга редактора текста. Зачем копировать тоже самое, если можно просто его установить)
                      Raimei
                      06 ноября 2018, 14:56
                      0
                      То ли я дурак, то ли лыжи не едут. MIGX-поля не переводятся.

                      И поля отключал, и настройки форм, и переустановку локализатора делал. Можете помочь?
                        Артем
                        06 ноября 2018, 14:58
                        0
                        напишите доступ на nizart91@mail.ru
                          Илья Александрович
                          18 марта 2019, 16:34
                          0
                          Подскажите как решили проблему с переводом migx полей?
                            Артем
                            18 марта 2019, 16:39
                            0
                            в чем проблема?
                              Илья Александрович
                              18 марта 2019, 16:42
                              0
                              не переводятся поля, вообще пусто в англ.версии
                              в русской заполнил
                                Артем
                                18 марта 2019, 16:49
                                0
                                что в настройке localizator_translate_fields?
                                  Илья Александрович
                                  18 марта 2019, 16:50
                                  0
                                  1. пустое оставлял
                                  2. тв вставил slidermain
                                    Артем
                                    18 марта 2019, 16:54
                                    0
                                    внутри migx переводит только поля типа text, textarea, richtext
                                      Илья Александрович
                                      18 марта 2019, 16:57
                                      0
                                      там 3 поля text и картинка
                                      Илья Александрович
                                      18 марта 2019, 17:43
                                      0
                                      создал новое тв мигс с двумя полями text и textarea — не перевелось тоже.
                                      и ещё такой вопрос: вот создаём тв мигс оно отображается в Дополнительных полях — если там заполняешь, должно дублироваться в Локализацию или там нужно повторно всё заполнять? или заполнять только в Локализации нужно?
                                      я сейчас заполняю в Дополнительных полях, потом в Локализации РУ версию.
                                      Артем
                                      18 марта 2019, 19:14
                                      +1
                                      Нужно заполнять только в локализациях.
                                      В настройку localizator_translate_fields вставлять все переводимые поля, в том числе и тв
                                      Илья Александрович
                                      18 марта 2019, 19:55
                                      0
                                      Супер, спасибо.
                  MrKarandash
                  13 ноября 2018, 16:44
                  0
                  Прикрутил MIGX к документу, добавил в настройках локализатора это поле. При нажатии поляи из MIGX успешно переводятся. А вот как вывести их в документе?

                  [[!Localizator? 
                      &snippet=`getImageList`
                      &tvname=`blocks`
                  	&tpl=`blocks_tpl`
                  	&docid=`[[*id]]`
                  	&limit=`999`
                  ]]
                  отдает 500 ошибку
                    MrKarandash
                    13 ноября 2018, 18:14
                    0
                    Вообще я так понял какая то неполадка с 1.0.2
                    Следующий код из примера тоже не работает и крашит все после себя
                    {'!Localizator' | snippet : [
                            'snippet' => 'pdoMenu',
                            'parents' => 0,
                            'includeTVs'     => 'img',
                            'processTVs' => 'img',
                            'parents' => 0,
                            'level' => 1,
                    ]}
                    Так же ошибка в консоли
                    [2018-11-13 18:00:46] (ERROR @ /public_html/core/xpdo/om/xpdoquery.class.php : 764) Encountered empty IN condition with key contentid
                    [2018-11-13 18:00:46] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 988) xPDO->removeCollection - Error deleting modTemplateVarResource instances using query DELETE FROM `modx_site_tmplvar_contentvalues` WHERE `modx_site_tmplvar_contentvalues`.`contentid` IN () 
                    [2018-11-13 18:15:33] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
                    [2018-11-13 18:15:37] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
                    [2018-11-13 18:15:37] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
                    [2018-11-13 18:15:37] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
                    [2018-11-13 18:15:38] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
                    [2018-11-13 18:15:38] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
                    [2018-11-13 18:15:38] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
                    [2018-11-13 18:15:38] (ERROR @ /public_html/core/xpdo/xpdo.class.php : 644) Could not load class: pdofetchlocalizator from pdotools.pdofetchlocalizator.
                      Артем
                      13 ноября 2018, 21:00
                      +1
                      обновите компонент, нашел там ошибки и поправил
                      Артем
                      13 ноября 2018, 21:03
                      +1
                      вроде так должно работать, но не тестил
                      {'getImageList' | snippet : [
                          'input' => $_modx->resource.blocks
                      ]}
                        MrKarandash
                        14 ноября 2018, 12:09
                        0
                        За оперативное исправление спасибо!
                        Теперь получается вот как, конструкция вида
                        $_modx->resource.blocks
                        выводит JSON в зависимости от переключения языка правильно, но как это скормить getImageList не понятно, потому что
                        {'getImageList' | snippet : [
                            'input' => $_modx->resource.blocks
                        ]}

                        ничего не выводит. Буду пробовать разоборать массив через феном, если что то удасться — выложу решение
                          Артем
                          14 ноября 2018, 12:18
                          +1
                          попробуйте не input, а value
                            MrKarandash
                            14 ноября 2018, 12:23
                            0
                            О, так сработало, Большое спасибо )
                              Антон
                              01 декабря 2018, 17:00
                              0
                              Добрый день. С value работает, но такая штука, если в мигх есть изображение с нестандартным источником файлов, то отдаётся только относительный путь, без базового пути источника. Это как-то можно поправить, или только в чанках оформления самому префиксы писать для картинок?
                              A ещё, если надо отобразить твшку другого ресурса (dockid=`1`), то такая конструкция не прокатит. Как быть в таком случае?
                        Eiry
                        05 декабря 2018, 19:52
                        0
                        C pdoField этот компонент работает?
                        Вызываю так:
                        {$_modx->runSnippet('!Localizator',[
                            'parents'=>0,
                            'snippet'=>'pdoField',
                            'id'=>'1',
                            'field'=>'sometv'
                        ])}
                        а выводится только обычная твшка, а не локализованная. С pdoMenu всё работает как надо, да и вообще всё с остальным работает правильно.
                          Артем
                          06 декабря 2018, 15:06
                          0
                          pdoField работает немного по другому
                          можно сделать так
                          {'pdoResources' | snippet : [
                              'tpl' => '@INLINE {$value}',
                              'class' => 'locTemplateVarResource',
                              'sortby' => 'id',
                              'limit' => 1,
                              'where' => [
                                  'key' => ('localizator_key' | option),
                                  'tmplvarid' => 1,
                                  'contentid' => 2,
                              ],
                          ]}
                            Eiry
                            06 декабря 2018, 15:22
                            0
                            Спасибо! Как раз думал, что можно и через pdoResources сделать.
                            tmplvarid — это id твшки в БД, а contentid — это что? У меня он пока для всех твшек и всех языков равен 1.
                              Артем
                              06 декабря 2018, 15:23
                              0
                              id ресурса
                          Rootiys
                          16 декабря 2018, 18:24
                          0
                          Tv через Fenom не выводятся?
                          {1 | resource : 'address'}
                            Артем
                            16 декабря 2018, 20:42
                            0
                            выше ведь есть комментарий как tv выводить
                              Rootiys
                              16 декабря 2018, 20:45
                              0
                              Через pdoField видел как.
                              Интересует именно такая конструкция.
                                Василий Столейков
                                05 июля 2019, 17:50
                                1
                                +1
                                Оставлю тут комментарий, может кому пригодится.
                                Можно сделать свой модификатор, которым будет удобно пользоваться:

                                1. Создаём сниппет под названием tv
                                2. Вставляем в него следующий код:
                                  <?php
                                  $output = '';
                                  
                                  if(!empty($options)) {
                                      $lang = $modx->getOption('localizator_key');
                                      if(empty($input)) $input = 1;
                                      
                                      if($res = $modx->getObject('locTemplateVarResource', array(
                                          'contentid' => $input, 
                                          'tmplvarid' => $options, 
                                          'key' => $lang
                                      ))) {
                                          $output = $res->get('value');
                                      }
                                  }
                                  
                                  return $output;
                                3. Используем на сайте везде где нужно в виде модификатора:
                                  // устанавливаем в переменную {$tv_name} локализованное значение тв-параметра.
                                  {set $tv_name = 1|tv:3} // где 1 это ресурс, а 3 это id тв параметра.

                                Возможно и мне пригодится на будущее скопипастить, чтобы не писать заново, хотя времени на написание ушло 2 минуты.
                            Vladislav
                            28 декабря 2018, 12:05
                            0
                            Будьте добры, подскажите, как вывести tv-поле через Localizator, используя pdoPage?
                            В данной Fenom-конструкции заданные tv-поля через вкладку Локализация — игнорируются.
                            Для более быстрого восприятия: tv-поля имеют названия sortDate и moreButtonText.
                            Исходный код вызова сниппета:
                            {'!Localizator' | snippet : [
                                'snippet' => 'pdoPage',
                                'ajaxMode' => 'default',
                                'tpl' => '@INLINE
                                                <div class=" col-md-6 col-lg-3">
                                            <div class="card-wrapper ">
                                                <div class="card-img">
                                                    <div class="mbr-overlay"></div>
                                                    <div class="mbr-section-btn text-center"><a href="{$uri}" class="btn btn-primary display-4">[[+moreButtonText]]</a></div>
                                                    <img class="media-object" src="{$img | phpthumbon : "w=246&h=184&zc=1"}" alt="{$pagetitle}">                
                                                </div>
                                                <div class="card-box">
                                                    <h4 class="card-title mbr-fonts-style display-7">
                                                        {$pagetitle}
                                                    </h4>
                                                    <p class="mbr-text mbr-fonts-style align-left display-7">
                                                        [[+sortDate:date=`%d.%m.%y`]]</p>
                                                </div>
                                            </div>
                                    </div> 
                                ',
                                'limit' => 4,
                                'includeTVs' => 'img, sortDate, moreButtonText',
                                'prepareTVs' => 1,
                                'processTVs' => 'img, sortDate, moreButtonText',
                                'tvPrefix' => '',
                                'includeContent' => 0,
                                
                                'tplPageWrapper' => '@INLINE <div class="pagination"><ul class="pagination pagination-lg">{$prev}{$pages}{$next}</ul></div>',
                                'tplPage' => '@INLINE <li><a href="{$href}">{$pageNo}</a></li>',
                                'tplPageActive' => '@INLINE <li class="active"><a href="{$href}">{$pageNo}</a></li>',
                                'tplPagePrev' => '@INLINE <li rel="prev"><a href="{$href}">« Назад</a></li>',
                                'tplPageNext' => '@INLINE <li rel="next"><a href="{$href}">Дальше »</a></li>',
                                'tplPagePrevEmpty' => '@INLINE ',
                                'tplPageNextEmpty' => '@INLINE ',
                                'ajaxElemWrapper' => '#child_list',
                                'ajaxElemRows' => '#child_list .rows',
                                'ajaxElemPagination' => '#child_list .pagination',
                                'ajaxElemLink' => '#child_list .pagination a',
                                'parents' => '15',
                                'sortdir' => 'desc'
                              ]}

                            Несмотря на возможно некорректное использование конструкций вида [[+placeholder]] для вызова tv-полей, это работает – для случая задания параметров традиционным способом, заложенным в MODx.
                            Перевод для pagetitle здесь применяется успешно.
                            Собственно, требуется заменить текст на кнопке на соответствующий перевод в зависимости от выбранного языка отображения сайта.
                              Артем
                              28 декабря 2018, 12:24
                              0
                              Документация
                              есть пример для pdoPage
                                Vladislav
                                28 декабря 2018, 12:41
                                0
                                И такое пробовал, даже ещё раз. Нужно найти, где собака зарыта. Почему же название нормально выводится, a tv-поля — нет?
                                В системных настройках localizator_tv_fields ="". Согласно описанию, если нужны все tv-поля для редактирования, то нужно оставить пустым. Установлено, что так и есть — все tv-поля доступы во вкладке Локализация.
                                Даже решил попробовать добавить tv-поле для автоперевода в строку localizator_translate_fields. Ничего не меняется.
                                  Артем
                                  28 декабря 2018, 12:48
                                  0
                                  отправьте доступ на nizart91@mail.ru
                                  или найдите в телеграм
                              Александр Мельник
                              05 февраля 2019, 13:39
                              0
                              Господа, а я установил Localizator и он выглядит совершенно не так, как указано в документации и тут.
                              Никаких вкладок нет в окне редактирования локализации для ресурса.
                              Выглядит вот так

                              Устанавливал, подключив поставщика modstore.
                                Артем
                                05 февраля 2019, 13:56
                                0
                                TV параметров нет — нет и вкладок
                                  Александр Мельник
                                  05 февраля 2019, 14:03
                                  0
                                  ааа, Семен Семеныч…
                                  То есть эти вкладки — это названия категорий. И если в этих категориях есть созданные TV, то они отобразятся.
                                  Спасибо.
                                Александр Мельник
                                06 февраля 2019, 15:08
                                0
                                Господа, а как при помощи локализатора вывести список товаров минишопа с пагинацией?
                                Ну то есть в чем сложность.
                                Сниипет Localizator имеет параметр snippet куда можно передать имя сниппета.
                                И если мы передадим туда msProducts то наверное все сработает.
                                Но нам нужно передать туда pdoPage. А pdoPage по умолчанию если не указано другое, работает со сниппетом pdoResources. А нужно msProducts, но указать это никак невозможно?
                                Или я торможу?

                                Пока что все что приходит в голову, это сделать копию pdoPage, поправить в коде сниппет по умолчанию, но наверняка ведь умные люди уже придумали лучший способ?
                                Спасибо.
                                  Александр Мельник
                                  06 февраля 2019, 16:09
                                  0
                                  Уважаемый автор компонента, просьба.
                                  Я так понимаю, что компонент перешел к другому разработчику и вы его значительно улучшили.
                                  Но при написании документации, Вы описали исключительно свои доработки, но потерялась информация о многом другом.
                                  К примеру локализатор имеет вкладку Словарь, где можно задавать слова и фразы для разных языков.
                                  Но нигде в документации не упоминается об этом, а так же о том, как их вывести на сайте, а в прошлой документации это было.
                                  Пришлось лезть на старый сайт свой и там в коде искать, что вывести их можно так —
                                  {'more'|lexicon}
                                  Как будет время, добавьте это пожалуйста в документацию на docs.modx.pro/komponentyi/localizator/
                                    Дмитрий
                                    07 февраля 2019, 18:01
                                    0
                                    Добрый день! Подскажите пожалуйста! есть дерево ресурсов. Стандартная версия сайта украинская. В каждом ресурсе во вкладке локализация я вношу значения для русской версии. Потом в шаблоне вывожу меню таки образом:
                                    [[!Localizator? 
                                          &snippet=`pdoMenu`
                                          &parents=`0` 
                                        ]]
                                    И на основной версии сайта оно не выводится а на русской выводится.
                                      Игорь
                                      07 февраля 2019, 18:22
                                      0
                                      У меня работает в таком варианте
                                      {'!pdoMenu' | snippet : [
                                      	'parents' => 0,
                                      	'context' => 'web'
                                      	'showLog' => 0,
                                      	'level' => 1,
                                      	'startId' => 0,
                                      	'firstClass'=> 0,
                                      	'lastClass'=> 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) ~ '"}',
                                      	'outerClass'=> 'main-nav-menu',
                                      'tpl' => '@INLINE <li class="{$classes}"><a class="default" href="{$link}"><i class="icon others"></i>{$menutitle}</a></li>'
                                      ]}
                                        Дмитрий
                                        07 февраля 2019, 18:32
                                        0
                                        Ваш Вариант у меня работает так же. Отображаются только те ресурсы которые переведены в локализаторе. На основной версии не выводятся
                                        Артем
                                        07 февраля 2019, 18:39
                                        0
                                        В локализаторе нужно вносить как доп.языки, так и основной — в вашем случае украинский
                                          Игорь
                                          07 февраля 2019, 18:45
                                          0
                                          100% верное уточнение! Проверьте добавлена ли у вас в локализатор украинская версия и заполнено ли там поле «Заголовок меню»
                                            Дмитрий
                                            07 февраля 2019, 18:52
                                            0
                                            Полня. Думал что за основную оно берет основные ресурсы. Как быть тогда с импортом товаров через msImportExport если это магазин?
                                              Александр Мельник
                                              07 февраля 2019, 20:40
                                              0
                                              Дмитрий, простите) Но я уже полчаса сижу ломаю голову. Полня это что? Хуйня? Херня? Фигня? Полдня?
                                      Виталий
                                      11 февраля 2019, 10:12
                                      0
                                      Последняя обнова поломала сайт! Проблема в том, что теперь ссылки которые выдают TV параметры содержат ключ локализации. А теперь к сути, получается все TV параметры (которые картинки) получают адрес /en/assets/images и тд… что приводит к ошибке и тд!
                                        Артем
                                        11 февраля 2019, 10:18
                                        0
                                        для этого существуют правил для htaccess, которые нужны также как и при работе через babel
                                        RewriteRule ^(ru|en|de)/assets(.*)$ assets$2 [L,QSA]
                                          Виталий
                                          11 февраля 2019, 10:22
                                          0
                                          ну это все прекрасно, но это не будет работать с тем же phpThumbOn, думаю почему объяснять не стоит… я конечно написал фикс сниппет, но это костыль получается…
                                            Артем
                                            11 февраля 2019, 10:26
                                            0
                                            В само значение tv параметра en/ не пишется. Только что сам проверил.
                                            Соответственно и phpthumbon должен работать, т.к. берется путь без en.
                                            Можете скинуть доступы, посмотрю что у вас
                                              Виталий
                                              11 февраля 2019, 10:37
                                              0
                                              Подозреваю проблема в том, что на вывод попадают относительные урлы…
                                              Адрес сайта: site.ru/en Ссылка: assets/images/
                                              На выходе site.ru/en/assets/images/
                                                Артем
                                                11 февраля 2019, 10:40
                                                0
                                                выше я привел правило htaccess, которое решает эту проблему
                                        Илья Александрович
                                        17 марта 2019, 10:42
                                        0
                                        Добрый день!
                                        А как компонент работает с ClientConfig?
                                          Артем
                                          18 марта 2019, 08:11
                                          0
                                          как настроите — так и будет работать
                                            Илья Александрович
                                            18 марта 2019, 12:11
                                            0
                                            хммм…
                                            например в данный момент я сделал так:
                                            [[++address_[[++localizator_key]]]]
                                            в клиент конфиге имеется переменная address_ru и address_en
                                            не уверен что это правильно решение. может ещё есть варианты? лучше через Fenom.
                                        Илья Александрович
                                        19 марта 2019, 11:16
                                        0
                                        Добрый день! Кто нибудь разобрался как вывести migx поля?
                                        у меня получилось вот что, но этот вариант выводит только данные на той странице где они созданы, в моём случае это id=1, только там и работает.
                                        {'!pdoResources' | snippet : [
                                                        'element' => 'getImageList',
                                                        'tvname' => 'slidermain',
                                                        'docid' => 1,
                                                        'parents' => 0,
                                                    	'resources' => 1,
                                                    	'includeTVs' => 'slidermain',
                                                    	'prepareTVs' => 1,
                                                    	'processTVs' => 1,
                                                        'tpl' => 'tpl.slidermain'
                                                    	'leftJoin' => '{
                                                    		"localizator" : {
                                                    			"class" : "localizatorContent",
                                                    			"alias" : "localizator",
                                                    			"on" : "localizator.resource_id = modResource.id"
                                                    		}
                                                    	}',
                                                    	'select' => '{ "localizator" : "modResource.*, localizator.*, modResource.id" }',
                                                        'where' => '{ "localizator.key" : "' ~ ('localizator_key' | option) ~ '"}',
                                                ]}
                                          Артем
                                          19 марта 2019, 11:20
                                          0
                                          чем вам не нравится конструкция такого типа и вывод через fenom
                                          {$_modx->resource.slidermain}
                                            Илья Александрович
                                            19 марта 2019, 11:24
                                            0
                                            я пробовал, не рабоатет
                                            {'getImageList' | snippet : [
                                                'input' => $_modx->resource.slidermain
                                            ]}
                                            {'getImageList' | snippet : [
                                                'value' => $_modx->resource.slidermain
                                            ]}
                                            добавлял разные параметры, ничего не помогло
                                              Артем
                                              19 марта 2019, 11:33
                                              0
                                              используйте foreach
                                              Илья Александрович
                                              19 марта 2019, 11:34
                                              0
                                              шаблон вывода у меня такой
                                              {foreach $_modx->resource['slidermain'] | fromJSON as $item}
                                              	<li>
                                              <img src="{$item.image}"  />
                                              {$item.title}
                                              {$item.text_3}
                                              {$item.text_2}
                                              {$item.text_1}
                                              	</li>
                                              {/foreach}
                                                Илья Александрович
                                                19 марта 2019, 16:30
                                                0
                                                варианты есть какие нибудь?
                                                так тоже писал
                                                {foreach $_modx->resource.slidermain | fromJSON as $item}
                                                	<li>
                                                <img src="{$item.image}"  />
                                                {$item.title}
                                                {$item.text_3}
                                                {$item.text_2}
                                                {$item.text_1}
                                                	</li>
                                                  Артем
                                                  19 марта 2019, 16:53
                                                  0
                                                  ну а что не так то?
                                                    Илья Александрович
                                                    19 марта 2019, 16:58
                                                    0
                                                    вот эти параметры не отрабатывают
                                                    'docid' => 1,
                                                           'resources' => 1,
                                                    мигс заполняется у ресурса с id = 1, а вывести нужно у ресурса с id = 7
                                                      Артем
                                                      19 марта 2019, 17:04
                                                      0
                                                      комментарии то читайте
                                                      вот пример даже есть
                                                        Илья Александрович
                                                        19 марта 2019, 17:47
                                                        0
                                                        прочитал, и перепрочитал 100 раз.
                                                        'tmplvarid' => 1,
                                                                'contentid' => 1,
                                                        прописывал эти параметры 0 результата
                                                          Артем
                                                          19 марта 2019, 19:54
                                                          0
                                                          Если вы не видите очевидной разницы между моим примером и вашим вызовом сниппета, то ничем не могу помочь.
                                                            Илья Александрович
                                                            19 марта 2019, 22:07
                                                            0
                                                            Да оказывается работало всё, просто при подстановке моего шаблона на выводе было пусто. Поэтому задал пустой TPL, получил результат.
                                                            Подскажите как это преобразовать…
                                                            Запрос:
                                                            {'pdoResources' | snippet : [
                                                                'tpl' => '',
                                                                'class' => 'locTemplateVarResource',
                                                                'sortby' => 'id',
                                                                'limit' => 1,
                                                                'where' => [
                                                                    'key' => ('localizator_key' | option),
                                                                    'tmplvarid' => 1,
                                                                    'contentid' => 1,
                                                                ],
                                                            ]}
                                                            вывел:
                                                            Array
                                                            (
                                                                [class] => locTemplateVarResource
                                                                [id] => 1
                                                                [key] => ru
                                                                [tmplvarid] => 1
                                                                [contentid] => 1
                                                                [value] => Array
                                                                    (
                                                                        [0] => Array
                                                                            (
                                                                                [MIGX_id] => 1
                                                                                [title] => Заголовок
                                                                                [text_1] => текст 1
                                                                                [text_2] => Текст 2
                                                                                [text_3] => Текст 3
                                                                                [image] => /assets/images/slider/slide-14-1.jpg
                                                                            )
                                                            
                                                                    )
                                                            
                                                                [idx] => 1
                                                                [link] => 
                                                            )
                                                              Артем
                                                              20 марта 2019, 10:22
                                                              0
                                                              'tpl' => '@INLINE {"getImageList" | snippet : ["value" => $value]}',
                                                              Илья Александрович
                                                              20 марта 2019, 10:58
                                                              0
                                                              пустота в итоге
                                                              Артем
                                                              20 марта 2019, 11:02
                                                              0
                                                              значит делайте отдельный чанк, можете использовать foreach — ,tp getimagelist
                                                              Илья Александрович
                                                              20 марта 2019, 11:15
                                                              0
                                                              1) так
                                                              'tpl' => '@INLINE {"getImageList" | snippet : ["value" => $value]}',
                                                              выводит
                                                              {"getImageList" | snippet : ["value" => $value]}
                                                              2)
                                                              если так то выводит пустоту
                                                              'tpl' => 'tpl.chank',
                                                              tpl.chank
                                                              {'getImageList' | snippet : ['value' => $value]}
                                                              можете использовать foreach — ,tp getimagelist
                                                              — это не понял
                                                              Артем
                                                              20 марта 2019, 11:26
                                                              0
                                                              foreach вместо getImageList
                                                              Илья Александрович
                                                              20 марта 2019, 11:28
                                                              0
                                                              а как тогда перевод цеплять?
                                                              Илья Александрович
                                                              20 марта 2019, 11:52
                                                              0
                                                              перевод цепляется всё норм на странице там где мигс создан
                                                              но как вывести опять же на другой странице
                                                              {foreach $_modx->resource['about_page'] | fromJSON as $item}
                                                              	<div class="col-xs-12 col-sm-6 col-md-4">
                                                              		<div class="icon-box left media p-0 mb-40">
                                                              			<div class="media-left pull-left"><i class="{$item['icon']} text-theme-colored"></i></div>
                                                              			<div class="media-body">
                                                              				<p class="media-heading heading h5">{$item['title']}</p>
                                                              				<p>{$item['desc']}</p>
                                                              			</div>
                                                              		</div>
                                                              	</div>
                                                              {/foreach}
                                                              так пробовал, не помогло
                                                              {set $item = json_decode(7 | resource : 'about_page', true)}
                                                              {set $item = 7 | resource : 'about_page' | fromJSON}
                                                              Артем
                                                              20 марта 2019, 11:55
                                                              0
                                                              Илья Александрович
                                                              20 марта 2019, 12:05
                                                              0
                                                              {'pdoResources' | snippet : [
                                                                  'tpl' => 'tpl.about_page',
                                                                  'class' => 'locTemplateVarResource',
                                                                  'sortby' => 'id',
                                                                  'limit' => 0,
                                                                  'where' => [
                                                                      'key' => ('localizator_key' | option),
                                                                      'tmplvarid' => 12,
                                                                      'contentid' => 7,
                                                                  ]
                                                              ]}
                                                              tpl.about_page
                                                              {foreach $_modx->resource['about_page'] | fromJSON as $item}
                                                              	<div class="col-xs-12 col-sm-6 col-md-4">
                                                              		<div class="icon-box left media p-0 mb-40">
                                                              			<div class="media-left pull-left"><i class="{$item['icon']} text-theme-colored"></i></div>
                                                              			<div class="media-body">
                                                              				<p class="media-heading heading h5">{$item['title']}</p>
                                                              				<p>{$item['desc']}</p>
                                                              			</div>
                                                              		</div>
                                                              	</div>
                                                              {/foreach}
                                                              ничего не выводит
                                                              Артем
                                                              20 марта 2019, 12:29
                                                              0
                                                              читайте документацию, делаете элементарные ошибки
                                                              Илья Александрович
                                                              20 марта 2019, 13:11
                                                              0
                                                              документацию прочитаю, но сейчас нет времени. помогите пожалуйста…
                                          Сергей
                                          01 апреля 2019, 11:20
                                          0
                                          Скажите работает ли полноценно этот компонент с minishop2? Тоесть получится ли закрыть все потребности по смене языка интернет-магазина этим компонентом?
                                            Артем
                                            01 апреля 2019, 11:39
                                            0
                                            Да, сможет.
                                            Но все конечно зависит от прямоты рук разработчика)
                                              Иван Бочкарев
                                              28 апреля 2019, 12:39
                                              0
                                              Разобрались?
                                              Виталий
                                              11 мая 2019, 00:13
                                              0
                                              Компонент то что нужно!
                                              Добавил два перевода (ru,en)
                                              Если в ресурсе для языка «en» переключаю параметр «активно» => «нет», то страница всё равно доступна на 2 языках.
                                              Доступны так же на 2 языках те страницы, которые вообще не переводились на второй язык.

                                              MODX Revolution 2.7.1-pl
                                              Localizator 1.0.4-beta1
                                              php7.2

                                              Это только у меня так? Подскажите как исправить?
                                                Artur Plugin
                                                12 мая 2019, 12:04
                                                0
                                                так то «что нужно» или исправить? :)
                                                ======================
                                                была у меня как-то задача сделать нес-ко страниц на 2х языках и фраз/слов там было меньше 300.
                                                я написал файл js
                                                api_rez=`
                                                word1|перевод_рус|перевод_др
                                                word2|перевод_рус|перевод_др
                                                `;
                                                и на всех страницах подключил свой фреймворк на js. Он добавил кнопку переключения языков на все станицы и при нажатии — страница переводится скриптом по этому словарику на 2+ языка. без обращения к серверу и перезагрузки. Удобней это чем встроенные средства модх и пр? Наверно, но с откл скриптами это не работает и если слов/фраз много, то будет тормозить. Eще надо дополнительно в теги с этими словами добавлять класс multiLang.
                                                на зато работает везде, даже на статичных сайтах без php+mysql
                                                  Артем
                                                  13 мая 2019, 14:13
                                                  0
                                                  языки настроены на домены? или как подпапки?
                                                    Виталий
                                                    13 мая 2019, 20:16
                                                    0
                                                    Как подпапки. Но вроде особо ничего не настраивал… то есть как по умолчанию установил так и есть… может что то проморгал в настройках?
                                                      Артем
                                                      14 мая 2019, 09:14
                                                      0
                                                      так не могу сказать, надо смотреть
                                                  Василий Столейков
                                                  05 июля 2019, 14:44
                                                  0
                                                  А по какому принципу сортируются вкладки ТВ-параметров?

                                                  У меня на сайте, для сортировки, названия папок обычно пронумерованы, и в вкладке TV они сортируются правильно. В локализаторе же они каким-то непонятным образом выводятся:
                                                    Василий Столейков
                                                    08 июля 2019, 11:20
                                                    0
                                                    Было бы неплохо сортировать вкладки по полю сортировки, и/или по названию:
                                                      Артем
                                                      08 июля 2019, 22:06
                                                      +1
                                                      в следующую версию добавлю
                                                    Василий Столейков
                                                    05 июля 2019, 17:00
                                                    0
                                                    Кстати, ТВ-поля в локализаторе не авто-переводит никак, без разницы указывать их в системной настройке или нет. Пока используем ручной перевод…

                                                    SEO-поля из локализатора, которые не используются, типа SEO keywords можно спрятать через стили.

                                                    А родную вкладку TV-полей можно спрятать через Настройку форм самого MODX. Как в принципе и родные поля content, longtitle, description, introtext и т.д. Иначе они постоянно путаются и заполняются лишний раз — при локализаторе они бесполезный мусор, который постоянно мешает.
                                                      Артем
                                                      08 июля 2019, 22:15
                                                      +1
                                                      Все нормально переводит, надо указывать в localizator_translate_fields.
                                                      По поводу TV и полей, как и заметил — можешь сам все скрыть, если это нужно.
                                                      Однако же есть TV, которые нет смысла заполнять в нескольких языковых версиях, а проще заполнить основное поле — такие как изображение или дата.
                                                      Также есть ресурсы-ссылки, в которых ссылка заполняется в content, соответственно и скрывать незачем.
                                                        Василий Столейков
                                                        08 июля 2019, 22:20
                                                        0
                                                        Все нормально переводит, надо указывать в localizator_translate_fields.
                                                        Как ни пробовал, не получается. Каким образом указывать поля, ID тв-шек или их названия? Через запятую?

                                                        Однако же есть TV, которые нет смысла заполнять в нескольких языковых версиях, а проще заполнить основное поле — такие как изображение или дата.
                                                        Но тогда и ТВ с переводом будут болтаться рядом, а если ТВ-шек много, то путаница, что где заполнять. Для себя я решил лучше уже все заполнять там, в одном месте, в том числе и даты. Даже для разных языков — один же раз заполняешь.
                                                          Артем
                                                          08 июля 2019, 22:34
                                                          0
                                                          Названия — как pagetitle, longtitle и т.д.
                                                            Василий Столейков
                                                            10 июля 2019, 10:21
                                                            0
                                                            Всё нормально переводится, извини что задавал глупые вопросы.

                                                            Это всё моя невнимательность. Я почему-то зациклился что TV параметры нужно вписывать в localizator_TV_fields а надо было в localizator_translate_fields наряду с полями ресурса.

                                                            Дошел до этого только когда заглянул в код процессора… )))

                                                            Спасибо!
                                                      Василий Столейков
                                                      09 июля 2019, 16:22
                                                      0
                                                      Заметил ещё один момент: при удалении локализации страницы (для последующего автоперевода например), заполненные тв-шки локализации не удаляются, и после создания локализации по-новой подтягиваются старые уже заполненные. Это может мешать например автопереводу ТВ-шек (у кого он работает).
                                                      Правда не знаю, это баг или фича такая…
                                                        Константин Ильин
                                                        15 июля 2019, 13:08
                                                        0
                                                        Артем подскажите пожалуйста по переводу Migx

                                                        — Создал tv joxi.ru/zANvYJoiv0dypA
                                                        — Вписал в настройках(сразу в две чуть позже для уверенности) joxi.ru/v29VPa8tZwnOjA
                                                        — создал ресурс и одну запись в русской локализации joxi.ru/zANvYJoiv0dVpA
                                                        — нажал автоматический перевод, но в англ версии не перевелось joxi.ru/n2YjabotbB9npA
                                                        Что еще надо сделать чтобы автоматом переводило? Думаю надо как то по пунктам написать по поводу migx, тут часто вопросы по нему возникают.

                                                        Также подскажите пожалуйста, в другой теме писал по поводу вызовов ms2GalleryResources
                                                        modx.pro/components/12012#comment-111846
                                                          Артем
                                                          16 июля 2019, 13:27
                                                          0
                                                          по первому — так не скажу, надо смотреть
                                                          по второму — ответил под комментарием
                                                            Василий Столейков
                                                            17 июля 2019, 07:06
                                                            0
                                                            Может быть ты API ключ для Яндекс не вписал в настройку localizator_key_yandex?
                                                              Константин Ильин
                                                              17 июля 2019, 09:15
                                                              0
                                                              Вписал, остальное то переводит
                                                              joxi.ru/p27V9KytKYlWwm

                                                              Но вот migx поле не переводит…
                                                              Может в разметке migx чет не то писал, добавил inputTVtype всем полям
                                                              joxi.ru/4Akjo5RtonP0N2
                                                              так же менял inputTVtype на textarea
                                                              Уже на модхосте тестил…
                                                              joxi.ru/brRv5Joi7EaBKr
                                                                Константин Ильин
                                                                17 июля 2019, 10:56
                                                                0
                                                                Оказалось все банально…
                                                                Полез в процессор, выводил в журнал и выяснил, что в конце, после project_years пробел стоял, он считал это символом и частью названия ключа.
                                                                pagetitle,longtitle,menutitle,seotitle,keywords,introtext,description,content,project_years
                                                                проверки пробела нет или str_replace пробелов
                                                                Все переводит, только вот цифры переводит в текст, например 1990 переводит в «One thousand nine hundred ninety». У меня это отдельное поле просто поставил inputTVtype = number.

                                                                Осталось разобраться с вызовами ms2GalleryResources.

                                                                joxi.ru/823Vx6Xt9loaQm
                                                                  Василий Столейков
                                                                  18 июля 2019, 08:36
                                                                  0
                                                                  Извини, не заметил этот коммент.

                                                                  С цифрами беда, это да… Приходилось вручную исправлять. На китайском я исправлял наугад, на китайский он и названия тегов типа span перевёл…
                                                                  Василий Столейков
                                                                  18 июля 2019, 08:33
                                                                  0
                                                                  ТВ поле для перевода называется у тебя "-coorYa"? Прямо начиная с минуса?

                                                                  Название поля должно быть и в настройке localizator_tv_fields и в localizator_translate_fields
                                                                    Константин Ильин
                                                                    18 июля 2019, 08:47
                                                                    0
                                                                    Из документации:
                                                                    Укажите поля со знаком минус в начале чтобы исключить доп.поля ('-image')
                                                                      Василий Столейков
                                                                      18 июля 2019, 08:50
                                                                      0
                                                                      Но тогда прийдётся включить и все остальные, нужные.

                                                                      Как я понял: либо пустая настройка для всех (кстати, image-поля он просто копирует в новый язык, что для меня очень удобно), либо если указал что-то, даже с минусом, то прийдётся перечислять все нужные поля после этого.
                                                              Ян Сонов
                                                              09 августа 2019, 23:29
                                                              0
                                                              Подскажите, можно ли сделать так, чтобы данные для языка по умолчанию брались из обычных вкладок «документ», «дополнительные поля» и контент соответственно из «Содержимого»? А то очень неудобно получается, менеджер сначала, при создании нового документа, заполняет все необходимые поля во вкладке «Документ» и контент в «содержимом», а после сохранения дальнейшие изменения надо делать только через локализацию, а изменения в этих же полях уже ни на что не влияют. Можно, конечно, через настройку форм скрыть все кроме вкладки локализаций и вкладки «документ» с одним лишь заголовком и выбором шаблона, но это как-то костыльно выглядит.
                                                                Василий Столейков
                                                                29 августа 2019, 08:25
                                                                0
                                                                [BUG]
                                                                При обновлении/переустановке компонента затираются файлы лексикона site.inc.php!!!

                                                                Учитывая их содержимое (test), а также то что именно этот файл выводится на странице локализатора в вкладке "Словарь", я думал что именно их надо использовать для своих лексиконов сайта. Если бы не бэкапы, то потерялись бы сотни переводов…

                                                                Если этот файл затирается при обновлении, то смысл тогда вообще в вкладке «Словарь» у CMP локализатора?
                                                                  Артем
                                                                  29 августа 2019, 08:57
                                                                  0
                                                                  Если ты не в курсе, то при обновлении все файлы у всех дополнений обновляются.
                                                                  На вкладка «Словарь» лексиконы добавляются в БД — точно также как и на стандартной странице админки «Управление словарями»
                                                                    Василий Столейков
                                                                    29 августа 2019, 10:45
                                                                    0
                                                                    Печаль, т.к. добавлять лексиконы через админку в несколько раз неудобнее чем файлом. Я считаю, что этот путь только для менеджеров, а для начальной разработки сайта он не подходит, особенно когда нужно сразу 500+ фраз на всех языках залить.
                                                                    Спасибо, буду делать на будущее свои файлы лексиконов…
                                                                  Сергей
                                                                  08 сентября 2019, 02:07
                                                                  0
                                                                  Народ, как вывести в сниппете tv_localizator?
                                                                    Sergey
                                                                    02 декабря 2019, 17:59
                                                                    0
                                                                    Подскажите, почему локализатор может отдавать 404 страницу на другом языке?
                                                                      Sergey
                                                                      02 декабря 2019, 19:17
                                                                      0
                                                                      Решил
                                                                      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                                                      156