Создание мультиязычного магазина на VirtueMart

Опубликовано: 17 Февраль, 2017
Обновлено: 20 Февраль, 2017
Категория: Настройка VirtueMart, Общие вопросы
Комментариев: 6

В этой статье поговорим про настройку мультиязычности для магазина на VirtueMart.

Как известно, Ален Делон говорит по-французски. Добавим этот язык к уже установленным русскому и английскому.

Раздел Языковые константы может быть полезен владельцам зарубежных шаблонов при трудностях с локализацией.

Но начать, конечно, нужно с настройки мультиязычности самой Joomla.

Добавление нового языка

Первый этап - установка файлов локализации нового языка. В Расширения > Менеджер языков нажимаем кнопку Установить язык.

Находим нужный язык и устанавливаем его.

После этого необходимго добавить новый язык в список языков контента в Расширения > Менеджер языков > Языки контента.

Во вкладке Название сайта можно задать имя сайта для этого языка. Может быть полезно, если в Система > Общие настройки > Сайт активна опция Включать название сайта в заголовок страницы.

Новый язык добавлен.

Меню

Для каждого языка нужно создать свое меню в Меню > Менеджер меню. Внутри каждого меню будут находиться пункты только конкретного языка. Настроить язык для пункта меню можно с помощью опции Язык.

Важное уточнение. Нужно создать отдельное меню, в котором будет ссылка только на главную и в опции Язык выбрано Все. Также для всех пунктов меню(для всех языков), ведущих на главную, обязательно должна быть активирована опция Главная страница, как на скрине выше.

Результат настройки меню.

В выпадающем списке будут показаны иконки языка для каждого меню.

Модуль переключения языков

Для смены языка на сайте можно использовать стандартный модуль Переключение языков.

Для правильной работы модуля в Менеджере плагинов необходимо активировать плагин Система - Фильтр языка.

Можно оставить все настройки по умолчанию.

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

В результате на сайте появятся кнопки для выбора языка.

Контент и модули

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

Настройка связей

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

Логика очень проста. В настройках каждого пункта меню/категории/материала нужно указать соответствующий контент на других языках.

Внутри каждого пункта меню заходим во вкладку Связи и указываем аналогичные пункты для других языков.

То же самое делам в настройках категорий и материалов.

Все настроенные связи можно посмотреть в списке пунктов меню/категорий/материалов.

Языковые константы

Языковые константы используются в joomla для вывода текстовой информации на сайте, которая не задается непосредственно самим пользователем. Например, имена вкладок, текст различных уведомлений, информация о том, что корзина пуста и т.д.

Благодаря константам можно легко изменить различные текстовые элементы сайта и настроить их мультиязычность.

Все языковые константы находятся в языковых файлах либо в корневой папке language, либо внутри папок с модулями и компонентами. Для каждого языка внутри папки language создается своя папки с именем языка. Таким образом и настраивается мультиязычность.

Файл с языковыми константами русского языка для virtuemart, например, находится по адресу /language/ru-RU/ru-RU.com_virtuemart.ini. Кроме этого, есть несколько других языковых файлов, но это не так важно. Главное понять, как изменить существующую константу и добавить новую.

Например, мы хотим изменить надпись Сортировать по на Сортировка в блоке сортировки товаров в категории.

Открываем файл /language/ru-RU/ru-RU.com_virtuemart.ini и находим константу с нужным текстом

Меняем текст или добавляем в конце файла ту же константу, но с новым текстом

Текст на сайте изменился.

Это хороший способ, но нужно точно знать, в каком файле искать константу, и после обновления языковых файлов все правки придется вносить заново.

Решение есть. В Joomla уже встроен менеджер переопределения языковых констант по адресу Расширения > Менеджер языков > Переопределение констант.

Для решения той же задачи можно просто создать новую константу. С помощью поиска находим нужную константу.

И изменяем ее.

Константа с новым значением запишется в файл /language/overrides/ru-RU.override.ini. Все константы из файлов в папке /language/overrides/ обладают наивысшим приоритетом и не изменяются при обновлениях языковых файлов и joomla, поэтому лучше всего все новые и отредактированные языковые константы размещать в этой папке.

Если поиск текста для изменения не работает, то перелогиньтесь и очистите устаревший кеш в Система > Очистить устаревший кеш.

Для создания новой языковой константы для другого языка выбираем в фильтре нужный язык

И создаем, например, ту же константу сортировки вручную.

 

Не весь текст выводится с помощью языковых констант. Иногда он просто размещен в коде шаблона. Если найти не удается, то можно использовать, например, поиск Total Commander.

Мультиязычность VirtueMart

Наконец, мы подошли к настройке мультиязычности в самом VirtueMart. Первым делом в Virtuemart > Настройки > Магазин выбираем нужные языки.

После этого в базе данных будут созданы отдельные таблицы для каждого языка, в которых будет храниться информация о

  • товарах
  • продавцах
  • категориях
  • производителях и их категориях
  • методах оплаты и доставки

Именно поэтому если на сайт установлен зарубежный шаблон и сразу не был добавлен русский язык в настройках virtuemart, в дальнейшем при смене языка по умолчанию в Расширения > Менеджер языков на русский пропадают все созданные товары. Просто потому, что в базе создаются новые таблицы для русского языка и они пусты.

Языки добавлены, теперь нужно продублировать весь список, указанный выше (товары, категории и т.д.) для каждого языка. Сделать это просто. При редактировании товара/категории/производителя и т.д. в верхнем левом углу нужно выбрать новый язык и изменить все данные.

Сначала нужно создать категории и производителей для каждого языка. Только после этого создаются товары.

При удалении товара из админ панели удаляются все его копии на других языках.

Чтобы добавить мультиязычность для настраиваемых полей, просто используем языковые переменные в названии поля. Например, для поля размер указываем COM_VIRTUEMART_FIELD_SIZE.

В Расширения > Менеджер языков > Переопределения констант создаем для каждого языка свою константу COM_VIRTUEMART_FIELD_SIZE с переводом и все работает.

Статья получилась объемная, но, по сути все достаточно просто. Постарался затронуть все вопросы, которые могут возникнуть при правке текста и настройке мультиязычности на сайте. Если что-то упустил, то по мере поступления вопросов в комментариях буду дополнять текст.

6 комментариев

    Kseniya

    Добрый день, подскажите пожалуйста, мультиязычный сайт, товар сохранен на разных языках,
    Вопрос: для каждого языка (одного и того же товара) алиас должен быть один и тот же или для каждого языка свой алиас?
    Такой же вопрос и относительно категорий ))

      admin

      admin

      Здравствуйте!
      Не принципиально. Может быть одинаковый, может быть разный.

    Стас

    Здравствуйте, подскажите пожалуйста, не могу понять, как реализовать, по возможности штатными методами, чтобы не лезть в код или если лезть чтобы сохранилась возможность обновляться…
    Нужно сделать так чтобы была возможность выбирать страну и язык сайта и от этого зависело то какой ассортимент будет показываться.
    Сейчас в джумла можно только добавлять языки: Русский, Английский и т.д, но допустим мне нужно что бы Продукт1 был доступен только если посетитель из ЕС на русском, французском и т.д, а Продукт 2 был доступен только если посетитель из СНГ на Русском и Украинском.
    Как Вы посоветуете это реализовать?
    Структура должна получиться примерно следующая - https://drive.google.com/file/d/0B7LUdA-v2vEHTkpCRnpCZVg1NUU/view?usp=drivesdk

      Стас

      перенес вопрос на форум - http://virtuemart.su/forums/topic/organizaciya-slozhnoj-mnogoyazychnosti/

    KSENIYA

    Здравствуйте, подскажите пожалуйста
    при переключении языка, находясь в карточке товара, переключает на категорию (когда переключаю язык - выбрасывает из карточки товара в категорию)
    Возможно кто то сталкивался, может есть какое-то решение ))

      admin

      admin

      Решений не встречал, если найдете, пожалуйста, поделитесь.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
Для вставки кода заключите его в теги [php] [/php]
*