среда, 25 февраля 2015 г.

Создаем многоязычный сайт на Joomla 2.5

Создаем многоязычный сайт на Joomla 2.5

Создаем многоязычный сайт на Joomla 2.5
Создаем многоязычный сайт на Joomla 2.5

Каждому разработчику сайтов в один прекрасный день приходит идея или заказ на создание многоязычного сайта. Замечательно, хорошая возможность расширить свои знания и подучить языки. В этой статье мы и создадим такой сайт на трех языках. Весь материал ориентирован на пользователей, которые уже имеют опыт работы с CMS Joomla! 2.5.
Установка и настройка модулей и плагин онлайн перевода текстов для создания видимости многоязычного сайта, мы рассматривать здесь не будем. Как известно, проку от этих расширений мало - перевод получается кривой. А с другой стороны, в сети множество ресурсов, с помощью которых можно получить перевод того же слабого качества, да и в браузеры встраиваются функционал перевода. Кому надо – воспользуется. Здесь мы будем говорить о полном «правильном» многоязычном сайте.
Фактические мы будем создавать N-ое количество сайтов в рамках одного. Кто-то уже, наверное, догадался, что число N будет равняться количеству используемых языков.

 Установка языковых пакетов для Joomla 2.5!

Первое, с чего стоит начать, это установить дополнительные языковые пакеты для Joomla, которые можно скачать на официальном сайте. На момент написания статьи в каталоге находится 64 официальных языковых пакетов. Сразу же оговорюсь, что вам также понадобятся языковые пакеты для компонентов сторонних разработчиков, которые вы планируете использовать при создании сайта. Поэтому перед началом установки стороннего расширения (если оно будет выводиться на пользовательскую часть сайта) проверьте наличие необходимых пакетов в составе архива, а при отсутствии файлов перевода, скачайте языковые пакеты с сайта производителя. Обычно их легко найти. В противном случае может получиться казус при использовании сторонних расширений, когда сайт на одном языке, а все подписи и названия кнопок внутри компонента на другом. Так что скачиваем русский (если у вас не русифицированная версия Joomla!) и итальянский языковые пакеты.
Скаченные языковые пакеты для Joomla 2.5 устанавливаем обычным способом Расширения – Менеджер расширений. В этом уроке будем делать сайт на трех языках: русский, английский и итальянский. После установки языковых пакетов переходим в раздел Расширения – Менеджер языков. В первых двух закладках вы устанавливаете язык по умолчанию тот, который вам нужен (у меня будет русский), а вот в третьей закладке «Языки контента» нам нужно поработать. Английский язык создан в момент установки, нам нужно создать русский и итальянский. Нажимаем кнопку СОЗДАТЬ и заполняем необходимые поля. Не стесняйтесь смотреть подсказки к полям, наведя курсор на название поля. Для русского языка должно получиться следующее:
Настойка языковых пакетов для контента сайта.
Рис. 1 Настойка языковых пакетов для контента сайта.
Заголовок
Название языка, как он будет отображаться в списке (административная панель)
Русский
Итальянский
Заголовок на 'Родном' языке
Название языка, как он будет отражаться на пользовательской части сайта
Русский
Italian (IT)
Код языка для URL
Данный суффикс будет добавляться к ссылке для данного языка.
ru
it
Префикс изображения
Префикс имени файла изображения для данного языка
ru
it
Тег языка
Соответствует названию языкового пакета и названию папки языка в папке корня сайтаlanguage
ru-RU
It-IT
Состояние

Опубликовано
Опубликовано
Доступ

public
public
Опять сразу оговорюсь. Есть два нюанса, которые следует знать. Файлы изображений флагов стран для обозначения языка хранятся в папке media/mod_languages/images/ в формате .gif. Если вас не устраивают стандартные картинки, и вы хотите новые, смело меняйте, благо в сети изображений флагов стран огромное количество. Только сохраняйте названия или меняйте на необходимые в атрибуте «Префикс изображения».
Второй нюанс заключается с полями Мета-тег Keywords, Мета-тег Description, Название сайта – если вы не используете сторонние компоненты SEF ссылок, то эти поля обязательны для заполнения. Заполняем их на тех языках, для которых создали. Если же вы используете сторонние компоненты, такие как AceSEF или sh404sef, то эти поля можете оставить пустыми, а все метаданные заполнить в настройках компонента
В конечном итоге у вас должно получиться следующее:
Панель ЯЗЫКИ КОНТЕНТА
Рис. 2. Панель ЯЗЫКИ КОНТЕНТА

Публикуем модуль «Переключатель языков»

На следующем шаге публикуем модуль «Переключатель языков». Этот модуль отображает список доступных Языков контента, которые мы настроили.
Для публикации модуля идем в Расширения – Менеджер модулей и создаем новый модуль. В открывшемся списке «Выбор типа модуля» выбираем «Переключатель языков».
Выбор типа модуля - Переключатель языков
Рис. 3. Выбор типа модуля - Переключатель языков.
Далее все как обычно, даем ему название, отмечаем, будет ли показываться название модуля или нет, выбираем позицию для модуля и публикуем. А с правой стороны выставляем необходимые настройки для модуля.
Настроек не много, только тип отображения переключателей: 1. Выпадающий список; 2. В виде картинок флагов; 3. Текстовые ссылки в одну строчку.
Настройки модуля ПЕРЕКЛЮЧАТЕЛЬ ЯЗЫКОВ
Рис. 4. Настройки модуля ПЕРЕКЛЮЧАТЕЛЬ ЯЗЫКОВ
Здесь каждый выбирает на свой вкус и цвет. Сохраняем новый модуль и переходим на главную страницу сайта. Многих, кто еще не до конца дочитал текст, увиденное разочарует. Нет ни флагов, ни текстовых ссылок, короче ни одного переключателя. Не пугайтесь, все еще впереди.

Включаем Плагин Система – Фильтр (выбор) языка.

Для того, чтобы Joomla! могла различать языки, существует плагин Система – Фильтр языка: Расширения - Менеджер плагинов.  Для работы, плагин должен быть активирован, а также можно настроить его по определенным параметрам, например: выбрать язык по умолчанию или попытаться обнаружить язык в настройках браузера; будет ли автоматически меняться язык, в зависимости от языка, используемого в интерфейсе или нет.
Менеджер плагинов. Сортировка по типу SYSTEM.
Рис. 5. Менеджер плагинов. Сортировка по типу SYSTEM.
Например,  в зависимости от прав, пользователь может видеть свое меню: например ссылку на свой профиль. Где на странице редактирование профиля, среди других настроек можно выбрать язык сайта.
Но самая главная настройка, которая должна быть включена – это Связь пунктов меню. Если данная настройка не будет включена, то модуль «Переключатель языков» при смене языка будет всегда вас отправлять на главную страницу сайта. Здесь же вы будете оставаться в той же категории материалов, или в том же разделе магазина, контактах. Опять же сразу оговорюсь, что на сегодняшний день существует связь только между пунктами меню, связи между статьями не существует. Короче, увидите позже, когда создадите свой первый мультиязычный сайт.
Настройки плагина Система - Фильтр языков.
Рис. 6. Настройки плагина Система - Фильтр языков.
После того, как будет включен плагин во всех модулях, разделах материалов, статьях и тому подобное активируется настройка «Язык», то есть привязка данного материала к какой-то отдельной языковой части сайта.

Главное меню сайта и проблемы с ним.

В сети я видел огромное число статей, где этот раздел даже не рассматривается. А ведь он один из основных, как любой из предыдущих и любой другой из последующих. Без манипуляций из этого раздела многоязычный сайт точно работать не будет. А в просмотренных мной статьях были даны рекомендации, где и что проверить, если у вас не работает сайт. Вот так.
Нет, теоретически возможно создать одно главное меню с пунктами меню для каждого языка. То есть, например, у вас будут Главная страница на русском языке, на английском и итальянском. Но дело в том, что главной страницей можно назначить только один пункт меню. И самое главное, что одному из пунктов меню должно быть присвоено полю «Язык» для «Все». Как минимум один пункт меню, из тех, что назначены пунктом 'по умолчанию', должен быть привязан ко всем языкам, даже если сайт является многоязычным. Вот здесь вся загвоздка, не будет ли переключатель выбрасывать пользователя всегда на одну главную страницу, например на русскую, вместо той же английской или итальянской. Я не пробовал, кто-нибудь попробует, расскажет.
И есть еще один нюанс, в рамках одного меню нельзя назначить Алиясы одинаковые, а значит и ссылки у вас будут разные, например: main-ru/ru, main-en/en, main-it/it. То есть один суффикс добавите вы, так как будете вынуждены, а после слеша добавит модуль «Переключатель языков», так как он так умеет.
Делаем все по-человечески. Одно главное меню у нас есть. Нам надо создать еще два для двух языков и одно дополнительное. Вот с него и начнем.
Переходим в Меню – Менеджер меню – Создать меню. Даем ему название default, и тип меню default-menu.
Создаем меню по умолчанию.
Рис. 7. Создаем меню по умолчанию.
Переходим в раздел пунктов меню и создаем один единственный пункт, назовём его default, делаем его Главной страницей по умолчанию, а пункт «Язык» устанавливаем для «Всех».
Настройки пункта меню по умолчанию.
Рис. 8. Настройки пункта меню по умолчанию.
Модуль для этого меню не создаем и соответственно не публикуем. Всё, требования системы Joomla! о том, что как минимум один пункт меню, из тех, что назначены пунктом 'по умолчанию', должен быть привязан ко всем языкам, даже если сайт является многоязычным, выполнен.
Едем дальше, давайте переименуем существующее название главного меню на Main Menu Ru, а тип меню на mainmenu-ru. Сохраняемся и переходим в настройки модуля меню, благо это теперь рядом. Переименовываем название и меняем настройку «Язык» только для «Русский». Сохраняемся.
Настройки модуля меня
Рис. 9. Настройки модуля меня
Создаем новое меню и называем его Main Menu En, тип меню mainmenu-en и сохраняемся. Создаем для него модуль, если необходимо пишем название модуля на английском языке, публикуем в туже позицию что и  Main Menu Ru, а вот настройку «Язык» выбираем «Английский». Сохраняемся.
Повторяем тоже самое для итальянского меню… Название: Main Menu It, , тип меню mainmenu-it. Создаем модуль для этого меню публикуем в туже позицию, что и  Main Menu Ru,  настройку «Язык» выбираем «Итальянский». Сохраняемся.
У вас должно получиться четыре меню:
Менеджер меню
Рис. 10. Менеджер меню.
В русском меню пункт для главной страницы создан. Нам надо только переименовать его и опцию "Язык" перевести на Русский. Переключатель Главная страница переключаем на ДА. Сохраняемся, вместо звездочки в колонке Главная на против пункта появляется РОССИЙСКИЙ ФЛАГ.
Настройки пункта меню ГЛАВНАЯ СТРАНИЦА.
Рис. 11. Настройки пункта меню ГЛАВНАЯ СТРАНИЦА.
Рис. 12.
Теперь для английского и итальянского меню создаем пункты меню для главной страницы. Переходим в Пункты меню, выбираем mainmenu-en и создаем новый пункт меню. Тип пункта меню – Избранные материалы (если используете свою связку для данного пункта меню, используйте, это не влияет на то, что мы делаем). Называем его Home на английский лад, даем тот же алияс что и для главной страницы русского меню, настройку «Язык» выбираем «Английский». Переключатель Главная страница переключаем на ДА. Сохраняемся, вместо звездочки в колонке Главная на против пункта появляется английский флаг.
Рис. 13.
Повторяем тоже самое для итальянского меню. Тип пункта меню – Избранные материалы. Название на итальянском, алияс – home, «Язык» - «Итальянский». Переключатель Главная страница переключаем на ДА. Сохраняемся, вместо звездочки в колонке Главная на против пункта появляется итальянский флаг.
Рис. 14.
Теперь можем перейти на  главную страницу сайта и насладиться появившимися переключателями языков и единственными пунктами меню на разных языках.
Главная страница сайта на трех языках
Рис. 15. Главная страница сайта на трех языках.

Еще один нюанс или еще одна проблема с главным меню.

Хорошо что мы использовали шаблон, который идет вместе с пакетом Joomla 2.5! И в этом шаблоне есть позиция для установки главного меню. Но есть шаблоны, где модуль меню устанавливается в позицию не через Менеджер модулей, а через настройки шаблона. Например, так делает компания разработчиков GavickPro. И вставить можно только одно меню.
Настройки шаблона gk_musicity от компании GavickPro
Рис. 15. Настройки шаблона gk_musicity от компании GavickPro
Не пугайтесь, делаем все просто. Идем в Расширения – Менеджер шаблонов. Переходим во вкладку Шаблоны и выбираем свой шаблон. Внизу будет поле для ввода названия шаблона и кнопка для создания копии.
Функция создания копии шаблона
Рис. 16. Функция создания копии шаблона.
Вот и создаем то количество копий шаблона, сколько мы используем языков плюс еще один, так как и в ситуации с главным меню с настройкой «Язык» для «Всех» мы не сможем избежать.
Менеджер шаблонов
Рис. 18. Менеджер шаблонов после внесенных изменений.
Затем возвращаемся в стили, одинаково настраиваем все шаблоны, так как нам нужно, только вот меню для каждого выбираем свое и атрибут «Язык» тоже устанавливаем для каждого свой. А то есть шанс не увидеть свое меню.
Рис. 19.
Не забываем, изменяя css или php файлы шаблонов, копировать их в остальные папки шаблонов.

Связываем пункты меню

Нам осталось только связать между собой пункты меню. Зачем это надо? Но если хотите чтобы ваши пользователи при смене языка сайта с интересующей их страницы вылетали на главную, оставьте все как есть.
А тем кто заботится о своей аудитории советую заглянуть в любой пункт меню, любого языка, кроме того, который установлен основным для сайта. Открываем раздел Связи пунктов меню и связываем между собой страницы аналоги, как это показано на рисунке.
Связываем пункты меню.
Рис. 20. Связываем пункты меню.
Сохраняемся. В меню лезть не надо, связи установятся автоматически. Но если есть желание проверить, проверяйте. Лучше один раз увидеть, чем сто раз услышать.

Наполняем сайт содержимым.

Вот и все, фильтр выкурен, дальше как «Прима». Теперь начинаем наполнять наш сайт содержимым. Создаем категории материалов на трех языках, создаем материалы на трех языках, модули тоже в трех экземплярах. Короче все делам по три раза. Не забываем каждый отдельный элемент привязывать к своему языку. Вновь созданные пункты меню связываем между собой. Все как обычно, только контроля больше, чтобы русский элемент не попал на англоязычную сторону сайта, и наоборот.
Удачных разработок! 
Скачать файл.
В данном архиве находится сборка с настроенными модулями и компонентами для создания многоязычного сайта.

0 коммент.:

Отправить комментарий