|
ZHart
|
 |
« : 29.01.2011, 16:07:40 » |
|
ВОПРОС:Как известно, в Joomla 1.6 есть поддержка многоязычности «Из коробки». Применительно к названиям пунктов меню, она заключается в том, что для каждого пункта меню можно указать язык к которому он относится. Главный пункт меню (ведущий на домашнюю страницу) может быть только один, и он обязательно должен быть включен для всех языков. Вроде бы все логично, но беда в том, что и название этого пункта едино для всех языков. В итоге, если назовем его по-русски, то в англоязычной версии меню отображаются, например, такие пункты: «Главная», «Articles», «Gallery», «Contacts». Если поменяем «Главная» на «Home», то, соответственно, в русскоязычной версии сайта будет: «Home», «Статьи», «Галерея», «Контакты». Можно ли как-то сделать, чтобы для каждого языка первый пункт главного меню можно было назвать по-своему? ОТВЕТ:Да, можно, причем существует несколько вариантов решения (обратите особое внимание на последний, 4-й метод): 1. Картинка вместо текста. картинка типа home не вариант? а название не отображать
2. Небольшой хак. решение "топором" открываем файл \modules\mod_menu\helper.php, втавляем после static function getList(&$params) { вот это $lang = JFactory::getDocument(); $lang = $lang->language;
далее ищем в конце $item->title = htmlspecialchars($item->title); и пишем после неё if($item->title=="Home" && $lang=="ru-ru") $item->title="дом2"; где Home - это название пункта меню, которое надо переводить зы файл надо сохранить в utf-8 без BOM, зарубежные други опять в ANSI всё пишут ) зы2 разумеется, на крошки это решение никак не повлияет, но крошки делаются ровно так же - правкой пары строк, либо просто отрубаем в модуле показ главной, что обычно и делается ) 3. Метод отдельных меню с псевдонимами. по порядку: идём в менеджер языков, выбираем вкалдку "Content" создаём там, к примеру, русский язык, заполняя все обязательные поля. включаем системный плагин System - Language Filter и создаём соотвествующий модуль для переключения языков.
создаём отдельные меню для каждого языка. в каждом делаем по псевдониму главного пункта меню, но язык выбираем свой. создаём новые модули для вывода этих меню, в настройках ставим привязку к соотвествующим языкам. модуль с единственной двуязычной ссылкой снимаем с публикации.
так всё нормально, но почему-то не могу сделать дефолтным русский язык. главная страница стразу редиректит на /en, даже если в дефолте стоит русский. щас попробую кэши почистить и перезайти.
upd: последний выбранный язык, кажется, сохраняется в кукисах. после их очистки по дефолту становится правильный /ru
с крошками косяк остаётся, так что либо отрубаем показ главного в настройках модуля крошек или хакаем его по примеру выше.
4. Ну и наконец, самый красивый, корректный и простой метод, который даже под спойлер прятать не буду (я использовал именно его, спасибо Lex!): В шаблоне пишем <?php $menu = JSite::getMenu(); $menu->getDefault()->title = JText::_($menu->getDefault()->title); ?> В языковом файле шаблона HOME=Главная Решение работает, если первый пункт меню называется не иначе как «Home».
Если главная home в языковом файле HOME=Главная, если главная не home то и в языковом файле надо ЧЕТОТАМ=Главная
При использовании этого метода вопрос с «крошками» (breadcrumbs) также решается без всяких хаков. Для вывода названия главного пункта меню можно создать отдельные модули крошек для каждого языка: Необходимо просто продублировать модуль «Breadcrumbs», после чего в настройках первого модуля выбрать русский язык и вписать «Главная» в поле «Текст пункта `Главная`». В настройках второго модуля соответственно нужно выбрать английский язык и вписать текст «Home». Если кому-то нужны другие языки — делается по аналогии, для каждого языка — свой модуль.
...А можно даже модули не дублировать, а просто оставить пустым поле «Текст пункта `Главная`», при этом текст будет браться из языковых файлов: Кстати о крошках. Сегодня полез в модуль и увидел if ($params->get('showHome', 1)) { $item = new stdClass(); $item->name = $params->get('homeText', JText::_('MOD_BREADCRUMBS_HOME')); $item->link = JRoute::_('index.php?Itemid='.$app->getMenu()->getDefault()->id); array_unshift($items, $item); }Это значит, что если в поле "Текст пункта `Главная`" ничего нет, значение берется из языковой константы MOD_BREADCRUMBS_HOME в файле перевода модуля ru-RU.mod_breadcrumbs.ini Можно не копировать модули для разных языков. Просто оставлять поле пустым, тогда значение будет браться из языковых файлов. _________________________________________________________________________ИНСТРУКЦИЯ ДЛЯ 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 (с нуля, а не после обновления) — можете заглянуть сюда (ахтунг, английский!).
|
|
|
|
« Последнее редактирование: 24.08.2011, 10:44:54 от ZHart »
|
Записан
|
|
|
|
| |
|
Lex
|
 |
« Ответ #31 : 17.02.2011, 13:03:36 » |
|
Кстати о крошках. Сегодня полез в модуль и увидел if ($params->get('showHome', 1)) { $item = new stdClass(); $item->name = $params->get('homeText', JText::_('MOD_BREADCRUMBS_HOME')); $item->link = JRoute::_('index.php?Itemid='.$app->getMenu()->getDefault()->id); array_unshift($items, $item); }Это значит, что если в поле "Текст пункта `Главная`" ничего нет, значение берется из языковой константы MOD_BREADCRUMBS_HOME в файле перевода модуля ru-RU.mod_breadcrumbs.ini Можно не копировать модули для разных языков. Просто оставлять поле пустым, тогда значение будет браться из языковых файлов.
|
|
|
|
|
Записан
|
|
|
|
effrit
Группа развития
   
Репутация: +577/-5
Offline
Пол: 
Сообщений: 5251
effrit.com
|
 |
« Ответ #32 : 17.02.2011, 13:08:28 » |
|
прикольно надо в первый пост это вписать вместе с предыдущим советом, чтобы не по всей теме размазано было
|
|
|
|
|
Записан
|
|
|
|
|
ZHart
|
 |
« Ответ #33 : 17.02.2011, 15:16:53 » |
|
надо в первый пост это вписать вместе с предыдущим советом, чтобы не по всей теме размазано было
Постарался резюмировать все самое полезное в первом сообщении.
|
|
|
|
|
Записан
|
|
|
|
Сержo
Осваиваюсь на форуме
 
Репутация: +3/-0
Offline
Сообщений: 113
|
 |
« Ответ #34 : 23.02.2011, 13:00:33 » |
|
Да ужжжж..., на мудрили они со встроенной мультиязычностью, сам попарился когда разбирался, и в конечном счёте пришёл к виду двух модулей меню, на русском и английском. Вот только весь этот геморрой не решает основной проблемы со статьями, их всё равно надо делать для каждого языка отдельно, а в этом случае JoomFish лучший выход, только нет его для 1.6 версии. 
|
|
|
|
|
Записан
|
|
|
|
b2z
Support Team
   
Репутация: +328/-0
Offline
Пол: 
Сообщений: 4093
Contra Gaming Community
|
 |
« Ответ #35 : 23.02.2011, 13:30:17 » |
|
Сержo - не по теме пишем...
|
|
|
|
|
Записан
|
|
|
|
pika4y
Осваиваюсь на форуме
 
Репутация: +2/-0
Offline
Пол: 
Сообщений: 27
|
 |
« Ответ #36 : 01.03.2011, 09:08:14 » |
|
Поясните как текст на другом языке добавить. Вот к примеру - есть материал (статья) на рус, а мне надо еще что бы и англ был, я чего то не вкурил куда перевод вставлять к материалу.
|
|
|
|
|
Записан
|
|
|
|
effrit
Группа развития
   
Репутация: +577/-5
Offline
Пол: 
Сообщений: 5251
effrit.com
|
 |
« Ответ #37 : 01.03.2011, 09:15:02 » |
|
pika4y, ты читать умеешь уже, или только писАть? постом выше модератор просил писать ПО ТЕМЕ. к тому же мог просто в разделе посмотреть, или, на худуй конец, создать НОВУЮ тему, а не соваться в первую попавшуюся с невтемачным вопросом. http://joomlaforum.ru/index.php/topic,153050.0.html
|
|
|
|
|
Записан
|
|
|
|
b2z
Support Team
   
Репутация: +328/-0
Offline
Пол: 
Сообщений: 4093
Contra Gaming Community
|
 |
« Ответ #38 : 01.03.2011, 11:15:24 » |
|
Блин, какой все же народ глупый... Следующий оффтоп тру тупо без предупреждения!
|
|
|
|
|
Записан
|
|
|
|
radiouniverse
Новичок
Репутация: +0/-0
Offline
Сообщений: 9
|
 |
« Ответ #39 : 23.04.2011, 17:15:15 » |
|
Кто может подробней написать, как создать Главную и Меню на четырёх языках? В каких файлах и где именно файлы находятся? Joomla 1.6.3 За ранее очень благодарен.
|
|
|
|
|
Записан
|
|
|
|
|
ZHart
|
 |
« Ответ #40 : 23.04.2011, 18:05:51 » |
|
radiouniverse, в первом сообщении темы недостаточно подробно написано?
|
|
|
|
|
Записан
|
|
|
|
|
Rasputin
Гость
|
 |
« Ответ #41 : 02.05.2011, 20:08:15 » |
|
radiouniverse, в первом сообщении темы недостаточно подробно написано?
Видимо недостаточно. Я шаблон собирал сам и к сожалению понятия не имею, что такое ЯЗЫКОВОЙ ФАЙЛ ШАБЛОНА, как он выглядит, где находится и что содержит. Поэтому чтение первого поста темы мне никак не помогло и видимо не мне одному  Уважаемый, ZHart, помогите всетаки решить проблему до конца, приведите имя, расположение и содержание ЯЗЫКОВОГО ФАЙЛА ШАБЛОНА и как его правильно подключить. Заранее благодарю.
|
|
|
|
|
Записан
|
|
|
|
|
ZHart
|
 |
« Ответ #42 : 02.05.2011, 20:28:05 » |
|
Rasputin, по поводу языковых файлов, их нахождения, содержания и принципов создания ищите и спрашивайте все же в других темах. Это слишком общие и не относящиеся напрямую к этой теме вопросы. В двух словах — находятся они в директории «language» для фронта сайта, и в директории «administrator/language» для админки, и создаются не только для шаблонов, а для всех составляющих Joomla. За примером рекомендую обратиться в один из бесплатных шаблонов.
|
|
|
|
|
Записан
|
|
|
|
n_i_x
Осваиваюсь на форуме
 
Репутация: +5/-0
Offline
Сообщений: 105
|
 |
« Ответ #43 : 09.05.2011, 14:41:15 » |
|
у меня тоже не получилось с 4 способом. в какую часть вставлять (начало, конец, центр)? и что делать, если шаблон поделён на части, то есть типа head, main, footer?
за ранее спасибо!
|
|
|
|
« Последнее редактирование: 09.05.2011, 15:33:11 от n_i_x »
|
Записан
|
|
|
|
rstas
Новичок
Репутация: +0/-0
Offline
Сообщений: 6
|
 |
« Ответ #44 : 15.05.2011, 00:57:24 » |
|
у меня тоже не получилось с 4 способом. в какую часть вставлять (начало, конец, центр)? и что делать, если шаблон поделён на части, то есть типа head, main, footer?
за ранее спасибо!
В mainmenu должен быть пункт HOME(на англ.) установленный как главная страница, в шаблоне прописаны строки из 4 способа.В директории \language\ru-RU\ должен находиться файл ru-RU.tpl_НазваниеШаблонаНаАнглМаленькимиБуквами.ini *например ru-RU.tpl_beez5.ini, в котором должна быть строка вида HOME="НазваниеПункаМенюПоРусски". Следует заметить что в файле перевода строки должны начинаться со 2ой... т.е. 1ая строка должна быть пустой. Например -
- HOME="Главная"
- CONTACTS="Контакты"
|
|
|
|
|
Записан
|
|
|
|
n_i_x
Осваиваюсь на форуме
 
Репутация: +5/-0
Offline
Сообщений: 105
|
 |
« Ответ #45 : 16.05.2011, 10:04:59 » |
|
это понятно, спасибо за разъяснение. но вот так и не могу разобраться, с тем куда в какой всё таки файл шаблона вписывать код, если index.php поделён на части (типа head.php, main.php, footer.php)
п.с. сам шаблон построен на основе T3 framework 2.0 от joomlart
|
|
|
|
|
Записан
|
|
|
|
|
Lex
|
 |
« Ответ #46 : 16.05.2011, 10:06:25 » |
|
Да куда хочешь. Пиши в head.php.
|
|
|
|
|
Записан
|
|
|
|
AlexeyMaloi
Новичок
Репутация: +0/-0
Offline
Сообщений: 6
|
 |
« Ответ #47 : 16.05.2011, 14:27:28 » |
|
Все это конечно хорошо, но у меня вопрос такого плана. Для того что бы появились иконки языков в опубликованном модуле "Переключение языка" - необходимо что бы как минимум для 2х пунктов меню были установлены используемые языки (допустим RU и EN) и они были обозначены как ГЛАВНАЯ СТРАНИЦА! Но также Joomla не дает уже сделанной Главной странице выбрать один из пунктов языка (либо Ru либо En) просит указать в качестве языка пункт "Все" отсюда получается что у меня на главной странице сайта всегда есть пункт меню "Главная" и в зависимости от выбранного языка дублирующий его пункт меню. Каким образом это можно исправить?
|
|
|
|
|
Записан
|
|
|
|
rstas
Новичок
Репутация: +0/-0
Offline
Сообщений: 6
|
 |
« Ответ #48 : 16.05.2011, 14:47:17 » |
|
Все это конечно хорошо, но у меня вопрос такого плана. Для того что бы появились иконки языков в опубликованном модуле "Переключение языка" - необходимо что бы как минимум для 2х пунктов меню были установлены используемые языки (допустим RU и EN) и они были обозначены как ГЛАВНАЯ СТРАНИЦА! Но также Joomla не дает уже сделанной Главной странице выбрать один из пунктов языка (либо Ru либо En) просит указать в качестве языка пункт "Все" отсюда получается что у меня на главной странице сайта всегда есть пункт меню "Главная" и в зависимости от выбранного языка дублирующий его пункт меню. Каким образом это можно исправить?
оставить главную страницу, у которой в качестве языка "Все", в покое, а страницы указанные как главные для языков снять с публикации... на самом деле, мультиязычность в joomle сделана из одного места, после нескольких попыток сделать что-то нормальное с помощью нее я плюнул на это дело, название сайта, мета кейворды, дескрипшен указанный в основных настройках сайта, цепляется везде и всюду, при использовании контактной информации форма обратной связи почему-то отображается только на одном языке, и т.д.
|
|
|
|
|
Записан
|
|
|
|
AlexeyMaloi
Новичок
Репутация: +0/-0
Offline
Сообщений: 6
|
 |
« Ответ #49 : 16.05.2011, 15:00:56 » |
|
Спасибо..Сделал как указано в п.3 (геморройно конечно) =(
|
|
|
|
|
Записан
|
|
|
|
n_i_x
Осваиваюсь на форуме
 
Репутация: +5/-0
Offline
Сообщений: 105
|
 |
« Ответ #50 : 17.05.2011, 20:43:39 » |
|
Следует заметить что в файле перевода строки должны начинаться со 2ой... т.е. 1ая строка должна быть пустой. Например -
- HOME="Главная"
- CONTACTS="Контакты"
ничего не понял)
|
|
|
|
|
Записан
|
|
|
|
|
|
|
ZHart
|
 |
« Ответ #52 : 24.06.2011, 08:33:01 » |
|
genko1, тоже топорное и некрасивое решение. Хотя понятно, что приходится извращаться, раз разработчики не предусмотрели такую простую возможность.
Для тех, кому лень идти по ссылке: Предлагается сделать фейковое (нигде не отображаемое) меню, в котором сделать пункт «по умолчанию», ведущий неважно куда. Это позволит нам снять с публикации первый пункт отображаемого (главного) меню. В итоге для каждого языка все пункты меню могут быть свои, в том числе и главный (Home/Главная).
|
|
|
|
|
Записан
|
|
|
|
genko1
Новичок
Репутация: +0/-0
Offline
Сообщений: 6
|
 |
« Ответ #53 : 24.06.2011, 14:17:32 » |
|
genko1, тоже топорное и некрасивое решение.
А можно по-подробнее: в чем заключается топорность и некрасивость данного решения?
|
|
|
|
|
Записан
|
|
|
|
|
ZHart
|
 |
« Ответ #54 : 24.06.2011, 14:24:21 » |
|
А по-вашему специально создавать отдельное меню и скрывать его только ради того, чтобы получить возможность вывода первого пункта меню — это красиво и правильно? Сущность меню используется совершенно не по назначению. Это явный костыль, по-моему это очевидно. Другой вопрос, что разработчики не предоставили возможности некостыльных решений, поэтому приходится извращаться.
|
|
|
|
|
Записан
|
|
|
|
genko1
Новичок
Репутация: +0/-0
Offline
Сообщений: 6
|
 |
« Ответ #55 : 24.06.2011, 14:35:03 » |
|
То, что приходиться извращаться для отключения первого пункта меню - согласен, не красиво. Но что сделано разработчиками, то сделано. И нам приходится искать возможность, или "костыль" по-Вашему как обойти этот косяк. И из всех "костылей" которые были предложены, этот самый быстрый и не связан с копанием в коде. Вы его сами в двух словах описали, даже картинок не потребовалось:)
|
|
|
|
|
Записан
|
|
|
|
Aquasonick
Давно я тут
  
Репутация: +1/-4
Offline
Пол: 
Сообщений: 289
Пока семь раз отмеришь - другие уж сожрут.
|
 |
« Ответ #56 : 01.07.2011, 11:23:45 » |
|
Что ты вы тут намудрили... Или у меня походу ещё и 5 вариант.) Решил просто настройками. 3 языка, везде соответствующий пункт меню. Потом попросили убрать его вообще - убрал. Ничего сложного Короче не понял я почему у вас так сложно.
|
|
|
|
|
Записан
|
|
|
|
|
ZHart
|
 |
« Ответ #57 : 24.08.2011, 10:41:13 » |
|
Для Joomla 1.7 все поменялось, ибо изменилась логика работы многоязычного сайта. Если обновиться с Jooomla 1.6 до Joomla 1.7, оставив все как есть, то модуль переключения языков перестает работать. Поэтому в случае с Joomla 1.7 нужно забыть все инструкции и выполнить другую, не менее простую инструкцию: - Создать несколько главных меню — одно общее и по одному для каждого из языков.
Например: mainmenu-all, mainmenu-ru, mainmenu-en. Для каждого из языковых меню создать соответствующие им модули. Для «общего» меню модуль можно не создавать (ибо его все равно потом придется скрыть). - Назначение «общего» меню только одно — создать в нем единственный пункт меню «Главная», сделать его основным и назначить его всем языкам. Смысл этой манипуляции в том, что хотя-бы один пункт меню обязательно должен быть главным и при этом должен быть назначен всем языкам.
- Далее в каждом из языковых меню нужно создать соответствующие языку пункты меню. Важно, чтобы в каждом из этих меню присутствовал пункт «Главная», при этом чтобы он был сделан основным, а в качестве языка был выбран язык этого конкретного меню.
- Profit.
P.S.: Кого интересует пошаговая настройка мультиязычного сайта на Joomla 1.7 (с нуля, а не после обновления) — можете заглянуть сюда (ахтунг, английский!).
|
|
|
|
|
Записан
|
|
|
|
Testikus
Захожу иногда

Репутация: +0/-0
Offline
Сообщений: 16
|
 |
« Ответ #58 : 13.10.2011, 17:56:01 » |
|
В Joomla 1.6/1.7 есть тип пункта меню "Псевдоним пункта меню" или "Menu Item Alias".
Пробую делать так: В главном меню, есть пункт по умолчанию "Главная", который ведёт на главную страницу. Это меню для всех языков и НЕ выводится не в одном из модулей.
Создаю второе меню (для всех языков) которое будет видно пользователям, делая два пункта на разных языках, с типом "Псевдоним пункта меню", в параметрах указываю, что это псевдоним главной страницы из не отображаемого главного меню. Дальше в этом же меню создаю остальные пункты для каждого из нужных языков.
На тесте вроде работает, посмотрим не вылезет ли каких багов.
|
|
|
|
|
Записан
|
|
|
|
|
pantela
|
 |
« Ответ #59 : 05.12.2011, 14:39:57 » |
|
И как понять? В итоге что ли Joomla использовать в качестве мультиязычности лучеще едлать клоны меню, материалов, модулей... чем использовать что то на подобии JoomFish (Конечно когда он будет поддерживатся)
|
|
|
|
|
Записан
|
|
|
|
veselun
Новичок
Репутация: +0/-0
Offline
Сообщений: 1
|
 |
« Ответ #60 : 06.12.2011, 18:01:12 » |
|
установил программу Joomla все нормально запустил сервер создал шаблон сайта , теперь хочу текст сохранить на Главной странице сайта , беру код текста захожу в панель управления сайтом через admin , хочу вставить текст ,а кнопка html не нажимается и не открывается редактор HTML . Обычный текст вставить можна , что я не так сделал подскажите . Может что то недогрузил в корневой папке ? Отдельно на компе редактор есть HTML .
|
|
|
|
« Последнее редактирование: 06.12.2011, 18:08:01 от veselun »
|
Записан
|
|
|
|
|