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

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

Системные файлы или ядро движка не изменены, компонент работает с помощью хуков, тем самым обеспечивает безпроблемные обновления InstantCMS. При удаление компонента из админки, удаляются все таблицы и виджеты данного компонента.
Evanescence, спасибо!
При переходе по этим ссылкам, видит перевод статьи и индексирует, хотя я могу ошибаться.
Я просмотрю внимательно все введенные вами хуки и добавлю в движок.
что-то типа
Только что-то я не понял из видео, куда вписывать переводы нужно?
Админка - Компоненты - Мультиязычность - Контент - Новости - выбираем Россияне стали первыми на Чемпионате Мира
Там можно перевести заголовок и контент, а так же есть авто перевод от яндекса.
Полный обзор компонента https://www.youtube.com/watch?v=MKHNDXKMKP0
Есть еще пожелание: к примеру, у меня есть действующий сайт с массой контента и только на русском языке. Можно ли как-то реализовать такую функцию, чтобы одним кликом все системные ланги и материалы перевелись яндекс-переводчиком?
Мне, допустим, качество перевода не так важно, а важен поисковый траф по тематике сайта...
Ну, и еще вопрос интересный: может ли компонент переводить комментарии? К примеру, пришел бурж на страницу контента на английском, в каментах видит уже переведенные комменты от других пользователей, отвечает на своем родном ланге, а русский юзер на своей русской странице видит уже автоматом переведенный ответ от англичанина, но с какой-нибудь небольшой иконкой, при наведении на которую всплывает оригинальная писанина автора, ну или хотя бы идет ссылка на оригинал-страницу, с которой был произведен перевод?
2) В системе уже есть готовый хук comments_before_list - возможно получиться сделать как в Фейсбуке, т.е. под текстом комментарии, добавлю кнопку Перевод, при нажатии аяксом переводиться текст
Очень надеюсь что появится версия с /en /ru
Еще конечно бы редактирование контента на одной странице, например разными вкладками(как в вордпрессе), иначе костыли, имхо.
Вообще конечно рад, что делаются первые шаги в этом, очень важном направлении
Так что решить это несложно.Вопрос в механизме решения. Я допустим использую в своих разработках
В файле инициализации инициирую функцию переопределения uri в директории /system/libs/seourl.php
Просто? Да. И универсально не только в плане обработки uri , а и в плане возможности выполнить пользовательские функции до запуска системы,
Но это даст возможность разработчику , для творческих направлений!
1- Поддержка- единая точка входа,
2- Исключение mod_rewrite.
3- Более правильная и многофункциональна преобработка адресов.
PS//Надеюсь найду понимание и заинтересованность разработчиков в данном функционале. .
Для примера - Под seourl.php подразумеваю любой файл, который разработчик сам может определить, пусть с одной функцией возвращающей.
Я в роутерах не очень то разбираюсь, по этому, не могли бы вы подсказать шаги?
Как я понял, мне надо создать хелпер для обработки $_SERVER['REQUEST_URI']
Добавить туда язык из сессии если есть
Далее у компонента есть такой файл, мне надо как то изменить роутер в этом файле?
2. В этом хуке смотрите $_SERVER['REQUEST_URI']
3. Делите $_SERVER['REQUEST_URI'] на части по слешу через explode
4. Если в первой части $_SERVER['REQUEST_URI'] название языка (делаете проверку через список доступных языков), сохраняете язык в сессии
5. Убираете из $_SERVER['REQUEST_URI'] название языка и сохраняете $_SERVER['REQUEST_URI'] уже без него
6. Далее уже ядро продолжит работать штатно, как будто язык и не передавался.
Пойду обновить компонент)
Оказывается в хуках, данные конфига доступы по $this->cms_config->root может так быстрее чем cmsConfig::get('root') или без разницы?
Посмотрел сайт как поисковый робот, мета теги присутствуют http://prntscr.com/asplto
Скоро будет обновления
Вы пример , как нужно поддерживать систему Icms,
Плюс и огромное спасибо!
Fuze!
ВЫ Fuze молодец ,Такие сообщения греют душу, и стимулируют , благодаря позитивному контексту!
Лично от себя скажу, что реально наш Уважаемый разработчик Fuze!, не просто реагирует на нужные исправления, а даже очень быстро.
И все это, за счет своего личного времени!
Искренне спасибо!
Насчет перевода, админ может перевести сам вручную, или же нажать Автоперевод, а потом корректировать текст
Еще по скрину, перевод категории будет в будущих версиях...
Пункт "еще" будет наверно в будущем, когда количество локализации будут 8-10 штук
1. Переходим по ссылке - категория и теги на русском (но это не страшно)
2. Жму в виджете на смену языка на Русский и получаю вот такой результат:
Если отсутствует иконка, можете загрузить в \templates\default\controllers\multilang\flags\ назвние языка и иконки должны совподать
PS. Приходилось работать еще с Drupal и Wordpress. Но настоящее удовольствие от работы и легкость создания сайтов я ощущаю только с InstantCMS.
А сейчас вопрос, я столкнулся с такой штукой.
У меня в адресной строке я прописываю адрес, на пример так: http://site.ru/uk
А в коде вижу такой результат:
Хотя у Вас на демо сайте http://demo3.my-instant.ru/uk я такого не наблюдаю. Как исправить этот глюк?
Подписывайтесь на компонент http://instantcms.ru/addons/multilang.html что бы узнать о выходе новой версии
Сейчас всё нормально, скачайте обновления и установите
Эх, вас бы к мапсу подключить... (мечтательно). Может, попробуете поговорить с R2?
Критика и предложения воспринимаются позитивно. Вокруг взаимопомошь и желание сделать компонент лучше, удобнее! Действительно Реальная Командная Работа!
Наконец InstantCMS получит настоящую мультиязычность!
Извините что по теме, но не удержался!
Желаю всем удачного дня и плодотворной работы!
Я пока не знаю как перевести содержимое, так как у каждого виджета свои запросы к БД, но вот виджеты типов конетнта стали переводиться по непонятным мне причинам, не знаю что я сделал, но раньше не переводились :)
Поисковикам удобнее подавать структурированную информацию. К тому же раскручивать с разными локализациями не получится. Ссылка будет указывать на язык по умолчанию и не каждый человек захочет переключить язык и выбрать свой - просто уйдет с такого сайта.
Поэтому наличие ru en и тд в ссылке - обязательно.
Контекстная реклама тоже отпадает без них если нужно давать ссылку на разные языки.
Уже сказали - разные языки на одной странице - не есть хорошо.
Контент, перевода которого нет на выбранном языке - лучше убирать вовсе.
Удобно в одном модуле сделано отображение языков, пример:
Видно, что есть, чего нет и сразу можно добавить.
В любом случае критиковать легче и я извиняюсь, но не воспринимайте на свой счет, к тому же модуль бесплатен и для каких-то целей кому-то подойдет. Высказываю свое виденье. Автору модуля респект и уважуха!
Очень надеюсь, что новый компонент ждет более счастливая участь и InstantCMS получит настоящую мультиязычность!
Соглашусь с тем, что без указания языка такие ссылки никому не нужны! Если новый компонент не сможет разделять контент по языкам, то его ждет забвение. Я не знаю такой ситуации когда нужна мультиязычность без разделения контента по языкам.
Мультиязычность нужна для того, чтобы контент читался иностранцами, а для этого он должен быть проиндексирован и выложен в доступ поисковиками! Вот и вся правда. Без разделения контента по языкам это не возможно. Ссылки должны быть разными!
Поэтому очень жду такой возможности у нового компонента.
Разве это уже не реализовано?
Для поисковиков есть herflang теги, которые имеют разные url, для разных языков
Для людей есть переключатель языка
Думаю это и имел ввиду предыдущий комментатор.
Это же очевидный костыль, странно читать такие "отмазки" :)
В туду хоть записано или вообще такого в планах нет?
Если нужна материальная помощь - в первый пост реквизиты и поможем чем сможем :)
Проще написать какой нибудь обработчик, который определяет страну пользователя по IP и предлагает сменить язык (если такой язык установлен на сайте).
А раз так, вашему компоненту самая дорога в коробку движка. Есть смысл обсудить это с Fuze
Главное, что все проблемы с Многоязычностью будут решены на системном уровне, что даст явный плюс и самому движку.
Спасибо что сообщили, попробую исправить этот баг
на странице 404 ссылка приобретает вид http://мойсайт.ком/категория и только при повторной попытке перехода в эту категорию пропавшая часть ссылки появляется и открывается страница категории. Причем неважно с какого языка на какой переключился.
Гугл говорить о трех способах добавления hreflang
1) Тег link
2) HTTP заголовок
3) Sitemap.xml
Мы используем Тег link
Если да, то очень жаль.
Может надо поддержать данную доработку материально? Вещь-то нужная!
На днях будет обновления...
Работа идет, но пока не могу найти способ перевода полей страницы профиля и название вкладок...
Еще в планах, добавить перевод Наборов, перевод категории в меню и т.д.
Если есть пожелания, пишите, со временем буду добавлять...
А обновления когда будут доступны для скачивания?
В дополнениях пока вижу версию 1.1.5 от 21 апреля 2016 года. Это обновление я уже устанавливал.
покажите скрин или ошибку
Я дорабатываю плагин. В нем поля в форме "фиксированые", я сделал "динамические", выводятся те что в типе контента.
Столкнулся с проблемой, создания таблиц в бд. Хуков при создании/удалении полей в типе контента нет, что бы можно было обновлять структуру таблиц с переводами.
Подскажите, может есть еще варианты кроме как, при каждом сохранении перевода проверять ячейки в бд, лишние удалять, недостающие добавлять?
Спасибо!
Если решите эту проблему, поделитесь
Уже добавляются/удаляются таблицы при добавлении/удалении типов контента.
Добавляются/удаляются ячеки при добавлении/удалении полей.
Сейчас делаю что бы удалялись переводы при удалении контента, меню и т. д.
Обнаружил следующие баги:
На странице списка контента, в ссылках Наборы, язык дублируется и ведет на 404 http://site.ru/en/en/board-cheap
При нажатии на кнопку Домой в хлебных крошках, язык сбрасывается
Также добавил возможность переводить названия полей в типе контента.
мне тоже удалось перевести пункты меню и категории типов контента в меню, без изменение системных файлов.
Как будет время, сделаю большое обновления с переводами полей типов контента
/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));
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
https://github.com/my-instantcms/icms2_multilang/pull/1
На инсталлер пока времени нету, все остальное я делал на рабочему сайте, а он там не нужен был.
В pull-requeste много файлов изменены, там сложно найти конкретные изменения, по этому, если можно, отправьте файлы на my-instantcms@mail.ru
буду вручную сравнивать и возможно какие то решения позаимствую у вас.
Но новым хукам не понял для чего они? вроде добавили же хуки для полей? я пока к этому не дошел, не знаю где хранить данные перевода типов контента, в старом cms_multilang_contents или создать для каждой свою таблицу?
Стартовая структура для таблицы с переводами контента возвращается методом getContentTableStruct
Для формирования формы для перевода контента используется метод getContentItemForm и addSeoFields
Хуки были добавлены что бы в базе не оставлись не используемые переводы. К примеру при удалении меню, пунктов меню, контента, типа контента, поля контента и т. д.
Я бы советовал взять решения, потому что я добавил много полезных штук. К примеру переводы названий полей контента. На простых сайтах это не сильно актуально, а если в контенте много полей, то это уже нужно, к примеру как на этой странице http://03info.com/medications/1-almagel.html
Сегодня уже поздно, завтра более подробно опишу что было сделано.
Компонент полностью переписан
Рефакторинг кода
Удалены из компонента функции, которые появись в движке
Теперь можно переводить категории из меню
Поддержка текстовых полей контента
Много системных хуков использованы
Исправление багов и мелкие доработки
Для тех кто обновить компонент (а не устанавливает с нуля) сделал Мигратор контента
После обновления не появилась функция миграции раннее переведённого контента. (Устанавливал на обновлённый Инстант 2.6.0 на два сайта, результат идентичен)
При переходе на язык выдаёт ошибку 404 даже при чистой установке как в админке, так и на сайте.
С админки компонент не удаляется, надо идти в БД.
Ошибка 404 возникает из за того, что в адресную строку добавляется страна, uk или en, это конечно хорошо в плане сео, но вот сайт почему-то не работает.
Может это только у меня так?
Тогда помогите понять, где я не так что делаю. :)
Это в системе так задумано, компонент тут не причем. Если опция отключена, получите ошибку 404
Мигратор находиться в Админке - Компоненты - Мультиязычность - Опции
Это кнопка появиться после обновление компонента до 1.2.0
Если нет, посмотрите, открывается ли страница http://ВАШ-САЙТ.ru/admin/controllers/edit/multilang/migrate
А на счёт ссылки Миграции, почему-то её не было у меня, хотя и кеш почистил, но вручную помогло, всё перенёс.
Огромное спасибо за компонент и обновления. Как только появится электронка, отблагодарю не только словами
А на счёт ссылки Миграции, почему-то её не было у меня, хотя и кеш почистил, но вручную помогло, всё перенёс.
Огромное спасибо за компонент и обновления. Как только появится электронка, отблагодарю не только словами
Не переводятся категории, в админке когда захожу в категорию - там переведено, на сайте нет
Содержимое виджета не переводить (кроме виджета Список контента).
далее сменил на русский. теперь выдает 404 ошибку
На https не проверял, можете включить отладку и показать ошибки? или лог ошибок сервера?
Страница Контент, Меню?
Если готовы предоставить доступы для проверки, пишите в личку
Свойств пока не переводить, не было хуков в системе, сейчас вроде много хуков добавил, надо изучить и обновить компонент.
Если вам надо перевести всё, посмотрите компонент Языки
Вы задаете один и тот же вопрос - о возможности переводить HTML виджеты внутри. А это можно сделать и без компонентов используя Google или Яндекс Переводчики. Скриншоты страниц переводчиков (при наличии аккаунтов на Google или Yandex) прилагаются.
Пример использования Google Переводчика (с использованием модального окна) можно увидеть здесь - https://www.noip.com
И ещё скриншот сразу с двумя переводчиками (на локальном Open Server-е на выбор)
Успехов в сайтостроении !
Перевод всего контента? Или количество языков (которое может быть определено пользователем)?
Либо, как в старом анекдоте - "соседний колхоз просит навоз". "Не дадим - сами съедим" !
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
Кто подскажет где исправить?
По поводу ошибки:
Что то не так с переводами пунктов меню, попробуйте удалить переводы и заново переводите.
Напишите в ЛС, возможно потребуется доступ к админке
Версия инстанта 2.12.2, мультиязычность 1.4.0, но специально скачал и установил чистый инстант 2.12.2 и поставил туда мультиязычность 1.4.0., всё заработало. А на основном сайте не работает.
Попробовал поставить предыдущую версию Мультиязычности 1.3.0. Такая же проблема.
последняя, которую можно скачать тут https://instantcms.ru/addons/versions/388
https://translate.yandex.ru/developers/website-widget
И Google, и Яндекс не хотят больше бесплатно переводить. Я так понимаю, что придётся переводить каждую статью ручками в браузере и вставлять на сайт.
Но есть ли в этом смысл, если любой пользователь может сам перевести текст в браузере?
Я думаю — есть, потому, что мы получаем на сайте статью на языке оригинала.
Но она должна быть переведена не автопереводчиком, иначе грош цена такому контенту.