Мультиязычный сайт на Joomla! – Как сделать?
Наглядное и подробное объяснение как создать мультиязычный сайт на Джумле.
Всё будет показано для новой версии Джумла 4 стандартными методами без использования сторонних компонентов, таких Falang, LanguageCK и AMLang. У этих компонентов есть свои преимущества и недостатки. Никто не гарантирует нормальную работу и отсутствие конфликтов при использовании этих сторонних расширений. Если вы делаете мультиязычный сайт на CMS Joomla впервые, то ограничьтесь использованием стандартных средств движка Joomla без сторонних компонентов. Вполне можно обойтись встроенными методами, всё уже сделано, осталось только подключить и настроить.
После новой установки Joomla в админ-панели будет опубликован раздел с кнопками, которые добавляют демо-данные и мультиязычность.
Предупреждение: не жмите кнопки с демо-данными на готовом сайте! На рабочем проекте лучше сделайте всё вручную по шагам.
Кнопка Install в разделе Blog Sample Data (Демо-данные блога) добавляет демонстрационные статьи в вашу установку, эта кнопка для наполнения какими-нибудь статьями, это для свежей установки сайта, для экспериментов, они нам не нужны сейчас.
Кнопка Install в разделе Multilingual Sample Data (Демо-данные многоязычного сайта) включает нужные компоненты для мультиязычности, создаёт пункты меню для разных языков и устанавливает главные страницы для каждого языка, опубликовывает модуль переключения языка, создаёт 2 статьи на русском и английском языках и связывает их между собой. Вот эта кнопка нам и нужна, но! Только в том случае, если вы начинаете с нуля новый сайт, если у вас новая установка без контента, без меню и т.д.
Совет: если вы хотите начать создавать сайт на разных языках используя встроенные методы Джумлы, то начните новый проект именно с этой кнопки (Multilingual Sample Data) - как раз для таких случаев. А после уже наращивайте контент следуя методам создания мультиязычного сайта.
А если у вас уже готовый проект и вы хотите добавить поддержку мультиязычности, то для этого нужно сделать несколько шагов.
Предупреждение: сделайте резервную копию всего сайта (backup). Не забывайте про бэкапы.
Итак, поехали по шагам.
0. Установите необходимые языки, если вы этого ещё не сделали:
Далее в настройках System - Languages (Система - Языки) мы уже увидим установленные в систему языки и нажмите на звёздочку для языка по умолчанию для сайта (я выбрал русский):
Тот же язык я выбрал и для админ-панели:
Это было предисловие, если у вас ещё не были установлены необходимые языки.
1. Зайдите Система-Плагины (System - Plugins) и включите эти два плагина "Система – Фильтр языка" и "Система – Подмена кода языка":
В админ-панели на главной появится иконка "Состояние многоязычности", если нажать на неё, то будут показаны условия для перевода сайта в мультиязычность:
Нужно выполнить условия из этого списка, и сайт станет мультиязычным. Пройдёмся по ним.
2. Пойдём по порядку – первое условие: "Язык контента - RU не опубликован, перемещен в корзину или удален. Система многоязычности может работать некорректно или сайт может быть недоступен."
Опубликуйте языки контента, которые будут на сайте в меню Система – Языки контента:
3. Далее, предупреждение: "Модуль меню, который содержит пункт меню Главная страница с назначением всем языкам, не должен быть опубликован. Язык не будет отображаться на сайте."
Снимите с публикации модуль меню, на котором есть главная страница для всех языков:
4. Перейдём к сообщению: "Главная страница, которая назначена для языка контента en-GB, не опубликована. Язык не будет отображаться на сайте."
Это означает, что нужно создать меню для английского языка, создать в нём пункт меню, который будет являться главной страницей для этого языка и опубликовать модуль этого меню. Для этого сначала надо убрать старый алиас "home", который занят по умолчанию системой, нам он пригодится дальше:
Поменяйте его на что-нибудь отличное от "home", я написал "home-all", и сохранитесь. Теперь нужный нам алиас "home" свободен:
Далее создадим новое меню для английского языка:
Создайте новый пункт меню в новом меню "MENU EN", например, тип "Избранные материалы" и сделайте его главной страницей для английского языка. Используйте алиас "home", который мы освободили заранее:
В учебных целях пусть тип этого пункта будет "Избранные материалы":
Теперь всегда выбирайте язык, раньше вы пропускали этот момент за ненадобностью. Такое придётся делать для пунктов меню, для материалов контента, для модулей и т.д. Держите во внимании этот момент, т.к. часть содержимого на странице движок Джумла будет показывать то для одного языка, то для другого:
Вот что получилось. Теперь нажмите кругляш "Главная":
Сейчас этот пункт стал главной страницей для английского языка. Об этом напоминается рядом с названием в главном меню (en-GB).
5. То же самое нужно проделать с русским меню. Об этом нам подсказывает список в иконке о состоянии многоязычности сайта: "Главная страница, которая назначена для языка контента ru-RU, не опубликована. Язык не будет отображаться на сайте."
Сейчас мы создадим русское меню, сделаем в нём пункт, который назначим главной страницей для русской версии и сделаем связку двух меню (свяжем русское и английское):
Дальше создадим пункт меню в новом меню и сделаем его Главной для русского языка:
Сразу сделаем связку с уже готовым пунктом меню на английской версии меню, заходим во вкладку "Связь" и выбираем пункт меню на английском языке:
Теперь можно видеть, что есть связка с английской версией. Устанавливаем главной страницей только что созданный пункт:
6. Теперь нужно создать модули, отображающие на сайте два новых меню (английское и русское), также не забывайте выставлять свойство Язык для каждого модуля меню:
И для второго языка также:
7. Теперь нужно создать контент для двух языков и связать эти статьи друг с другом, и поставьте звёздочку "Избранный материал", чтобы он отобразился на главной, т.к. мы именно такого типа меню создали, отображающий избранные материалы:
И для русского языка создайте материал, только свяжите его с английской версией, затем сделайте его также избранным:
8. Теперь надо создать модуль переключения языка без заголовка (чтобы не делать два модуля с разными названиями на разных языках, упрощаем задачу), а также установить позиции для новых модулей меню, сейчас они опубликованы, но не стоят в какой-то позиции, давайте поставим их в позицию "sidebar-right":
Теперь установим позицию для новых модулей меню и выберем язык:
9. Готово! Теперь можно посмотреть на сам сайт и увидеть, что переключателем языков мы попадаем на версию того же связанного материала на другом языке.
Если зайти в сам материал Джумла, то можно переключателем языка попасть на версию другого языка, т.к. у нас сделаны связки между пунктами меню и между этими материалами. Если связок нет, то будет переход на главную или на категорию, а не на материал соответствующего языка. Не забывайте про связки и про выставление свойства языка:
Подведём небольшой итог.
Для перевода сайта в мультиязычный режим стандартными средствами Joomla требуется ряд действий, к тому же создание контента теперь потребует заполнения дополнительных свойств и создания связок между языками. У этого метода есть недостаток - теперь всё будет продублировано дважды (или трижды, или четырежды, и т.д. в зависимости от количества нужных вам языков на сайте), этого дублирования можно частично избежать используя сторонние компоненты, но они усложняют работу с сайтом, к тому же дублирования нельзя будет избежать в полной мере (с компонентами дублирование будет происходить, например, внутри одной статьи, а не созданием двух статей для двух языков). Стандартными средствами движка Джумлы вполне можно обойтись для создания мультиязычного сайта, главное – сделать нужную подготовку для этого в начале, а уж после наполнять сайт контентом, вместо исправлений созданного содержимого, что привносит больше ошибок.