ВОПРОС:Как известно, в Joomla 1.6 есть поддержка многоязычности «Из коробки».
Применительно к названиям пунктов меню, она заключается в том, что для каждого пункта меню можно указать язык к которому он относится.
Главный пункт меню (ведущий на домашнюю страницу) может быть только один, и он обязательно должен быть включен для всех языков.
Вроде бы все логично, но беда в том, что и название этого пункта едино для всех языков.
В итоге, если назовем его по-русски, то в англоязычной версии меню отображаются, например, такие пункты:
«Главная», «Articles», «Gallery», «Contacts».
Если поменяем «Главная» на «Home», то, соответственно, в русскоязычной версии сайта будет:
«Home», «Статьи», «Галерея», «Контакты».
Можно ли как-то сделать, чтобы для каждого языка первый пункт главного меню можно было назвать по-своему?
ОТВЕТ:Да, можно, причем существует несколько вариантов решения (обратите особое внимание на последний, 4-й метод):
1. Картинка вместо текста.
2. Небольшой хак.
3. Метод отдельных меню с псевдонимами.
4. Ну и наконец,
самый красивый, корректный и простой метод, который даже под спойлер прятать не буду (я использовал именно его, спасибо
Lex!):
В шаблоне пишем
<?php
$menu = JSite::getMenu();
$menu->getDefault()->title = JText::_($menu->getDefault()->title);
?>
В языковом файле шаблона
HOME=Главная
Решение работает, если первый пункт меню называется не иначе как «Home».
Если главная home в языковом файле HOME=Главная, если главная не home то и в языковом файле надо
ЧЕТОТАМ=Главная
При использовании этого метода вопрос с «крошками» (breadcrumbs) также решается без всяких хаков.
Для вывода названия главного пункта меню можно создать отдельные модули крошек для каждого языка:
...А можно даже модули не дублировать, а просто оставить пустым поле «Текст пункта `Главная`», при этом текст будет браться из языковых файлов:
_________________________________________________________________________ИНСТРУКЦИЯ ДЛЯ Joomla 1.7Для Joomla 1.7 все поменялось, ибо изменилась логика работы многоязычного сайта.
Если обновиться с Jooomla 1.6 до Joomla 1.7, оставив все как есть, то модуль переключения языков перестает работать.
Поэтому в случае с Joomla 1.7 нужно забыть все предыдущие инструкции и выполнить другую, не менее простую инструкцию:
- Создать несколько главных меню — одно общее и по одному для каждого из языков.
Например: mainmenu-all, mainmenu-ru, mainmenu-en.
Для каждого из языковых меню создать соответствующие им модули. Для «общего» меню модуль можно не создавать (ибо его все равно потом придется скрыть). - Назначение «общего» меню только одно — создать в нем единственный пункт меню «Главная», сделать его основным и назначить его всем языкам. Смысл этой манипуляции в том, что хотя-бы один пункт меню обязательно должен быть главным и при этом должен быть назначен всем языкам.
- Далее в каждом из языковых меню нужно создать соответствующие языку пункты меню. Важно, чтобы в каждом из этих меню присутствовал пункт «Главная», при этом чтобы он был сделан основным, а в качестве языка был выбран язык этого конкретного меню.
- Profit.
P.S.: Кого интересует пошаговая настройка мультиязычного сайта на Joomla 1.7 (с нуля, а не после обновления) — можете заглянуть сюда (ахтунг, английский!).