Настройка многоязычности в Joomla 2.5, 3.x

Создать многоязычный сайта на Joomla 2.5 стало довольно легко, так как эта версия Joomla уже содержит в себе всё необходимое. Joomla 1.5, как известно, не поддерживала многоязычность и приходилось пользоваться сторонними компонентами. Я, например, использовал очень удобный компонент JoomFish. На момент написания этого поста, JoomFish для Joomla 2.5 ещё не вышла и мне пришлось осваивать родной функционал CMS.

Сначала всё кажется довольно просто (на самом деле так оно и есть), но всё же подводных камней не избежать. Разработчики достаточно хорошо прокомментировали как настраивать плагин и модуль переключения языков, НО... они забыли напомнить, что у Joomla может быть только один пункт меню по умолчанию (контроллер по умолчанию). Что это значит и при чём здесь этот пункт - будет понятно дальше.

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

Запомните! Прежде чем делать многоязычность необходимо установить языковые пакеты (локализации) тех именно языков, которые будут использоваться. Невозможно сделать турецко-русский сайт, если Joomla не имеет турецкой локализации - система будет искать то, чего нет.

Итак начнём... Устанавливаем Joomla, по умолчанию мы имеем только английскую локализацию.

1. Устанавливаем Русскую локализацию. Для этого заходим в Extensions->Extension Manager, и загружаем необходимый (в нашем случае русской) пакет локализации

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Пакет локализации загружен. Теперь у нас на сайте можно использовать 2 языка (RU/EN). Предположим, что языком по умолчанию у нас станет русский (отталкиваюсь от того, что чаще всего английский - второй язык, если конечно мы не в Англии).

2. Настраиваем языки. Идем в Extensions->Language Manager и видим наши языки

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Здесь ВАЖНО понимать - что для чего настраивается.

Всего 3 настройки - язык для админки, язык для сайта и язык контента, первые две определяют языки по умолчанию для админки и сайта. В админке всё будет видно сразу, а вот на сайте - только если компонент использует языковые константы и форматы (такие как "читать далее", системные ошибки и формат даты ). Языки сайта и админки могут отличаться, если это нужно.

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Третья же настройка очень важна для решения нашей задачи. Здесь определяется Код языка для URL, Префикс изображения, Тег языка.

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Код языка для URL - будет добавляться в адресную строку при языковом переходе.

Префикс изображения - нужен для выбора правильной картинки (флага языка), дело в том, что изображения флагов имеют формат en.gif, ru.gif и т.д. Изображения хранятся по адресу корень_сайта/media/mod_languages/images/.

Тег языка - по сути - это названия всех языковых файлов локализации (ru-RU, en-GB и др.).

3. Включаем плагин (у нас админка уже на русском) Расширения->Менеджер плагинов->Система - Фильтр языка.

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Сейчас нас интересуют настройки плагина (в правой части).

Выбор языка для новых посетителей: язык сайта - значит пользователь увидит тот язык, который МЫ ему предложим по умолчанию, настройки браузера - значит БРАУЗЕР пользователя "дёрнет" тот язык, который в нём установлен по умолчанию. Правильно выставлять настройки браузера, но мы пока выставим язык сайта. Вообще, данный выбор зависит от задачи...

Автоматическая смена языка - ставим "да".

Связь пунктов меню - вот эта настройка обязательно "да". Дело в том, что без неё нельзя настроить связи пунктов меню и при переключении языков пользователь постоянно будет "вылетать" на главную страницу.

4. Готовим структуру сайта и контент. Весь контент, модули, пункты меню, собственно меню - всё у нас будет в 2-х экземплярах. Соответственно версиям (RU/EN) выставляем язык отображения. Так, если язык выбран - материал, модуль, пункт меню будет отображаться только в указанной языковой версии. 

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

При создании меню ВАЖНО создавать их по одному экземпляру для каждого языка. Это необходимо для корректной настройки связей.

Вот что должно получиться:

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

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

У нас уже было 3 меню, мы создаём ещё 3 точно такие же, но уже на английском языке. Все эти меню имеют идентичные пункты на своих языках (соответственно они ссылаются на материалы и категории своей языковой локализации). Всем пунктам меню необходимо присвоить нужную локализацию (иначе в 7-м пункте ничего не получится).

Как известно, Алиасы пунктов меню не могут повторяться, однако в случае многоязычности это позволительно. Алиасы "зеркальных" меню должны быть идентичны. Системные же имена (задаётся при создании в поле Тип меню) самих меню должны быть уникальными, для удобства я предлагаю снабдить их префиксами -en, -ru.

Переходим к самой главной части реализации нашего плана - вывод и настройка переключения языков.

5. Создаём дефолтное меню - это обязательное меню с одним пунктом, назначенным по умолчанию, причём модуль для него назначать не надо. Меню нигде не должно отображаться.

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Главная задача дефолтного меню - назначение контроллера по умолчанию. Поэтому создаём там один единственный пункт и назначаем его главным.

6. Настраиваем языковое переключение. Плагин у нас уже включен, так что создаём модуль. Нам нужен модуль "Переключения языков":

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Если на сайте (чаще всего так и есть) модуль отображается без названия, то он должен отображаться для всех языков. Настройки выбираем как есть, названия говорят сами за себя.

Однако создав модуль переключения языков он не отображается. Почему? Всё очень просто - нам нужно назначить главные меню языковых локализаций.

Идём дальше...

7. Настраиваем локализации. Выбираем (в нашем случае) Главное меню->Главная и назначаем её пунктом по умолчанию!!! Как говорилось выше у Joomla не может быть 2 главных меню, но если всё сделано правильно - то вместо звезды отобразится флаг языка.

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Соответственно в Main menu назначаем пункт меню Home по умолчанию. Вместо звезды получаем Британский флаг. Теперь при выборе меню мы можем видеть, что 2 меню у нас имеют маркеры языковых локализаций. С другими меню этого делать не надо!

Если вместо флагов появляется звезда, то проверьте выбран ли "Язык" меню!

8. Настраиваем связи. Каждый пункт меню нужно связать с его "зеркалом" в другой локализации. Связи настраиваются в правой панели настроек в пункте Связи пункта меню (этот пункт появляется только после включения плагина Система - Фильтр языка и если в нём выбран параметр Связь пунктов меню). Если данный пункт отсутствует проверьте настройки плагина (п.3)!

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Связи настраиваем только в одной локализации, причём в той, которая не установлена по умолчанию. У нас локализация по умолчанию - русская, поэтому работаем только с английскими "зеркалами". После назначения в них связей автоматически проставятся связи и в русских "зеркалах".

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

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

9. Делаем привязку модулей. Как обычно в Joomla модули отображаются там, куда их привязали. Однако не забываем, что у нас кроме пунктов меню есть ещё и языки. Модули так же можно привязывать к локализации.

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Что касается модулей, тут важно определить как и где они будут отображаться. В отличии от пунктов меню модули имеют более гибкую настройку и жёсткая привязка к языку для них не обязательна. Модуль можно привязать к определённому или к нескольким пунктам меню, и определить отображение только в одной локализации, или же привязать ко всем и отображать в любой локализации.

Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5 Настройка многоязычности в Joomla 2.5

Например, у нас модуль переключения языков отображается везде и на всех языках, т.к. он не имеет заголовка. Если этот же пункт предусматривал бы наличие заголовка, то пришлось бы создавать для него зеркало и привязывать отображение к пунктам меню и к языку. А вот для правого меню у нас создано 2 модуля в одной и той же позиции. Для модуля "Правое меню" назначаем язык - Russian(RU) и (на всякий случай) назначаем привязку к пунктам меню только в "русских зеркалах", соответственно для модуля "Right menu" язык будет English(UK) и привязка к "английским зеркалам".

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

Данная инструкция разработана администратором сайта radiuspro.net и размещена здесь с его личного разрешения, как пособие к дальнейшему использованию в личных целях.

Ссылка на оригинал

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


Защитный код
Обновить

Написать нам

Лёгкий спам-контроль