Налаштування багатомовності в Joomla 2.5, 3.x
Створити багатомовний сайту на Joomla 2.5 стало досить легко, так як ця версія Joomla вже містить в собі все необхідне. Joomla 1.5, як відомо, не підтримувала багатомовність і доводилося користуватися сторонніми компонентами. Я, наприклад, використовував дуже зручний компонент JoomFish. На момент написання цього поста, JoomFish для Joomla 2.5 ще не вийшла і мені довелося освоювати рідної функціонал CMS.
Припустимо, у нас є сайт з деякою кількістю контенту, є два меню (верхнє і бічне), кілька модулів, які містять певний (не важливо який) функціонал. Наше завдання - зробити його двомовним, для прикладу англо-російський.
Запам'ятайте! Перш ніж робити багатомовність необхідно встановити мовні пакети (локалізації) тих саме мов, які будуть використовуватися. Неможливо зробити турецько-російський сайт, якщо Joomla не має турецької локалізації - система буде шукати те, чого немає.
Тож почнемо. Встановлюємо Joomla, за замовчуванням ми маємо тільки англійську локалізацію.
1. Встановлюємо Руську локалізацію. Для цього заходимо вExtensions -> Extension Manager, і завантажуємо необхідний (в нашому випадку російської) пакет локалізації
Пакет локалізації завантажений. Тепер у нас на сайті можна використовувати 2 мови (RU / EN). Припустимо, що мовою за замовчуванням у нас стане російська (відштовхуюсь від того, що найчастіше англійська - друга мова, якщо звичайно ми не в Англії).
2. Налаштовуємо мови. Йдемо в Extensions -> Language Manager і бачимо наші мови
Тут ВАЖЛИВО розуміти - що для чого налаштовується.
Третя ж настройка дуже важлива для вирішення нашої задачі. Тут визначається Код мови для URL. Префікс зображення. Тег мови.
Тег мови - по суті - це назви всіх мовних файлів локалізації (ru-RU, en-GB і ін.).
3. Включаємо плагін (у нас Адаменко вже російською) розширення-> Менеджер плагінів -> Система - Фільтр мови.
Зараз нас цікавлять настройки плагіна (в правій частині).
Вибір мови для нових відвідувачів. мова сайту - значить користувач побачить ту мову, який МИ йому запропонуємо за замовчуванням, налаштування браузера - значить браузер користувача "смикне" ту мову, який в ньому встановлений за замовчуванням. Правильно виставляти настройки браузера. але ми поки виставимо мову сайту. Взагалі, даний вибір залежить від завдання.
Зв'язок пунктів меню - ось ця настройка обов'язково "так". Справа в тому, що без неї не можна налаштувати зв'язку пунктів меню і при перемиканні мов користувач постійно буде "вилітати" на головну сторінку.
4. Готуємо структуру сайту і контент. Весь контент, модулі, пункти меню, власне меню - все у нас буде в 2-х примірниках. Відповідно версіями (RU / EN) виставляємо мову відображення. Так, якщо мова обраний - матеріал, модуль, пункт меню буде відображатися тільки в зазначеній мовної версії.
При створенні меню ВАЖЛИВО створювати їх по одному екземпляру для кожної мови. Це необхідно для коректної настройки зв'язків.
Ось що повинно вийти:
Як відомо, Аліаси пунктів меню не можуть повторюватися, однак в разі багатомовності це дозволено. Аліаси "дзеркальних" меню повинні бути ідентичні. Системні ж імена (задається при створенні в поле Тип меню) самих меню повинні бути унікальними, для зручності я пропоную забезпечити їх префіксами -en, -ru.
Переходимо до найголовнішої частини реалізації нашого плану - висновок і настройка перемикання мов.
5. Створюємо дефолтний меню - це обов'язкове меню з одним пунктом, призначеним за замовчуванням. причому модуль для нього призначати не треба. Меню ніде не повинно відображатися.
Головне завдання дефолтного меню - призначення контролера за замовчуванням. Тому створюємо там один єдиний пункт і призначаємо його головним.
6. Налаштовуємо мовне перемикання. Плагін у нас вже включений, так що створюємо модуль. Нам потрібен модуль "Перемикання мов":
Якщо на сайті (найчастіше так і є) модуль відображається без назви, то він повинен відображатися для всіх мов. Налаштування вибираємо як є, назви говорять самі за себе.
Однак створивши модуль перемикання мов він не відображається. Чому? Все дуже просто - нам потрібно призначити головні менюязикових локалізацій.
7. Налаштовуємо локалізації. Вибираємо (в нашому випадку) Головне меню -> Головна і призначаємо її пунктом за замовчуванням. Як говорилося вище у Joomla не може бути 2 головних меню, але якщо все зроблено правильно - то замість зірки відобразиться прапор мови.
Відповідно в Main menu призначаємо пункт меню Home за замовчуванням. Замість зірки отримуємо Британський прапор. Тепер при виборі меню ми можемо бачити, що 2 меню у нас мають маркери мовних локалізацій. З іншими меню цього робити не треба!
Якщо замість прапорів з'являється зірка, то перевірте чи вибраний "Мова" меню!
8. Налаштовуємо зв'язку. Кожен пункт меню потрібно зв'язати з його "дзеркалом" в інший локалізації. Зв'язки налаштовуються в правій панелі налаштувань в пункті зв'язку пункту меню (цей пункт з'являється тільки після включення плагіна Система - Фільтр мови і якщо в ньому ви обрали Зв'язок пунктів меню). Якщо даний пункт відсутній перевірте налаштування плагіна (п.3)!
Зв'язки налаштовуємо тільки в одній локалізації, причому в тій, яка не встановлена за замовчуванням. У нас локалізація за замовчуванням - російська, тому працюємо тільки з англійськими "дзеркалами". Після призначення в них зв'язків автоматично проставити зв'язку і в російських "дзеркалах".
Ну ось, якщо все зроблено, то модуль перемикання мов відобразиться і буде працювати. Залишилася дрібничка.
9. Робимо прив'язку модулів. Як завжди в Joomla модулі відображаються там, куди їх прив'язали. Проте не забуваймо, що у нас крім пунктів меню є ще і мови. Модулі так само можна прив'язувати до локалізації.
Що стосується модулів, тут важливо визначити як і де вони будуть відображатися. На відміну від пунктів меню модулі мають більш гнучку настройку і жорстка прив'язка до мови для них не обов'язкова. Модуль можна прив'язати до певного або до кількох пунктів меню, і визначити відображення тільки в одній локалізації, або ж прив'язати до всіх і відображати в будь-якої локалізації.
Наприклад, у нас модуль перемикання мов відображається всюди і на всіх мовах, тому що він не має заголовка. Якщо цей же пункт передбачав би наявність заголовка, то довелося б створювати для нього дзеркало і прив'язувати відображення до пунктів меню і до мови. А ось для правого меню у нас створено 2 модуля в одній і тій же позиції. Для модуля "Правое меню" призначаємо мову - Russian (RU) та (на всякий випадок) призначаємо прив'язку до пунктів меню тільки в "російських дзеркалах", відповідно для модуля "Right menu" мова буде English (UK) і прив'язка до "англійським дзеркалам ".
Так само деякі модулі у нас виводяться тільки в англійській версії, деякі тільки в російській, сайту.
Дана інструкція розроблена адміністратором сайту radiuspro.net і розміщена тут з його особистого дозволу, як посібник для подальшого використання в особистих цілях.