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

Rate this item
(29 votes)

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

Курс JoomMaster от RadiusPRO

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

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

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

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

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeIdde8ff35c87

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

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

 

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId1a09ff43c5

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

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeIdd675cdcfef

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId1aa87582f4

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

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

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

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId494a57b6fc

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

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

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

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

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeIde4b0db24e6

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

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId0658f748d1

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

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

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

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

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId4ef3d82e44

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

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId8c9d25421d

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

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

Идем дальше...Курс JoomMaster от RadiusPRO

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

 

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId97f1eba8f5

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

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

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

 

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId810ebc44ba

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

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeIda6f80eff56

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeId95330ab31a

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

View the embedded image gallery online at:
http://radiuspro.net/item/13-joomla-multylang#sigFreeIdea392ecda9

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

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

Вот вроде бы и все. Жду комментариев.

Read 97174 times

Недостаточно прав для комментирования
You have no rights to post comments