Компонент мультиязычность

+52
13.81K
Иллюстрация
С помощью компонента Мультиязычность, Вы можете перевести контент, меню, виджеты и другие части своего сайта. Поддерживает неограниченное количество языков, которые добавлены в систему (см. папку /system/languages).

Иллюстрация

У компонента понятный интерфейс, который обеспечивает быстрый доступ к объектам и записям для перевода. На странице перевода есть кнопка Авто-перевод от Яндекса, который переводить ваши материалы, а так же есть возможность ручного перевода.

Иллюстрация

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

Инструкция по установке и настройке компонента здесь


P.S. Поблагодарить автора, вы можете просто подписавшись на нашу группу

+2
Ne OS Ne OS 6 лет назад #
Это из категории "Урааа, наконеч-то"!) Спасибо за разработку!
0
Олег Васильевич я Олег Васильевич я 6 лет назад #
Суперское дополнение!
Evanescence, спасибо!
0
Def Def 6 лет назад #
Это нереально круто!!!!! Однозначно должно войти в официальные компоненты, пусть даже не в коробке, а отдельно.
0
Def Def 6 лет назад #
а есть опци, что можно по слешу /en /ru выводились языки? или и без этого поисковики умеют индексировать?
+1
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
yury:
или и без этого поисковики умеют индексировать?
Думаю когда поисковик заходить на страницу материала, то видит мета теги ( https://support.google.com/webmasters/answer/189077?hl=ru)...
При переходе по этим ссылкам, видит перевод статьи и индексирует, хотя я могу ошибаться.
+13
Fuze Fuze 6 лет назад #
Спасибо за участие в проекте InstantCMS!

Я просмотрю внимательно все введенные вами хуки и добавлю в движок.
+6
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Спасибо, буду очень признателен)
+10
Fuze Fuze 6 лет назад #
Добавил, только назвал их более абстрактно. Скорее всего в конце недели будет выпущен релиз 2.5.1 с исправлением ошибок, там это включено будет.
+3
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Спасибо, имена хуков поменяю.
0
Loadырь Loadырь 6 лет назад #
Не сочтите за наглость, может ещё добавите хуки для перевода полей сюда,
что-то типа
Код PHP:
  1. $fieldsets[ $index ]['fields'][] = cmsEventsManager::hook('field_before_fieldset', $field);
и для перевода свойств - перед этой строкой, что-то типа
Код PHP:
  1. list($prop, $field) = cmsEventsManager::hook('prop_before_fieldset', array($prop, $field));
Только более абстрактно.
0
AndroS AndroS 6 лет назад #
Парвиз, вы молодец!
Только что-то я не понял из видео, куда вписывать переводы нужно?
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Например: хотим перевести новости "Россияне стали первыми на Чемпионате Мира"
Админка - Компоненты - Мультиязычность - Контент - Новости - выбираем Россияне стали первыми на Чемпионате Мира
Там можно перевести заголовок и контент, а так же есть авто перевод от яндекса.
Полный обзор компонента https://www.youtube.com/watch?v=MKHNDXKMKP0
+1
AndroS AndroS 6 лет назад #
А, все увидел! Неплохо...
Есть еще пожелание: к примеру, у меня есть действующий сайт с массой контента и только на русском языке. Можно ли как-то реализовать такую функцию, чтобы одним кликом все системные ланги и материалы перевелись яндекс-переводчиком?
Мне, допустим, качество перевода не так важно, а важен поисковый траф по тематике сайта...
Ну, и еще вопрос интересный: может ли компонент переводить комментарии? К примеру, пришел бурж на страницу контента на английском, в каментах видит уже переведенные комменты от других пользователей, отвечает на своем родном ланге, а русский юзер на своей русской странице видит уже автоматом переведенный ответ от англичанина, но с какой-нибудь небольшой иконкой, при наведении на которую всплывает оригинальная писанина автора, ну или хотя бы идет ссылка на оригинал-страницу, с которой был произведен перевод?
+2
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
1) Возможно в будущих версиях будет такая задача по крону
2) В системе уже есть готовый хук comments_before_list - возможно получиться сделать как в Фейсбуке, т.е. под текстом комментарии, добавлю кнопку Перевод, при нажатии аяксом переводиться текст
0
Endroid Endroid 6 лет назад #
А что-то из наработок Ивана нельзя взять? Сомневаюсь, что он против будет. Т.е. тот самый момент с массовым переводом всего текста стразу
+2
Иван Шкута Иван Шкута 6 лет назад #
Совсем даже не буду против. Более того, чтобы долго не ковыряться в моем коде, спрашивайте, подскажу где что. Да и вообще поддержу чем смогу.
+1
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Иван, спасибо, обращусь если возникнут вопросы)
0
vikont vikont 6 лет назад #
Иван! Жаль что вы так и не выполнили своего обещания! Лично я очень ждал, когда вы доделаете свой компонент! Столько трудов выброшено... :(((
+3
Dorimen Dorimen 6 лет назад #
Все равно лучше было бы, если бы для языков был дополнительный урл а-ля /ru, /en etc.
0
AndroS AndroS 6 лет назад #
Полностью поддерживаю!
+3
AndroS AndroS 6 лет назад #
Как вариант, лучше было бы типа поддомена а-ля ru.site.com и en.site.com потому как при реализации вашего предложения нужно будет страховаться от других возможных конфликов в урл по уже имеющимся или возможным в будущем адресам
0
lezginka.ru lezginka.ru 6 лет назад #
+
0
Dost Dost 6 лет назад #
Только ++
0
Khushruz Khushruz 6 лет назад #
Как добавить язык допольнительна у меня сейчас 2 языка
+1
Василич Василич 6 лет назад #
Разный контент на разных языках на одной и той же странице плохо.
Очень надеюсь что появится версия с /en /ru
Еще конечно бы редактирование контента на одной странице, например разными вкладками(как в вордпрессе), иначе костыли, имхо.

Вообще конечно рад, что делаются первые шаги в этом, очень важном направлении v
+1
Старый балбес Старый балбес 6 лет назад #
Очень надеюсь что появится версия с /en /ru
Есть роутер и каноникал.
Так что решить это несложно.Вопрос в механизме решения. Я допустим использую в своих разработках
В файле инициализации инициирую функцию переопределения uri в директории /system/libs/seourl.php
Код PHP:
  1. # переопределение $_SERVER['REQUEST_URI'])
  2. $seourl = seourl();
  3. $core->route($seourl); //возвращает результат обработки<- $_SERVER['REQUEST_URI']);
Таким методом получив в строке запроса типконтента.котнент-гu можно перенаправить на котроллер компонента предварительно изменив сессионные значения языка.Или модно получив uri ru/питконтента.контент выполнить аналогично перенаправление, или можно сделать отдельно компонент URI который позволит иметь обрабатывать любые адреса по заложенной конфигурации.
Просто? Да. И универсально не только в плане обработки uri , а и в плане возможности выполнить пользовательские функции до запуска системы,
Но это даст возможность разработчику , для творческих направлений!
1- Поддержка- единая точка входа,
2- Исключение mod_rewrite.
3- Более правильная и многофункциональна преобработка адресов.

PS//Надеюсь найду понимание и заинтересованность разработчиков в данном функционале. .
Для примера - Под seourl.php подразумеваю любой файл, который разработчик сам может определить, пусть с одной функцией возвращающей.
Код PHP:
  1. $url= $_SERVER['REQUEST_URI']
  2. return $url;
0
Dorimen Dorimen 6 лет назад #
Прекрасно... Если бы сделали что-то подобное.
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Геннадий, спасибо, я думал это вообще не возможно, так как считал site.ru/en система будет считать как компонент... А так было бы классно, если бы получилось, даже гугл это рекомендует...
Я в роутерах не очень то разбираюсь, по этому, не могли бы вы подсказать шаги?
Как я понял, мне надо создать хелпер для обработки $_SERVER['REQUEST_URI']
Добавить туда язык из сессии если есть
Далее у компонента есть такой файл, мне надо как то изменить роутер в этом файле?
0
Старый балбес Старый балбес 6 лет назад #
Давайте завтра в личке ил скайпе подробно обсудим.
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Хорошо
+3
Fuze Fuze 6 лет назад #
1. Цепляетесь за хук engine_start
2. В этом хуке смотрите $_SERVER['REQUEST_URI']
3. Делите $_SERVER['REQUEST_URI'] на части по слешу через explode
4. Если в первой части $_SERVER['REQUEST_URI'] название языка (делаете проверку через список доступных языков), сохраняете язык в сессии
5. Убираете из $_SERVER['REQUEST_URI'] название языка и сохраняете $_SERVER['REQUEST_URI'] уже без него
6. Далее уже ядро продолжит работать штатно, как будто язык и не передавался.
+2
Fuze Fuze 6 лет назад #
Код PHP:
  1. $segments = explode('/', mb_substr($_SERVER['REQUEST_URI'], mb_strlen(cmsConfig::get('root'))));
  2. if (!empty($segments[0])) {
  3. $may_be_lang = $segments[0];
  4. $langs = cmsCore::getLanguages();
  5. if(in_array($may_be_lang, $langs)){
  6. cmsUser::sessionSet('user:language', $may_be_lang);
  7. unset($segments[0]);
  8. $_SERVER['REQUEST_URI'] = '/'.implode('/', $segments);
  9. }
  10. }
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Спасибо большое, я боялся что придется изменить системные файлы)
Пойду обновить компонент)
+1
Fuze Fuze 6 лет назад #
Пардон, чуть чуть неверно написал, замените это
Код PHP:
  1. $_SERVER['REQUEST_URI'] = '/'.implode('/', $segments);
на это
Код PHP:
  1. $_SERVER['REQUEST_URI'] = cmsConfig::get('root').implode('/', $segments);
p.s. я конечно же написал навскидку, не проверял, но должно работать.
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Работает.
Оказывается в хуках, данные конфига доступы по $this->cms_config->root может так быстрее чем cmsConfig::get('root') или без разницы?
+1
Fuze Fuze 6 лет назад #
Оказывается в хуках, данные конфига доступы по $this->cms_config->root может так быстрее чем cmsConfig::get('root') или без разницы?
Конечно доступны, это же все от контроллера. Да, проще и быстрее использовать $this->cms_config->root.
0
Dorimen Dorimen 6 лет назад #
Мы можем надеятся, что мультиязычность будет /ru, /en etc? И именно в таком виде попадет в 2.5.1?
+1
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Dorimen:
Мы можем надеятся, что мультиязычность будет /ru, /en etc?
Вот пример http://demo3.my-instant.ru/en/news/6-vse-bolshe-rossijan-pokupayut-nedvizhimost-za-granicei.html
Посмотрел сайт как поисковый робот, мета теги присутствуют http://prntscr.com/asplto
Скоро будет обновления
0
Старый балбес Старый балбес 6 лет назад #
Fuze:
1. Цепляетесь за хук engine_start 2. В этом хуке смотрите $_SERVER['REQUEST_URI']
Спасибо за подсказку. Хук engine_start и все так просто.Ненужно делать изменения в системных файлах,
0
MegaRostov MegaRostov 6 лет назад #
Просто супер! Но у меня были проблемы с предыдущими версиями.. Надеюсь здесь все просто отлично....(Проблемы на стороне моего сайта)
+8
Старый балбес Старый балбес 6 лет назад #
Evanescence!
Вы пример , как нужно поддерживать систему Icms,
Плюс и огромное спасибо!
Fuze!
Я просмотрю внимательно все введенные вами хуки и добавлю в движок.
Честно! Меня тронуло такая дружественная атмосфера , диалога разработчика и девелопера.!
ВЫ Fuze молодец ,Такие сообщения греют душу, и стимулируют , благодаря позитивному контексту!
Лично от себя скажу, что реально наш Уважаемый разработчик Fuze!, не просто реагирует на нужные исправления, а даже очень быстро.
И все это, за счет своего личного времени!
Искренне спасибо!
0
Melon Melon 6 лет назад #
А не влетит сайт в бан за машинный перевод при таком раскладе (если через переводчик яндекса делать), может знающие люди подскажут?
-1
letsgo letsgo 6 лет назад #
Навряд ли поисковик увидит этот текст вообще. Должно быть выделение языка, как site.ru/en или site.ru/fr. Надо создавать свой перевод или переводит он с помощью переводчика на лету? Если поисковик увидит и это делается на лету, то позиции понизит, ибо машинный перевод он мягко говоря далек от связного текста. Если же вводятся данные тогда надо выделять языки, как написал выше.
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
letsgo:
Должно быть выделение языка
Можно по подробнее, что значить выделение языка? если вы про URL в таком варианте site.ru/en или site.ru/fr то это уже реализовано.
Насчет перевода, админ может перевести сам вручную, или же нажать Автоперевод, а потом корректировать текст
0
letsgo letsgo 6 лет назад #
Пробовал языки нажимал, не увидел изменений в урле.
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
язык в url не постоянно, но на страницах где есть перевод, есть теги herflang http://prnt.sc/asplto для поисковиков, (правда сейчас заметил, что если язык русский, то не выводиться... исправлю) поисковик может переходить по этим ссылка и увидит контент на другом языке
0
Loadырь Loadырь 6 лет назад #
Тоже пробовал через мозиллу по этой ссылке - срабатывает не сразу. При первом выборе ru такая картина - что-то перевёл, что-то "не успел" - https://yadi.sk/d/De7pKN4vr3XMM. Но прогулявшись по паре новостей, вернулся и всё работает. Ещё как пожелание в виджете выбора языков вывести в ряд 2-3 основных языка, а остальные спрятать в "ещё".
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Loadырь:
что-то "не успел"
Согласен, иногда наблюдаю такой глюк, что после смени языка, будет языковые констант не успевают загружаться, странно, ведь страница перезагружается... Но после перехода по какой нибудь ссылке или обновление страниц, всё нормально.
Еще по скрину, перевод категории будет в будущих версиях...
Пункт "еще" будет наверно в будущем, когда количество локализации будут 8-10 штук
0
Val Val 6 лет назад #
Также по ссылке Loadыря заметил следующее:
1. Переходим по ссылке - категория и теги на русском (но это не страшно)
2. Жму в виджете на смену языка на Русский и получаю вот такой результат:
Спойлер
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Понял, попробую убрать из URL язык перед редиректом, а то при смене возвращаемся назад, а там в url есть язык
0
AVPRT AVPRT 6 лет назад #
Добрый день, не скачивается компонент. Вы удалили закачку с сайта?
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Загрузил заново, спасибо что сообщили, теперь скачивается
0
AVPRT AVPRT 6 лет назад #
Добрый день, не пойму как у вас можно добавить дополнительный язык? У меня после установки только двая языка отображаются.
+1
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Компонент выводить языки, установленные в систему, вы можете добавить новый язык в /system/languages/ после этого, в админке компонента и в переключателе языка появиться новый язык.
Если отсутствует иконка, можете загрузить в \templates\default\controllers\multilang\flags\ назвние языка и иконки должны совподать
-2
Андрей Андрей 6 лет назад #
Парвиз, а где языки можно выбрать(скачать) для ICMS2.
+1
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Вот тут http://addons.instantcms.ru/addons/lokalizacii но сейчас есть только украинская локализация, а так же один мой знакомый, передал испанский язык для тестирования и добавил в каталог, но пока вроде не прошел модерацию.
-2
Андрей Андрей 6 лет назад #
Спасибо!
0
Lana Lana 5 лет назад #
Ссылка для украинской локализации - не найдена. Кто-нибудь может продублировать? Спасибо!
+1
BoAnRo BoAnRo 6 лет назад #
Я считаю, что мультиязычность - это то, чего не хватало InstantCMS для возможности называться по-настоящему крутой системой. А теперь и она появилась! Спасибо, Evanescence!

PS. Приходилось работать еще с Drupal и Wordpress. Но настоящее удовольствие от работы и легкость создания сайтов я ощущаю только с InstantCMS.
0
Игорь Lu Игорь Lu 6 лет назад #
Отличный компонент, правда, ещё нуждается в доработках, но вещь нужная.
А сейчас вопрос, я столкнулся с такой штукой.
У меня в адресной строке я прописываю адрес, на пример так: http://site.ru/uk
А в коде вижу такой результат:
Код PHP:
  1. <link rel="alternate" href="http://site.ru/uk" hreflang="ru">
  2. <link rel="alternate" href="http://site.ru/uk/uk" hreflang="uk">
  3. <link rel="alternate" href="http://site.ru/en/uk" hreflang="en">
То есть uk везде дублируется. Может я что-то не так делаю? Хотя установил всё по инструкции.

Хотя у Вас на демо сайте http://demo3.my-instant.ru/uk я такого не наблюдаю. Как исправить этот глюк?
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Может у вас старая версия компонента? в версии 1.1.3 был такой баг, сейчас исправлен.
Подписывайтесь на компонент http://addons.instantcms.ru/addons/multilang.html что бы узнать о выходе новой версии
0
Игорь Lu Игорь Lu 6 лет назад #
Скачивал 1.1.4
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Проблема оказалась в компоненте, забыл добавить один файл...
Сейчас всё нормально, скачайте обновления и установите
0
Игорь Lu Игорь Lu 6 лет назад #
Помогло! Огромное спасибо v
0
Loadырь Loadырь 6 лет назад #
Evanescence , а версия на гите обновляется раньше, чем в разделе "Дополнения" или нет?
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Обычно загружаю сразу, с разницей 4-5 минут
+2
Loadырь Loadырь 6 лет назад #
Спасибо, а то я с утра начал "ковыряться" в нём. Сейчас перекачал заново. Кстати, если можно, добавьте ещё этот шаблон для виджета выбора локализации. Это слегка подправленный ваш шаблон switch.tpl. Там во второй строке можно указать количество видимых языков, остальные спрячутся.
+2
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Хорошо, очень рад что бы подключились к доработке, с вашими знаниями компонент станет еще лучше)
+1
AndroS AndroS 6 лет назад #
Вы молодцы - подаете хороший пример другим и просто уже видна командная работа. Я рад за инстант и вас. Всегда в выборе расширений для инстанта в первую очередь буду рассматривать ваши разработки!
Эх, вас бы к мапсу подключить... (мечтательно). Может, попробуете поговорить с R2?
+2
vikont vikont 6 лет назад #
Как приятно зайти в эту тему и даже лишний раз перечитать комментарии! smile
Критика и предложения воспринимаются позитивно. Вокруг взаимопомошь и желание сделать компонент лучше, удобнее! Действительно Реальная Командная Работа!
Наконец InstantCMS получит настоящую мультиязычность!
Извините что по теме, но не удержался!
Желаю всем удачного дня и плодотворной работы! smile
0
ermakover ermakover 6 лет назад #
Если я правильно понял - содержимое текстового виджета не переводится? Только заголовок?
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Да, заголовок и ссылки в заголовке.
Я пока не знаю как перевести содержимое, так как у каждого виджета свои запросы к БД, но вот виджеты типов конетнта стали переводиться по непонятным мне причинам, не знаю что я сделал, но раньше не переводились :)
0
Loadырь Loadырь 6 лет назад #
Evanescence:
виджеты типов конетнта стали переводиться по непонятным мне причинам
Причина понятна - у вас есть перевод заголовка и контента этих записей выводимых в виджете.
0
SpaceSel SpaceSel 6 лет назад #
Щикарно!
+1
PolarOne PolarOne 6 лет назад #
С этим модулем дело заглохло, увы http://instantcms.ru/blogs/blog-piligrima/unilang-avtomaticheskii-perevodchik-saita.html

Поисковикам удобнее подавать структурированную информацию. К тому же раскручивать с разными локализациями не получится. Ссылка будет указывать на язык по умолчанию и не каждый человек захочет переключить язык и выбрать свой - просто уйдет с такого сайта.
Поэтому наличие ru en и тд в ссылке - обязательно.
Контекстная реклама тоже отпадает без них если нужно давать ссылку на разные языки.

Уже сказали - разные языки на одной странице - не есть хорошо.
Контент, перевода которого нет на выбранном языке - лучше убирать вовсе.

Удобно в одном модуле сделано отображение языков, пример:

Видно, что есть, чего нет и сразу можно добавить.

В любом случае критиковать легче и я извиняюсь, но не воспринимайте на свой счет, к тому же модуль бесплатен и для каких-то целей кому-то подойдет. Высказываю свое виденье. Автору модуля респект и уважуха!
0
vikont vikont 6 лет назад #
К сожалению вы правы! Иван Шкута пообещал вернуться к доработке своего компонента в январе и бросил всех кто поверил и установил его на свои сайты! Но пришлось вычищать айты, так как создавал проблемы в недоработанном виде.

Очень надеюсь, что новый компонент ждет более счастливая участь и InstantCMS получит настоящую мультиязычность!

Соглашусь с тем, что без указания языка такие ссылки никому не нужны! Если новый компонент не сможет разделять контент по языкам, то его ждет забвение. Я не знаю такой ситуации когда нужна мультиязычность без разделения контента по языкам.

Мультиязычность нужна для того, чтобы контент читался иностранцами, а для этого он должен быть проиндексирован и выложен в доступ поисковиками! Вот и вся правда. Без разделения контента по языкам это не возможно. Ссылки должны быть разными!

Поэтому очень жду такой возможности у нового компонента.
+1
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
vikont:
Если новый компонент не сможет разделять контент по языкам, то его ждет забвение.
А можно по подробнее, что значить "разделять контент по языкам"?
Разве это уже не реализовано?
Для поисковиков есть herflang теги, которые имеют разные url, для разных языков

Для людей есть переключатель языка
+1
Василич Василич 5 лет назад #
Есть у меня приятель англосакс, по-русски ни жу-жу, я ему кидаю ссылку на английском языке вида http://demo3.my-instant.ru/news/8-investicii-dlja-chainikov-kuda-vkladyvat.html что он тут прочитает?
Думаю это и имел ввиду предыдущий комментатор.
+1
Василич Василич 5 лет назад #
т.е. для людей должен быть язык в ссылке, не только в коде.
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Данный момент язык в ссылке реализовано только для поисковиков, для людей есть переключатель языка, но вы так же можете дать своему приятелю такую ссылку: http://ваш-сайт.ru/en/news/page.html тогда он попадает на английскую версию
+1
Василич Василич 5 лет назад #
Ладно я, дам, а если другой юзер решит поделиться ссылкой на другом языке?
Это же очевидный костыль, странно читать такие "отмазки" :)
В туду хоть записано или вообще такого в планах нет?
Если нужна материальная помощь - в первый пост реквизиты и поможем чем сможем :)
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Скажу честно: нет в планах, так как для реализации потребуется добавлять текущий язык ко всем внутренним ссылкам сайта, думаю тут не обойтись без изменения системных файлов...
Проще написать какой нибудь обработчик, который определяет страну пользователя по IP и предлагает сменить язык (если такой язык установлен на сайте).
0
vikont vikont 5 лет назад #
Fuze очень благожелательно относится к вашей разработке и уже кое что внес в системные файлы!
А раз так, вашему компоненту самая дорога в коробку движка. Есть смысл обсудить это с Fuze
Главное, что все проблемы с Многоязычностью будут решены на системном уровне, что даст явный плюс и самому движку.
0
Ne OS Ne OS 6 лет назад #
В remap переопределял /places на /in. При первом клике (после смены языка) на пункт меню которая ведет на страницу категории выдает ошибку 404. Нажимаю назад в браузере и повторно кликаю на тот же пункт и страница категории открывается. На странице 404 заметил, что теряется часть ссылки а именно "/in"
+1
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Компонент считает ваш /in как какой то язык и удаляет из URL после смени языка...
Спасибо что сообщили, попробую исправить этот баг
0
Ne OS Ne OS 6 лет назад #
Для информации: "/in" в середине ссылки т.е. полная ссылка выглядит так http://мойсайт.ком/in/категория
на странице 404 ссылка приобретает вид http://мойсайт.ком/категория и только при повторной попытке перехода в эту категорию пропавшая часть ссылки появляется и открывается страница категории. Причем неважно с какого языка на какой переключился.
+1
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Понял, будет исправлено
0
Dorimen Dorimen 6 лет назад #
А как-то мультиязычность прописывается в сайтмап?
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
Нет, да и не обязательно вроде...
Гугл говорить о трех способах добавления hreflang
1) Тег link
2) HTTP заголовок
3) Sitemap.xml

Мы используем Тег link
0
Игорь Lu Игорь Lu 6 лет назад #
Неужели на этом всё остановилось?
Если да, то очень жаль. sad
Может надо поддержать данную доработку материально? Вещь-то нужная!
0
My-InstantCMS.Ru My-InstantCMS.Ru 6 лет назад #
На данный момент добавлено перевод полей кратких описании и новый виджет Переключатель языка от Loadырь.
На днях будет обновления...

Работа идет, но пока не могу найти способ перевода полей страницы профиля и название вкладок...
Еще в планах, добавить перевод Наборов, перевод категории в меню и т.д.
Если есть пожелания, пишите, со временем буду добавлять...
0
Игорь Lu Игорь Lu 6 лет назад #
Отлично!!!
А обновления когда будут доступны для скачивания?
В дополнениях пока вижу версию 1.1.5 от 21 апреля 2016 года. Это обновление я уже устанавливал.
0
Нико Нико 5 лет назад #
Ждем функций перевода полей в профиле
0
Endroid Endroid 5 лет назад #
C iMaps отказывается работать
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Что именно не работает?
покажите скрин или ошибку
0
Endroid Endroid 5 лет назад #
0
Loadырь Loadырь 5 лет назад #
MakArtSoft, это мапс отказывается работать на других языках. У вас отсутствуют файлы переводов виджет мапса в папке language/(выбранный язык).
0
proger.su proger.su 5 лет назад #
Здравствуйте!
Я дорабатываю плагин. В нем поля в форме "фиксированые", я сделал "динамические", выводятся те что в типе контента.

Столкнулся с проблемой, создания таблиц в бд. Хуков при создании/удалении полей в типе контента нет, что бы можно было обновлять структуру таблиц с переводами.

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

Спасибо!
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Я тоже с начало хотел так сделать, но как вы уже написали, нет хуков для создании/удалении полей, по этому решил сделать фиксированным.
Если решите эту проблему, поделитесь
0
proger.su proger.su 5 лет назад #
Я писал r2, он сказал создать тикет на гитхабе. Тикет создал https://github.com/instantsoft/icms2/issues/295
0
proger.su proger.su 5 лет назад #
Спасибо разработчикам за оперативное добавление хуков.

Уже добавляются/удаляются таблицы при добавлении/удалении типов контента.
Добавляются/удаляются ячеки при добавлении/удалении полей.

Сейчас делаю что бы удалялись переводы при удалении контента, меню и т. д.
0
proger.su proger.su 5 лет назад #
Нужно еще придумать как красиво сделать, что бы переведенный контент искался через поиск.
0
proger.su proger.su 5 лет назад #
*поиск на сайте
+2
Fuze Fuze 5 лет назад #
Поддержка корректной смены языка (без редиректов) теперь будет поддерживаться из коробки. Так что теперь можно сконцентрироваться исключительно на механизме перевода данных.
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Спасибо.
Обнаружил следующие баги:
На странице списка контента, в ссылках Наборы, язык дублируется и ведет на 404 http://site.ru/en/en/board-cheap
При нажатии на кнопку Домой в хлебных крошках, язык сбрасывается
0
proger.su proger.su 5 лет назад #
Отлично! Большое спасибо!
0
proger.su proger.su 5 лет назад #
Удаляются переводы меню, при удалении пунктов меню или самого меню.
Также добавил возможность переводить названия полей в типе контента.
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Если решитесь поделиться) сделайте pull-request https://github.com/my-instantcms/icms2_multilang
мне тоже удалось перевести пункты меню и категории типов контента в меню, без изменение системных файлов.
Как будет время, сделаю большое обновления с переводами полей типов контента
0
proger.su proger.su 5 лет назад #
Обязательно поделюсь. Но мерджить вам наверное прийдется вручную. Мне не удобно было читать код в вашем форматировании, я там добавлял отступы и т. д., по этому в гите покажет что там все переписано scratch
0
proger.su proger.su 5 лет назад #
P. S. Я два хука изменил, а два добавил новых. На гитхабе не стал пока писать, думаю когда все доделаю, потом напишу.

/system/controllers/content/model.php
cmsEventsManager::hook('ctype_field_after_update', array($field, $field_old, $ctype_name, $this));

/system/controllers/menu/model.php
cmsEventsManager::hook('menu_item_after_delete', $item_id);

/system/controllers/menu/model.php
cmsEventsManager::hook('menu_before_delete', $id);

/system/controllers/content/frontend.php
list($ctype, $items, $fields) = cmsEventsManager::hook('content_before_list', array($ctype, $items, $fields));
list($ctype, $items, $fields) = cmsEventsManager::hook("content_{$ctype['name']}_before_list", array($ctype, $items, $fields));
0
Jorzhik Jorzhik 5 лет назад #
Спасибо автору все супер, только после установки у меня админка стала английской как поправить никто не сталкивался?
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Значить вы на сайте переключились на английский, а админка использует тот же язык что и сайт
0
driverriga driverriga 5 лет назад #
Evanescence, скажи, версия компонента уже финальная, я имею ввиду ставить её на существующие сайты можнo ? :)
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Нет, в InstantCMS 2.6 убрали метод получение языка из сессии, но добавили много чего нового:
1) язык теперь меняется по URL из коробки (так что убрал это из компонента)
2) язык всегда храниться в URL, т.е. если переключиться на английский, то url всегда будет site.ru/en/news/read.html
3) добавили хук для добавлению/удалению полей, так что компонент теперь может хранить перевод всех полей типов контента (сейчас только заголовок и текст), но я реализовал перевод значение только полей типа 'caption', 'string', 'html', 'text', так как только они содержать текст.
4) еще мне удалось перевести пунктов меню {content:add} и {content:news} без изменение системных файлов. Это те пункты, которые генерирует система. Например пункт Создать в персональном меню, и пункт Новости при наведении, которого всплывает категории
5) еще что то было, не помню, как только выйдет 2.6 продолжу работу

По этому наверно придется изменить структуре БД, возможно переводы типов контента будем хранить в таблицах cms_multilang_[имя_контента], я пока не знаю как перенести текущие переводы, на новые таблицы, по этому если есть время, подождите выхода 2,6
0
proger.su proger.su 5 лет назад #
Как и обещал отправил пулреквест со всем тем что я писал выше плюс еще несколько доработок, но мерджить нужно в ручную (отступы разные). Прошу обратить внимание на комментарий к пулреквесту.
https://github.com/my-instantcms/icms2_multilang/pull/1

На инсталлер пока времени нету, все остальное я делал на рабочему сайте, а он там не нужен был.
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Да, код без отступов (похоже привык к этому), но я уже полностью переписал компонент, удалил много файлов, теперь для каждого объекта для перевода отвечает один файл, код удобный, с отступами)
В pull-requeste много файлов изменены, там сложно найти конкретные изменения, по этому, если можно, отправьте файлы на [email protected]
буду вручную сравнивать и возможно какие то решения позаимствую у вас.

Но новым хукам не понял для чего они? вроде добавили же хуки для полей? я пока к этому не дошел, не знаю где хранить данные перевода типов контента, в старом cms_multilang_contents или создать для каждой свою таблицу?
0
proger.su proger.su 5 лет назад #
Таблица cms_multilang_contents больше не используется. Вместо нее cms_multilang_con_ + имя контента.
Стартовая структура для таблицы с переводами контента возвращается методом getContentTableStruct
Для формирования формы для перевода контента используется метод getContentItemForm и addSeoFields

Хуки были добавлены что бы в базе не оставлись не используемые переводы. К примеру при удалении меню, пунктов меню, контента, типа контента, поля контента и т. д.

Я бы советовал взять решения, потому что я добавил много полезных штук. К примеру переводы названий полей контента. На простых сайтах это не сильно актуально, а если в контенте много полей, то это уже нужно, к примеру как на этой странице http://03info.com/medications/1-almagel.html

Сегодня уже поздно, завтра более подробно опишу что было сделано.
0
proger.su proger.su 5 лет назад #
Если будете включать эти изменения в слудующую версию компонента, нужно написать запрос Fuze что бы он добавил несколько хуков в движок.
0
proger.su proger.su 5 лет назад #
Также я написал просьбу для Loadырь, что бы он добавил один хук в свой компонент, что бы и он переводился.
+3
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Обновил компонент для совместимости с 2.6
Компонент полностью переписан
Рефакторинг кода
Удалены из компонента функции, которые появись в движке
Теперь можно переводить категории из меню
Поддержка текстовых полей контента
Много системных хуков использованы
Исправление багов и мелкие доработки

Для тех кто обновить компонент (а не устанавливает с нуля) сделал Мигратор контента
+1
Игорь Lu Игорь Lu 5 лет назад #
Спасибо за обновление, но есть проблемы.
После обновления не появилась функция миграции раннее переведённого контента. (Устанавливал на обновлённый Инстант 2.6.0 на два сайта, результат идентичен)
При переходе на язык выдаёт ошибку 404 даже при чистой установке как в админке, так и на сайте.
С админки компонент не удаляется, надо идти в БД.

Ошибка 404 возникает из за того, что в адресную строку добавляется страна, uk или en, это конечно хорошо в плане сео, но вот сайт почему-то не работает.

Может это только у меня так?
Тогда помогите понять, где я не так что делаю. :)
+1
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Совсем забыл предупредить что теперь, для того что бы смена языка работала в 2.6 надо включить опцию

Это в системе так задумано, компонент тут не причем. Если опция отключена, получите ошибку 404

Мигратор находиться в Админке - Компоненты - Мультиязычность - Опции


Это кнопка появиться после обновление компонента до 1.2.0
Если нет, посмотрите, открывается ли страница http://ВАШ-САЙТ.ru/admin/controllers/edit/multilang/migrate
0
Игорь Lu Игорь Lu 5 лет назад #
Спасибо за подсказку. Сам же видел эту функцию разрешения переключения языков после того как обновил Инстан и забыл про неё.
А на счёт ссылки Миграции, почему-то её не было у меня, хотя и кеш почистил, но вручную помогло, всё перенёс.
Огромное спасибо за компонент и обновления. Как только появится электронка, отблагодарю не только словами v
0
Игорь Lu Игорь Lu 5 лет назад #
Спасибо за подсказку. Сам же видел эту функцию разрешения переключения языков после того как обновил Инстан и забыл про неё.
А на счёт ссылки Миграции, почему-то её не было у меня, хотя и кеш почистил, но вручную помогло, всё перенёс.
Огромное спасибо за компонент и обновления. Как только появится электронка, отблагодарю не только словами v
0
Jestik Jestik 5 лет назад #
Установил на чистую 2.6.1

Не переводятся категории, в админке когда захожу в категорию - там переведено, на сайте нет
0
Jestik Jestik 5 лет назад #
И есть ли перевод содержимого виджетов? Спасбо!
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Пока что переводить категории только в меню, т.е. если есть меню {content:news} который выводить как под-меню категории типа контента, их переводить.

Содержимое виджета не переводить (кроме виджета Список контента).
+1
Jestik Jestik 5 лет назад #
Понял, спасибо!
+1
Def Def 5 лет назад #
очень круто! считаю это должно войти как официальный компонент движка:) пусть иотдельно устанавливаемый!
0
Def Def 5 лет назад #
чтото выдало 404 ошибку, после того как сменил язык интерфейса на английский, поставил галку переуключать язык с подстановкой URL
далее сменил на русский. теперь выдает 404 ошибку
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Ответил выше
0
Def Def 5 лет назад #
кстати, а есть ли смысл у профиля пормировать ссылку на английскую версию? ведь там контент не переводится же в полях. мне кажется это лишщние страницы для поисковика будут как дубли, что не гуд для сео
0
rbs rbs 5 лет назад #
Evanescence, компонент хороший, но после обновления могу сразать сказать один критичный баг. В HTTPS:// не работает вообще. Выплевывает ошибку 404 при заходе на /en , а в админке отказывается напрочь подгружать контент и информацию для редактирования. В HTTP всё работает без проблем.
0
rbs rbs 5 лет назад #
прошу удалить, глюкнуло :(
0
rbs rbs 5 лет назад #
Evanescence, компонент хороший, но после обновления могу сказать один критичный баг. В HTTPS:// не работает вообще. Выплевывает ошибку 404 при заходе на /en , а в админке отказывается напрочь подгружать контент и информацию для редактирования. В HTTP всё работает без проблем.
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
В админке - настройки - интерфейс - включили разрешение на смену языка? (см фото)

На https не проверял, можете включить отладку и показать ошибки? или лог ошибок сервера?
0
rbs rbs 5 лет назад #
Mixed Content: The page at ' https://мойсайт/admin/controllers/edit/multilang/objects/contents/lazy' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint ' http://мойсайт/admin/controllers/edit/multilang/objects_ajax/contents/articles/0'. This request has been blocked; the content must be served over HTTPS.
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
А другие раздели админки, где используется datagrid таблица работают без проблем?
Страница Контент, Меню?
0
rbs rbs 5 лет назад #
да, в других разделах нормально в https. Проблемы только в "мультиязычности" sad
0
rbs rbs 5 лет назад #
да, в других разделах нормально в https. Проблемы только в "мультиязычности" sad
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
Данный момент нет возможности проверить с https
Если готовы предоставить доступы для проверки, пишите в личку
0
rbs rbs 5 лет назад #
поправка. галочка в настройках решает проблему открытия сайта в https, но в админке материалы также отказываются грузиться sad . И в http почему-то не хотят работать ajax сортировки(
0
My-InstantCMS.Ru My-InstantCMS.Ru 5 лет назад #
rubesslov:
И в http почему-то не хотят работать ajax сортировки(
Да это баг компонента, скоро исправлю
0
AndroS AndroS 4 года назад #
Подскажите, с 2.7.2 все ли работает? Также интересует, работают ли переводы свойств типов контента?
0
My-InstantCMS.Ru My-InstantCMS.Ru 4 года назад #
Да работает.
Свойств пока не переводить, не было хуков в системе, сейчас вроде много хуков добавил, надо изучить и обновить компонент.

Если вам надо перевести всё, посмотрите компонент Языки
0
AndroS AndroS 4 года назад #
Который unilang? Он вроде заброшен же...
0
My-InstantCMS.Ru My-InstantCMS.Ru 4 года назад #
нет, вот это
0
TOPg TOPg 4 года назад #
подскажите возможности переводить HTML виджеты внутри, еще не предусмотрена?
0
My-InstantCMS.Ru My-InstantCMS.Ru 4 года назад #
Данный момент нет, переводить заголовок и ссылки
0
TOPg TOPg 4 года назад #
подскажите возможности переводить HTML виджеты внутри, еще не предусмотрена?
0
DeDja DeDja 4 года назад #
Здесь и в Компоненте "Языки" для ICMS 2 2.X - http://instantcms.ru/blogs/kladovka-kodera/komponent-jazyki-dlja-icms-2.html#comment_102771
Вы задаете один и тот же вопрос - о возможности переводить HTML виджеты внутри. А это можно сделать и без компонентов используя Google или Яндекс Переводчики. Скриншоты страниц переводчиков (при наличии аккаунтов на Google или Yandex) прилагаются.


Пример использования Google Переводчика (с использованием модального окна) можно увидеть здесь - https://www.noip.com
И ещё скриншот сразу с двумя переводчиками (на локальном Open Server-е на выбор)


Успехов в сайтостроении !
0
TOPg TOPg 4 года назад #
а зачем нужен этот колхоз? этот метод не годится
0
DeDja DeDja 4 года назад #
Не понятно, что означает слово "колхоз"?
Перевод всего контента? Или количество языков (которое может быть определено пользователем)?
Либо, как в старом анекдоте - "соседний колхоз просит навоз". "Не дадим - сами съедим" !
0
Pascal Pascal 4 года назад #
Начало выскакивать предупреждение
Notice: Undefined offset: 46 in /www/system/controllers/multilang/hooks/menu_before_list.php on line 23

Warning: array_merge(): Argument #1 is not an array in /www/system/controllers/multilang/hooks/menu_before_list.php on line 23
Кто подскажет где исправить?
0
My-InstantCMS.Ru My-InstantCMS.Ru 4 года назад #
Версия системы какая? на 2.9 еще не тестировал компонент.

По поводу ошибки:
Что то не так с переводами пунктов меню, попробуйте удалить переводы и заново переводите.
0
Pascal Pascal 4 года назад #
Версия 2.8.2 на 2.9 ещё не обновлял. Попробую. Спасибо.
0
Pascal Pascal 4 года назад #
Не помогло удалить и заново перевести меню.
0
My-InstantCMS.Ru My-InstantCMS.Ru 4 года назад #
А версия компонента последняя?
Напишите в ЛС, возможно потребуется доступ к админке
0
WhiteDesign WhiteDesign 3 года назад #
Подскажите пожалуйста, есть ли возможность настроить компонент, чтобы он работал при английской локализации по умолчанию?
0
Vladimir Vladimir 1 год назад #
может подскажите в чём дело, сначала думал, что в компоненте ошибка, потом поставил на чистый инстант и всё заработало. Вообщем при просмотре разделов: "Контент", "Поля", "Наборы", "Категория", "Меню", отображается ползунок ( ) и ничего не загружается, в режиме отладка ошибок не вижу, кеширование при установке было выключено, разрешить смену языка пользователями стоит. Скажите пожалуйста, в чём может быть проблема?
0
My-InstantCMS.Ru My-InstantCMS.Ru 1 год назад #
Версия компонента и системы последняя?
0
Vladimir Vladimir 1 год назад #
Обновить инстант на 2.13.1 пока не могу.
Версия инстанта 2.12.2, мультиязычность 1.4.0, но специально скачал и установил чистый инстант 2.12.2 и поставил туда мультиязычность 1.4.0., всё заработало. А на основном сайте не работает.
Попробовал поставить предыдущую версию Мультиязычности 1.3.0. Такая же проблема.
0
Vladimir Vladimir 1 год назад #
Есть способ, посмотреть почему не згружаются страницы, может файл с логами где-нибудь..?
0
My-InstantCMS.Ru My-InstantCMS.Ru 1 год назад #
Дайте доступ в ЛС
0
Vladimir Vladimir 1 год назад #
Загрузил основной сайт на тестовый хостинг, но там без https, все заработало. Скорее всего проблема в https, с данным расширением мультиязычность у меня не хочет работать.
0
My-InstantCMS.Ru My-InstantCMS.Ru 1 год назад #
Да была какая то проблема с https, вроде решил их в следующих обновлениях, у Вас просто старая версия
0
Vladimir Vladimir 1 год назад #
1.4.0
последняя, которую можно скачать тут https://addons.instantcms.ru/addons/versions/388
0
Vladimir Vladimir 1 год назад #
Точно, проблема в https
+1
abasia abasia 1 год назад #
Поправить бы под новую админку
0
Vladimir Vladimir 1 год назад #
в яндексе больше нет бесплатного API, теперь всё через yandex.cloud работает. Кто-нибудь пробовал ставить? Там такой же API будет, будет работать или что-то менять нужно?
0
Vladimir Vladimir 1 год назад #
Я говорю про API для перевода.
+1
DeDja DeDja 1 год назад #
Виджет никто не отменял -
https://translate.yandex.ru/developers/website-widget
0
Vladimir Vladimir 1 год назад #
А при чем здесь виджет яндекса, когда речь о API яндекс переводчика для данного компонента? Вопрос, как API настроить?
0
Vladimir Vladimir 1 год назад #
Решил создать тему на форуме /forum/thread33852-1.html
0
ermakover ermakover 4 месяца назад #

И Google, и Яндекс не хотят больше бесплатно переводить. Я так понимаю, что придётся переводить каждую статью ручками в браузере и вставлять на сайт. 

Но есть ли в этом смысл, если любой пользователь может сам перевести текст в браузере?

Я думаю — есть, потому, что мы получаем на сайте статью на языке оригинала. 

Но она должна быть переведена не автопереводчиком, иначе грош цена такому контенту.

Еще от автора

Обновление шаблона LTE
Исправление всех известных багов и другие доработки в шаблоне LTE
Бесплатный шаблон LTE
Адаптация бесплатного шаблона AdminLTE на InstantCMS 2.15 и выше.
Обновление доски 1.4.1
Обновление компонента "Новая доска объявлений", где исправлены все обнаруженные баги, а так же реализованы все хотелки, которые пользователи просили д
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.