Компонент "Языки" для ICMS 2 2.X

6481
Компонент \"Языки\" для ICMS 2

Компонент "Языки" предназначен для тотального перевода сайта на нужный вам язык. Он позволяет переводить все меню и виджеты сайта, контент страниц и групп, категории, заголовки полей контента, категории, наборы, теги, профили пользователей. Поддерживается любое количество языков, определение установленных языков происходит автоматически. Потратив 15-20 минут вы сможете полностью перевести ваш сайт на несколько языков и организовать переключение между ними.

Идеей для написания компонента послужил компонент " Мультиязычность", автору которого хочется выразить огромный респект. Компонент был написан с нуля, однако я не счел зазорным позаимствовать у его автора несколько мелких фрагментов, например виджет переключения языков. И не потому, что лень было писать самому, а потому, что в этом нет никакого смысла. Надеюсь он на меня не в обиде.

По возможности был использован функционал хуков системы, однако в целом ряде случаев он оказался бесполезен, что потребовало правки шаблонов. Возможно я пропустил какой-либо момент, который мог использовать, я не претендую на роль человека, знающего систему во всех тонкостях и деталях, но функционал хуков на мой взгляд бедноват. Надеюсь разработчики обратят на это внимание в будущих релизах. В целом потребовалось около десятка вставок в код шаблона чтобы реализовать все задуманное.

На данный момент в компоненте предусмотрен перевод всего и вся за исключением комментариев. Перевод комментариев я счел лишним по целому ряду причин о которых, думаю, распространяться не стоит. Ниже вы найдете обзорный видеоролик, посвященный компоненту. Я никогда еще не записывал видео, поэтому это моя первая "проба пера". Прошу строго не судить. Видео записывал по ходу тестирования поэтому просьба простить мне все неточности формулировок и неудачно сформулированные фразы.

Компонент полностью бесплатен, однако любые пожертвования будут восприняты мной как степень заинтересованности сообщества в улучшении компонента и будут стимулировать меня к его развитию. Поблагодарить можно по реквизитам, указанным в профиле или воспользовавшись кнопками на этой странице.

Парсер контента для ICMS 2
Комментарии (126)
Evanescence 19 декабря 2016 в 17:30 +7
Отличная разработка, большой плюс.
Жалко конечно, что придется внести вручную правки, но если это и вправду только в шаблонах, то нечего страшного)
Не терпится скачать и посмотреть код)
dwd 19 декабря 2016 в 17:48 +1
Пока что ожидает модерации. Как отмодерируют скачаете. Для реализации поиска по переведенным тегам пара строк добавлена в контроллер тегов, все остальное не затрагивает файлы системы, все вставки кода на уровне шаблонов.
Evanescence 19 декабря 2016 в 18:10 0
Постепенно разработчики добавляют хуки и мы избавляемся от хаков, думаю с поиском тегов тоже справимся.
А разработчики шаблонов могут добавить код в свой шаблон с проверкой
Код PHP:
  1. $langs = cmsCore::isControllerExists('langs') ? cmsCore::getController('langs') : false;
  2. <?php if ($langs) { ?>
  3. //код
  4. <?php } ?>
dwd 19 декабря 2016 в 18:18 +4
Вот практически как вы написали это и реализовано. Все вставки имеют вид:

Код PHP:
  1.  
  2. $system_lang = cmsCore::getLanguageName();
  3. $config = cmsConfig::getInstance();
  4. if(cmsCore::isControllerExists('languages') && $system_lang !== $config->language) {
  5. $model = cmsCore::getModel('languages');
  6. $title = $model->filterEqual('item_id', $group['id'])->filterEqual('lang', $system_lang)->filterEqual('ctype','groups')->getFieldFiltered('languages_groups', 'title');
  7. if($title) $group['title'] = $title;
  8. }
Игорь Lu 19 декабря 2016 в 17:39 +2
После тестов сразу надо включить в новый релиз Инстанта dance
чебурек дохлэй мыш 19 декабря 2016 в 17:45 0
На данный момент в компоненте предусмотрен перевод всего и вся за исключением комментариев
И перевод городов? Пример. Делаем ангоязычную версию. На нее приходит ангоязычный посетитель и хочет зарегистрироваться. При регистрации нужно заполнить поле Город. Он увидит список стран, регионов, городов на английском? Или же Ваш компонент переводит только контент?
dwd 19 декабря 2016 в 17:50 +3
Специально для вас сделаю данную возможность если вы возьметесь перевести 9к+ городов, областей и стран хотя бы на один язык.
чебурек дохлэй мыш 19 декабря 2016 в 18:21 0
Если я не ошибаюсь, в Инстанте уже заложен английский "пакет" городов. Где-то видел, кажется, Fuze говорил, что при выборе английского языка в начале установки, все города будут на английском.

Специально для вас
Спасибо)) Специально для меня не надо. Но без этого ни одно дополнение для мультиязычности не имеет смысла, если при создании сайта мы ориентируемся на пользователей, не знающих русский.

Ну а вообще, конечно, хорошо, что Инстант развивается и обрастает разными полезностями.
dwd 19 декабря 2016 в 18:27 +1
Все города хранятся в БД, так что вряд ли вы найдете там английский язык. Хотя я, если признаться в эту сторону и не копал. Лично мне поле "Город" не требовалось ни в одном из моих проектов. Так что для вас может это смысла и не имеет, а для меня в самый раз. Все сугубо индивидуально.
чебурек дохлэй мыш 19 декабря 2016 в 18:40 0
Я это знаю. Но Вы сказали, что сможете реализовать перевод городов, если я Вам предоставлю их список на другом)) Вот здесь скачайте последнюю версию InstantCMS, в архиве в папке install\languages\en в файле geo.sql все города и страны на английском. Пользуйтесь на здоровье))

Лично мне... не требовалось
Лично Вам может и нет. Но ведь Вы делитесь разработкой не лично с собой?))) Но это всё слова. Отличный компонент, всё хорошо!))
Loadырь 19 декабря 2016 в 18:44 +2
Английские названия городов устанавливаются при установке движка с выбранным английским языком по умолчанию.
чебурек дохлэй мыш 19 декабря 2016 в 19:09 0
Так речь ведь идет о мультиязычной версии. Я так понимаю, для украинской версии города должны быть на украинском, для английской - на английском, для немецкой - на немецком.

Я задал простой вопрос, на который получил простой ответ)) Не стоит теперь это перемусоливать, как обойтись, обойти и так далее. Нет так нет))
GoodMade.ru 19 декабря 2016 в 19:31 0
Это не к чему. Украинцы и русские поймут что написано на русском. Англичане и немцы поймут что написано на английском. Иначе через лет этак, когда вы закончите формировать мультиязычную базу городов, выясниться что появилось ещё с десяток прежде несуществующих наций. )))
чебурек дохлэй мыш 19 декабря 2016 в 19:37 0
Если так рассуждать, то тогда вообще этот компонент не нужен. Немец поймет, что написано по английски, а украинец - что написано по-русски. Зачем заморачиваться? А для тех, кому не понятно что-то - ссылку в сайдбаре на переводчик)) Зачем осенью ставить зимнюю резину? По асфальту можно и на летней ездить.
GoodMade.ru 19 декабря 2016 в 20:13 0
Ну это вы обобщаете я же по сути говорю. ))
чебурек дохлэй мыш 19 декабря 2016 в 21:45 0
По сути - если переводить, то переводить АБСОЛЮТНО ВСЁ, а не кусками. Другое дело, что возможности такой нет.
dwd 19 декабря 2016 в 19:50 +1
Попробую поставить точку:



Ну а вот собственно правильный перевод:



И таких городов, поверьте, наберется немало. Так что правильность перевода, как я и сказал выше, будет безбожно хромать. Делать это должен человек, который действительно знает как правильно города называются. Иначе толку от такого перевода ноль.
чебурек дохлэй мыш 19 декабря 2016 в 19:14 0
Все города хранятся в БД
Но ведь и весь контент хранится в БД. Каким образом происходит перевод контента? Берется из базы значение и в другой таблице записывается вариант на другом языке. Или не так? Есть компонент "География", он есть в коробке. Связать Ваш компонент с ним и... Ну, в общем, Вы поняли)) Не спешите только, и не бросайте все дела ради этого. Меня, признаться, вообще мультиязычность мало интересует. Просто вот интересно было, учли ли Вы этот нюанс.

Спасибо.
dwd 19 декабря 2016 в 19:19 0
Так я вам выше написал то же самое. Инструмент для перевода сделать не проблема. А вот перевести названия(причем перевести правильно) я бы не взялся. Протыкать мышкой 9к+ названий и получить автоперевод от Яндекса конечно можно, только боюсь, что после этого немцы и англичане будут очень долго искать свой город в списке с недоумением почесывая затылок.
чебурек дохлэй мыш 19 декабря 2016 в 19:33 0
Ну ладно тогда)) Забудьте. Как удалить эти сообщения?))
GoodMade.ru 19 декабря 2016 в 18:26 +1
А может быть компонент назвать: Мультиязычность? ))
А то например мне, образно представляется это
dwd 19 декабря 2016 в 18:31 +4
Компоненту Мультиязычность посвящен целый абзац текста, включая респект его автору. Но речь идет о компоненте с гораздо большими возможностями, нежели Мультиязычность. Если бы компонент Мультиязычность удовлетворял все мои потребности думаете стал бы я писать новый?
GoodMade.ru 19 декабря 2016 в 18:36 0
думаете стал бы я писать новый?
Об это ли речь.. )))
GoodMade.ru 19 декабря 2016 в 18:42 0
Например когда говорите Многоязычность, я понимаю суть но само по себе слово языки несёт другой образ ))
dwd 19 декабря 2016 в 18:55 +2
Что поделаешь ... "Бренд" уже занят.))))))
Алексей Тимофеев 19 декабря 2016 в 18:33 0
Отличный компонент+ видео шикарное.
dwd 19 декабря 2016 в 18:37 +1
Ну это вы мне явно льстите. Мало того что писал видео первый раз так еще и без подготовки. Паузы и путаница в терминах оставляют желать лучшего.))))
Алексей Тимофеев 19 декабря 2016 в 19:07 0
Сам делал видео и знаю как это трудно, сбиваешься, путаешься, делаешь паузы...в общем гуд.
GoodMade.ru 19 декабря 2016 в 20:15 0
Аноним-минусадор с тобой явно не согласен! Поправил это дело своим скромным правом на плюс ))
Def 19 декабря 2016 в 19:55 0
Отличное дополнение!

Еще бы, для облегчения первичного перевода сайта, можно было бы нажать один раз на кнопочку "перевести" и все перевелось бы автоматом, чтобы не надо было по 100500 раз кликать по флажкам http://prntscr.com/dldgzb

есть такая возможность работы с апи яндекса?)
dwd 19 декабря 2016 в 20:16 +1
Теоретически сделать можно все, что угодно. В том числе и то, о чем вы говорите. Однако вопрос в целесообразности. Я, если честно, смысла в этом не вижу. Если бы данное действие вам приходилось проделывать каждый день, то, возможно, это имело бы смысл. Ну а так, если вы делаете сайт не для ботов, а для людей, то думаю потратить 15 минут на вдумчивый перевод лучше, чем потом в куче переведенного текста пропустить кучу ошибок перевода. Ролик длится около 30 минут, при этом 70% времени я болтал языком и размахивал мышкой. Если не тратить на это время, то начальный перевод сайта занимает порядка 10-15 минут.
Def 25 декабря 2016 в 16:53 0
На действующий сайт проблемное пост учить быстро, за то точно ничего не пропустишь
Jestik 19 декабря 2016 в 21:02 0
Установил, очень понравилось!
Jestik 19 декабря 2016 в 21:08 0
Но категории чего то все равно не переводяться...файлы залили из папки res. шаблон boxed, но там этих файлов нет, а значит они беруться из дефолта
dwd 19 декабря 2016 в 21:11 +1
Залейте в дефолтный шаблон с заменой существующих. Если проблема не исчезнет опишите проблему подробнее. Где именно не перевелись категории?
Jestik 19 декабря 2016 в 21:21 0
Залил же ш. проверил код, в коде есть. Наборы и все остальное перевелось.

Не перевелись в виджете категорий. над списком записей перевелось. а вот в виджете нет
dwd 19 декабря 2016 в 21:32 +2
В виджете и не должны были перевестись. Этот функционал будет реализован в ближайших версиях. Если, конечно, это будет кому-либо нужно.
Jestik 19 декабря 2016 в 21:34 0
Та я понял)
Сам попробовал. но что то не особо выходит.) Спасибо за такое дополнение)

А что все выводят категории над списком записей?
dwd 19 декабря 2016 в 21:49 +1
Специально для вас запилил на коленке. Для решения конкретно вашей задачи пойдет, но вообще надо искать другие пути. Вставьте этот код в самое начало файла templates/default/controllers/content/widgets/categories/categories.tpl.php и получите переведенные категории в виджете.

Код PHP:
  1. <?php # перевод категорий
  2. $system_lang = cmsCore::getLanguageName();
  3. $config = cmsConfig::getInstance();
  4. if(cmsCore::isControllerExists('languages') && $system_lang !== $config->language) {
  5. foreach($cats as $key=>$cat){
  6. $model = cmsCore::getModel('languages');
  7. $title = $model->filterEqual('item_id', $cat['id'])->filterEqual('lang', $system_lang)->getFieldFiltered('languages_cats', 'title');
  8. if($title) $cats[$key]['title'] = $title;
  9. }
  10. }
  11. # перевод категорий ?>
Игорь Lu 20 декабря 2016 в 02:35 +1
Пока всё супер, только было бы не плохо сделать переводимыми текстовые виджеты.
Потому что если надо вывести короткое описание, на пример на главной странице сайта, в текстовом виджете, то он остаётся не переведённым.
Если такая возможность будет, то это будет вообще просто Бомба joke
Владимир 20 декабря 2016 в 22:53 0
Это и так Бомба. Великолепная и нужная работа, громадный шаг вперед для всей системы! Большое спасибо разработчику! И переводимыми текстовые виджеты сделать в обновлении просьба, действительно, их переводить нужно.
dwd 20 декабря 2016 в 23:13 +3
Сделаем, обязательно сделаем. Просто хотелось бы придумать более оригинальное решение, позволяющее переводить любые сторонние виджеты. Ведь не только текстовые виджеты содержат контент, но и виджеты категорий, тегов и т.д. Написать для каждого виджета свой код как тремя постами выше не проблема, но это называется словом "костыль". Хотелось бы придумать какое-то систематизированное решение.
Игорь Lu 20 декабря 2016 в 23:29 0
Хотелось бы придумать какое-то систематизированное решение
Это разумный подход.
Уверен, у Вас обязательно получится, а мы подождём! joke
Удалился 20 декабря 2016 в 09:07 0
Отличная разработка smile
lezginka.ru 20 декабря 2016 в 11:28 0
+
Игорь Lu 21 декабря 2016 в 15:34 0
Обнаружил один баг.
Суть заключается в том, что если есть какая-либо статья в типе контента скрытая для публикации, то все остальные статьи которые следуют за закрытой не выводятся в компоненте «Языки» и их перевод становится невозможным.
Надеюсь, по возможности, будет исправлено :)
dwd 21 декабря 2016 в 15:41 0
Под понятием скрытая вы понимаете это?
dwd 21 декабря 2016 в 15:52 0
Проверил сейчас на сайте, но никакого бага не обнаружил.
Выключил, сделал приватными:

Вот вид на сайте:

Вот с переводом:
http://img-fotki.yandex.ru/get/56796/109657871.4/0_567d87_4df263cd_orig.png
Вот в интерфейсе компонента:
http://img-fotki.yandex.ru/get/29473/109657871.4/0_567d86_6786a30b_orig.png
Все переводится, все работает.
Игорь Lu 21 декабря 2016 в 16:13 0
Странно, но у меня почему-то нет в списке статей после той что выключена, а точнее, она на модерации и пока ещё даже не публиковалась, но те статьи, что идут после неё и уже опубликованы в списке не появились.
dwd 21 декабря 2016 в 17:10 +1
Да, наблюдается такой глюк со статьями, находящимися на модерации. В файле system/controllers/languages/backend/actions/content.php (строка 27) замените

Код PHP:
  1. $total = $model->getContentItemsCount($ctype);
на

Код PHP:
  1. $total = $model->getCount('con_'.$ctype);
Архив перезалью чуть позже.
Игорь Lu 21 декабря 2016 в 17:16 0
СПАСИБО ЗА ОПЕРАТИВНОСТЬ! :)
Нико 22 декабря 2016 в 09:37 0
Не знаю Баг это, но поля в профиле не переводятся и при добавление поля, не добавляются.
Нико 22 декабря 2016 в 09:46 0
В профиле вкладки тоже не переводит (
dwd 22 декабря 2016 в 11:33 0
Значит вы не произвели замены в файлах шаблона.
Iceman 23 декабря 2016 в 16:51 0
Отличная разработка, но в моем случае сходу не заработала.
При попытке переключения языка идет переход на sitename/en но вместо английской версии выдает 404. Куда копать в этом случае?
Устанавливал сначала скопировав все содержимое папки package и дальше установив с пропуском копирования файлов. Все правки указанные в readme сделал.
Iceman 23 декабря 2016 в 17:02 0
Пересмотрел видео и нашел, что забыл поставить разрешение на переключение языка пользователями. Теперь переключатель заработал.
Игорь Lu 23 декабря 2016 в 20:57 0
Ещё обнаружил один косячок. :)
Не знаю, может это только у меня, но при переводе компонент заменяет название сайта на главной странице подставляя название одного из типов контента, в моём случае это с объявлений.
dwd 23 декабря 2016 в 21:44 0
Попробовал повторить косячок ... не вышло. Посмотрите, как у вас в шаблоне выводится title, шаблон явно не дефолтный и наверняка проблема в этом. В дефолтном шаблоне вывод заголовка осуществляется строкой
Код PHP:
  1. <title><?php $this->title(); ?></title>
Игорь Lu 23 декабря 2016 в 22:32 0
Шаблон не дефолтный, но title выводится как в дефолтном.
Даже не знаю, кеш чистил, кеширование всё отключал, но результат остался.
dwd 23 декабря 2016 в 22:56 +1
В файле system/controllers/languages/hooks/content_before_list.php (строки 18-22)

Код PHP:
  1. foreach($ct_translate as $val){
  2. if (!empty($val['seo_title'])){ $this->cms_template->setPageTitle($val['seo_title']); }
  3. if (!empty($val['seo_keys'])){ $this->cms_template->setPageKeywords($val['seo_keys']); }
  4. if (!empty($val['seo_desc'])){ $this->cms_template->setPageDescription($val['seo_desc']); }
  5. }
замените на

Код PHP:
  1. foreach($ct_translate as $val){
  2. if($this->cms_core->controller != 'frontpage'){
  3. if (!empty($val['seo_title'])){ $this->cms_template->setPageTitle($val['seo_title']); }
  4. if (!empty($val['seo_keys'])){ $this->cms_template->setPageKeywords($val['seo_keys']); }
  5. if (!empty($val['seo_desc'])){ $this->cms_template->setPageDescription($val['seo_desc']); }
  6. }
  7. }
ну а перевод сео-описаний для главной страницы в следующих релизах уже.
Игорь Lu 23 декабря 2016 в 23:06 0
Отлично, всё помогло v
Игорь Lu 25 декабря 2016 в 17:49 0
А в каком файле указано ограничение количества символов в поле «content»?
Просто есть контент имеющий большое количество символов, перевожу его даже вручную и вставляю в поле контента, но контент в этом поле обрезается при сохранении перевода.
dwd 25 декабря 2016 в 17:57 0
Ни в каком, это ограничение Яндекс-переводчика:

При желании его можно обойти разбив текст на несколько запросов, но я этим не занимался, были более важные моменты.
Игорь Lu 25 декабря 2016 в 18:04 0
Я переводил вручную и вставлял просто текст, но но при сохранении половина обрезалась, а в таблице Базы Данных указано, что задано сильно много символов.
Я так подозреваю, что есть где-то ограничение. В самой БД думаю такого ограничения нет, ведь основной контент сохраняется без проблем. Вот я и подумал, что ограничение где-то задано в файлах.
dwd 25 декабря 2016 в 18:17 0
В компоненте таких ограничений нет. Вообще нет. Поля таблиц также идентичны.




Во время тестирования я сохранял текст объемом 9760 символов, подобных проблем не обнаружил. Как найду минутку попробую повторить ваш эксперимент.
Игорь Lu 25 декабря 2016 в 23:19 0
Как можно передать Вам мой код для эксперимента? Здесь и в личных сообщениях передать его не могу, тоже режет.
dwd 25 декабря 2016 в 23:24 0
почта есть в моем профиле. файликом передайте.
Radu 26 декабря 2016 в 00:05 0
А как добавить язык?
dwd 26 декабря 2016 в 00:18 0
Все языки, присутствующие в папке system/languages вашего сайта будут автоматически добавлены в компонент. Вам нет надобности что-либо создавать, просто загрузите файлы вашей локализации в папку languages.
Radu 26 декабря 2016 в 00:28 0
А от куда их взять? к примеру мне нужны файлы MD (молдавский)
dwd 26 декабря 2016 в 00:48 +2
Ну наверное сделать самому. Берете папочку system/languages/ru, копируете ее куда-нибудь, переименовываете из ru в md(или как будет молдавский, я не знаю) и ложите обратно в папку system/languages. Ну а после долго, но уверенно переводите содержимое всех ее файлов на молдавский язык. Также в системе присутствуют и другие файлы, нуждающиеся в таких правках. В каталоге дополнений есть украинская локализация, я бы при переводе отталкивался от нее. там видно какие файлы системы необходимо перевести.
dwd 26 декабря 2016 в 00:53 +3
Да, забыл сказать - когда закончите перевод не забудьте поделиться им с общественностью. И тогда такие вопросы как ваш будут иметь простой и быстрый ответ!
Radu 26 декабря 2016 в 01:06 +1
Точно так и начал делать но про украинскую не знал, попробую сделать. Спасибо!
Iceman 27 декабря 2016 в 14:42 0
А возможно ли сделать перевод страницы добавления контента и соответственно содержимого полей, таких как например списки, что бы пользователь говорящий на другом языке смог полноценно добавлять контент?
В видео решение этой задачки не нашел.
dwd 27 декабря 2016 в 16:03 +1
Именно над этим в данный момент идет работа, готовность 70%, ожидайте.
Иван Шкута 1 января 2017 в 18:22 0
Если на сайте включено кеширование, то у посетителей возникает проблема с переключением языка. Для исправления нужно после
Код PHP:
  1. public function run(){
добавить:
Код PHP:
  1. $this->disableCache();
в файле /system/controllers/languages/widgets/switch/widget.php
RBJ 8 января 2017 в 16:36 0
В файл templates/default/assets/ui/form.tpl.php (строка 138) СТРОКУ <?php echo $field->getInput($value); ?> ЗАМЕНИТЬ НА: <? # перевод содержимого форм if(cmsCore::isControllerExists('languages')) {

заменить на

<?php # перевод содержимого форм if(cmsCore::isControllerExists('languages'))

и в папке "res" в дефолтном шаблоне есть мелкие разбежности с шаблоном 2.6.1
dwd 8 января 2017 в 17:35 0
и в папке "res" в дефолтном шаблоне есть мелкие разбежности с шаблоном 2.6.1
Разве что в нумерации строк. Код идентичен. Все файлы взяты из установочного пакета 2.6.1

заменить на <?php # перевод содержимого форм if(cmsCore::isControllerExists('languages'))
Уже обсудили данный момент здесь
rubesslov 17 февраля 2017 в 00:42 0
Извините, а планируется дальнейшая разработка модуля "Языки"? SEO часть, мета и проч... ?
dwd 17 февраля 2017 в 01:04 0
Вы меня этим вопросом вогнали в ступор. Насколько мне известно в этой области пробелов перевода нет. Вот вам код среднестатистической страницы, скажите что в ней нужно перевести:
Спойлер
rubesslov 3 марта 2017 в 20:22 0
прошу прощения, некорректно задал вопрос, видимо задумался о чем-то другом (всё-таки 00:42 smile ). Выше вас спрашивали про формы добавления контента, и вы сказали что там идет работа (ссылка - http://instantcms.ru/blogs/kladovka-kodera/komponent-jazyki-dlja-icms-2.html#c96428 ) , хотелось бы узнать, удалось ли вам это реализовать? smile .

И маленький вопрос: с момента публикации последней версии компонента вышли 2 новые версии InstantCMS. Не пришлось ли что-то менять в компоненте?
sindoyun 18 февраля 2017 в 12:11 0
Так это надо переводить самостоятельно каждую новую добавленную новость?
AVPRT 7 апреля 2017 в 00:43 0
А что разве ручной перевод нельзя делать? Только автоматический?
У меня почему-то не сохраняются переведенные слова, вернее они сохраняются в форме но на сайте при переключении языка ничего не происходит.
Поставил на последнюю новую версию инстанта с нуля.
AVPRT 7 апреля 2017 в 22:50 0
В новой версии где найти вот это:

В файл templates/default/controllers/groups/group_content.tpl.php (строка 4)

ПОСЛЕ

$list_header = empty($ctype['labels']['profile']) ? $ctype['title'] : $ctype['labels']['profile'];

вставить.....
AVPRT 8 апреля 2017 в 02:51 0
Подскажите пожалуйста, где искать эти строки?

В файл templates/default/assets/ui/form.tpl.php (строка 138)

СТРОКУ <?php echo $field->getInput($value); ?>

У меня в последней версии инстанта таких строк в этом файле нет.
Владимир 8 апреля 2017 в 06:22 0
На последнюю версию 272 не ставил ещё. Воспользуйтесь подготовленными автором файлами с изменениями, работать будет (потом сравните их с более новыми и внесите изменения с помощью winmerge программы)
А что разве ручной перевод нельзя делать?
Можно корректировать автоперевод вручную (хоть всё самостоятельно переводить).
AVPRT 18 апреля 2017 в 00:46 0
У меня нет этих строк в оригинальной версии инстанта 2.7.2 :


В файл templates/default/assets/ui/form.tpl.php (строка 138)

СТРОКУ <?php echo $field->getInput($value); ?>

а без этого в админке выдает ошибку под полями пишет:

В КОНЕЦ ФАЙЛА templates/default/assets/ui/form.tpl.php ДОБАВИТЬ:


И превод не появляется на сайте, хотя в админке пишет, что сохранился перевод
medexpert 12 мая 2017 в 17:22 0
Добрый день. Спасибо за разработку.
Установил Ваш компонент. Возник маленький глюк - не отображаются флажки. Я думаю, дело в правах доступа. Подскажите где они должны лежать. Я "новенький" и совсем не знаю систему.
dwd 12 мая 2017 в 20:15 0
Иконки флажков лежат в папке templates/default/controllers/languages/images/flags. Изначально там находятся иконки для русского, английского, немецкого, французского, украинского и американского языков, вы же можете добавить любые свои.
AVPRT 16 июня 2017 в 07:05 0
Здравствуйте, столкунулся с таким моментов в ашем компоненте, что текст записи при переводе обрезается до некоторого значения.
Подскажите пожалуйста, где править лимиты максимального размера текстовых блоков переведенных на другие языки?
dwd 16 июня 2017 в 07:16 0
Здравствуйте! Здесь уже поднимался этот вопрос - http://instantcms.ru/blogs/kladovka-kodera/komponent-jazyki-dlja-icms-2.html#c96371
Как4 выяснилось автор этого поста пытался сохранить текст объемом более 50к символов. Если у вас такая ж ситуация, то вам нужно сменить в таблице languages_con_ваш_тип_контента тип поля с TEXT на MEDIUMTEXT или LONGTEXT, Тип текст, который задан по умолчанию позволяет хранить не более 4096 символов.
AVPRT 19 июня 2017 в 11:09 0
А пользователи сами могут переводить свой контент, например статью? Или только администратор? Я включаю в админке компонента опцию разрешить пользователю переводить формы полей и ничего не происходит, я так понял это не то о чем я думаю ?
dwd 19 июня 2017 в 11:25 0
Я не знаю о чем вы подумали, но лучше 1 раз увидеть чем 100 раз услышать - https://youtu.be/KCajKZ2VoWs?t=365
AVPRT 20 июня 2017 в 10:57 0
У меня почему-то поля перевода на другие языки не появляются в форме, хотя галочки везде поставил
dwd 20 июня 2017 в 13:15 0
Именно для этого в пакете с компонентом есть папка res и файлик readme.txt
AVPRT 22 июня 2017 в 17:05 0
А как содержимое текстовых блоков виджетов переводить?
dwd 22 июня 2017 в 19:41 0
Идете в "Виджеты и страницы", настраиваете маски для каждого языка и вешаете нужные виджеты на нужном языке.
Колян 25 сентября 2017 в 17:30 0
К сожалению, масками не получается вывести виджеты, не работает двигло ни с отрицательными ни с положительными масками, для языков отличных от предустановленного...
dwd 25 сентября 2017 в 17:44 0
Учту на будущее, но в таком случае думаю этот комментарий было бы уместнее разместить тут.
SverigeR 24 июня 2017 в 19:26 0
Подскажиете пожалуйста что не так - переважу текст в компоненте Языки все переводиться но на сайте перевод неотражаеться. Все делаю как показано на видео но результата нет ..... все нужние галочки тоже поставлены... переводиться только тот текст который в языковой папке ... Версия 2.7.2. и дефольтний шаблон изпользую
dwd 24 июня 2017 в 19:53 0
переважу текст в компоненте Языки
Подробнейшая информация и вот вам подробнейший ответ - понятия не имею. Могу лишь предположить, что вы неправильно установили компонент. В 2.7.2 произошли значительные изменения в системе хуков и для их правильной работы необходимо включать режим отладки, чтобы хуки были добавлены в БД.
SverigeR 24 июня 2017 в 20:42 0
... может быть ... заметил что проблема с фаилом model.php..... установив версию 1.1.1. на 2.7.1 все работает, обнавлая до версийи 2.7.2 и Языки 1.1.2 компонет неработает - перекинув обратна фаил model.php из 1.1.1 все в порадке ...
AVPRT 25 июня 2017 в 09:29 0
После того, как сохранил перевод на нескольких языках и открываешь снова для редактирования, в редактор не подтягивается переведенный текст, тоесть отображается только русский во всех языковых режимах, хотя при просмотре на сайте при переключении языка видится и переведенный текст.

Где может быть проблема?
dwd 25 июня 2017 в 11:44 0
Не могу ответить на ваш вопрос, поскольку не получается воспроизвести данную проблему. Все значения полей корректно подтягиваются в поля формы при редактировании - http://img-fotki.yandex.ru/get/226827/109657871.28/0_5773f4_d3c705a7_orig.png. Проверено на всех языках и во всех редакторах, проблемы нет. Возможно ваша проблема заключается в других установленных дополнениях.
AVPRT 25 июня 2017 в 23:35 0
Обнаружена ошибка в коде:

ссылка

http://prntscr.com/fo1q11
AVPRT 25 июня 2017 в 23:37 0
Это когда в админке включено сжатие html, глючит таким образом перевод текста
Vladimir 6 сентября 2017 в 23:42 -1
Обнаружил следующую ошибку. С ДАННЫМ КОМПОНЕНТОМ НЕВОЗМОЖНО СОЗДАТЬ ЗАПИСЬ В СОЗДАННОМ ПОСЛЕ УСТАНОВКИ КОМПОНЕНТА ТИПЕ КОНТЕНТА!. При отладке видна ошибка.

Ошибка в запросе БД:
Таблица 'xxxx.cms_languages_con_products' не существует

SHOW COLUMNS FROM `cms_languages_con_products`
Последние вызовы:
dwd 7 сентября 2017 в 05:04 +1
Если бы вы посмотрели видео, то не писали бы капсом. Такой ошибки в компоненте нет. Вам достаточно после создания нового типа контента перейти в админке на главную страницу компонента "Языки" и данная таблица будеть создана автоматически. Приятного использования!
Vladimir 16 октября 2017 в 14:58 0
Спасибо за комментарий! А ещё вопрос, при использовании instantmaps вкладки не переводятся и не переводится поле с адресом, это тоже где-то исправляется?
Сейчас за место вкладок, наблюдается следующее:
LANG_PLACES_ITEM_TAB_INFO
LANG_PLACES_ITEM_TAB_NEWS
LANG_PLACES_ITEM_TAB_EVENTS
LANG_PLACES_ITEM_TAB_REVIEWS

В поле адреса:
LANG_PLACES_ITEM_ADDR_BLOCK
dwd 16 октября 2017 в 15:06 0
Я думаю ваш вопрос не имеет никакого отношения к компоненту "Языки". Просто у вас в папках других языков отсутствует языковой файл компонента(system/languages/язык/controllers/places/places.php). Он должен присутствовать в папке каждого языка и являться переведенной копией файла system/languages/ru/controllers/places/places.php).
TOPg 24 сентября 2017 в 12:23 0
подскажите возможности переводить HTML виджеты внутри, еще не предусмотрена?
dwd 24 сентября 2017 в 20:31 0
Это делается средствами системы. В админке в разделе "Виджеты и страницы" создаете маски под каждый язык и вешаете виджеты с нужным текстом.
Smooch 25 сентября 2017 в 17:01 0
Первое что мне пришло в голову. Но не получается создать маску. Instant 2.8.1., как будто "en" система не знает.
Речь правда о другом компоненте - мультиязычность, думаю логика работы схожая. Пока ищу способы и варианты перевода виджетов.
dwd 25 сентября 2017 в 17:44 0
Учту на будущее, но в таком случае думаю этот комментарий было бы уместнее разместить тут.
Loadырь 25 сентября 2017 в 17:45 0
Маски не работают с языком, так как язык вырезается, до того как идёт проверка урла по маске.
TOPg 25 сентября 2017 в 18:03 0
то то и плохо так, как контент перевести одно, а содержимое виджетов тоже бы нужно
Sonat 16 декабря 2017 в 15:57 0
Не нашел в описании, переводчик от Гугла или Яндекса?
dwd 26 декабря 2017 в 16:17 +1
Переводчик от Яндекса.
Sonat 26 декабря 2017 в 17:22 0
Этого и боялся.
На украинский сервер не поставить cry
dwd 26 декабря 2017 в 17:31 +1
Я сам из украины, но сервер у меня на территории РФ. А так да, в вашем случае автоперевод работать не будет, все придется переводить вручную.
Алексей Тимофеев 26 декабря 2017 в 15:57 0
Подскажите как добавить языки другие
dwd 26 декабря 2017 в 16:14 0
Мне помнится я уже отвечал вам на этот вопрос - http://instantcms.ru/blogs/kladovka-kodera/komponent-jazyki-2-0-dlja-instantcms-2.html#c103340
Компонент автоматически подтягивает все языки, присутствующие в системе и вам достаточно создать для языка папку с языковыми константами, аналогичную папкам ru и en. Язык будет автоматически распознан компонентом.
DeDja 26 декабря 2017 в 16:46 +1
Sonat, Алексей Тимофеев - см. комментарий (от DeDja) здесь: http://instantcms.ru/blogs/moi-razrabotki/komponent-multijazychnost.html
Там на картинках присутствуют ссылки. Предпочитаю Яндекс. А "ломанный" Гугли можно видеть тут: http://v1-x.ru (во всех трёх шаблонах).
@AHgpeu 30 июля 2018 в 12:50 0
Доброго дня!
Благодарю за великолепное дополнение!

Возникли вопросы:

Есть ли возможность при сохранении новой статьи автоматически, "на лету", при сохранении статьи сразу переводить все поля?
Переводить скриптом, без необходимости залезать потом в модуль и тыканья кнопочек?

Есть ли возможность выводить, на каком языке был написан оригинал статьи/поста?

Заранее благодарен за ответы.
@AHgpeu 30 июля 2018 в 17:07 0
Автоперевод нашёл) надо было обновить файлы...
А вот вопрос про оригинальный язык остался.
Буду признателен за вариант решения!
dwd 30 июля 2018 в 17:21 0
Для того, чтобы знать на каком языке была добавлена публикация эти данные нужно где-то сохранять и хранить. Поэтому единственным вариантом решения этой задачи является добавление в тип контента поля, которое будет хранить базовый язык публикации. Можно добавить обычное поле типа Список с перечнем языков и дать возможность пользователю возможность самому указывать родной язык публикации, можно написать поле, которое будет делать это без участия пользователя основываясь на текущем языке сайта. Однако при использовании расширенных форм все языки равноправны и никто не мешает пользователю добавить статью на любом языке, так что этот метод будет неточен.

P.S. Я бы на вашем месте посмотрел в сторону второй ветки данного компонента:
http://instantcms.ru/blogs/kladovka-kodera/komponent-jazyki-2-0-dlja-instantcms-2.html
http://instantcms.ru/blogs/kladovka-kodera/komponent-jazyki-2-0-dlja-icms-2-obnovlenie-2-1.html