Мультиязычность в Drupal 6 - меню

Главные вкладки

Аватар пользователя doctor doctor 23 июля 2008 в 0:56

Обрадовавшись появившейся мультиязычности в шестом Друпале быстренько установил 6.3 и... был несколько шокирован. Такое впечатление, что создать то ее создали, да забыли зачем. Типа собирались, но по ходу занялись другим и до конца не довели. Бывает.
Потому поделюсь первым, пускай и самым, похоже, тривиальным моментом, как создать меню на разных языках, не прибегая к таксономии (создание словарей для каждого языка - для многих это может оказаться ненужным в рамках небольших сайтов). Для профана в программировании, тем более недавно освоившему Друпал (каким я и явлюсь) , это будет не легко - подозреваю таких есть немало.
Итак: задача: Создание сайта на разных языках.
Средства: друпал 6.3. Должны быть включены модули Locale и Content Translation (включены в дистрибутив)
Решение:
1. Идем в Языки /admin/settings/language и добавляем нужные нам, а не нужные - убираем (это обычно английский, если он вам не нужен) - также вкладка /admin/settings/language/add, ставим язык по умолчанию, т.е. тот, который мы хотим видеть на главной странице
2. Переходим там в же в меню Языки во вкладку Настроить admin/settings/language/configure и видим четыре варианта мультиязычности. Выбираем нужный
*похоже вариант 4 через определение доменных имен будет работать не на всех хостингах
Я выбрал 3-й"Префикс пути с определением языка". От второго он мало чем отличается. Во втором ("Префикс пути") все пути к страницам с другими языками, отличными от установленного по умолчанию, будут иметь вид site/uk/page для украинского например или site/de/page для немецкого, тогда как для языка по умолчанию этой вставки, определяющей язык, не будет. Для варианта 3-го такая вставка будет и для языка по умолчанию.
3. Идем в Типы материалов (Content Types) /admin/content/types. Выбираем типы материала, который хотим чтобы имел переводы, например Страница, во вкладке Процесс в подменю Поддержка многоязычности ставим галочку "Включено, с переводом"
4. В разделе Меню /admin/build/menu/add создаем меню для каждого из языков, Напр. Русский, Англмйский, Украинский
5. В разделе Блоки /admin/build/block появляются соответсвующие блоки с такми же названиями. Ставим их в нужное место сайта, жмем Настроить и САМОЕ ГЛАВНОЕ: в Установки видимости страницы вставляем следующие строки:

<?php global $language; if ($language->language == "ru") return true;
 else return false;
?>

это для блока, который будет показываться на русских страницах. Для остальных - изменяем буковки ru на нужные нам - en, de, uk...
6. Фсё! Заполняем созданные меню нужными нами пунктами и получаем многоязычный сайт. Для каждого материала при создании добавляем перевод - все работает красиво.

Ну это еще не все, правда. На мультиязычность не настраивается например страница Контакты, ее глючит с модулем Image и еще немало всего. но это уже другая песня.

Комментарии

Аватар пользователя Bios Bios 23 июля 2008 в 19:13

Столкнулся с такой же проблемой...
Все сделал так же но для БЛОКОВ так же есть поле язык, где можно установить на страницах с каким языком должен отображаться БЛОК.... Таким образом можно добиться результат не вставляя PHP код для проверки текущего языка...
Язык для блоков меняется в Настройки меню + Navagation+ выбираете заранее созданный БЛОК жмете на настройки данного блока в открывшейся странице устанавливаете языковые настройки текущего блока...
Сохраняете...

У меня все работает...

Аватар пользователя anpal anpal 23 июля 2008 в 20:21

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

Аватар пользователя doctor doctor 26 июля 2008 в 15:34

anpal
сорри, модулем i18 не пользовался - решил штатными средствами друпал6, но у меня был совсем простенький сайт - из модулей только DHTMLmenu, Image, tinyMCE. вот он кстати

bios
не нашел такого - нельзя ли еще раз подробнее описать путь к настройке?

Аватар пользователя anpal anpal 26 июля 2008 в 18:11

doctor!

Виталий смотрел Ваш сайт. Мой будет несколько большим, но идея мне понравилась в плане использовать как можно меньше модулей. Попытаюсь последовать этим путем, но позднее у меня будут несколько вопросов, если не затруднит ответьте пожалуйста. Если не успею сегодня вечером, то завтра вечером обязательно отпишу результат. Моя Ася 413864841. Скажите а как Вы переводили, например,наименование сайта и если есть у Вас украинский перевод Д6, то скиньте если можно, на киевском друпале не нашел нормального перевода. Сейчас делаю на русском и английском, затем добавлю украинский, далее видно будет.
С уважением Андрей или Андрей Васильевич роли не играет

Аватар пользователя doctor doctor 27 июля 2008 в 16:43

с наименованием сайта, что выводится в самом верху - header - проблемы. штатными средствами не решить похоже. потому я просто его не вывешивал, а создавал блоки в боковом меню.. хотя у меня проще в данном случае - его можно было бы создать латиницей, название универсальное для всех языков.
можно в место где выводится header вручную перенести одну из областей вывода шаблона (page.tpl.php) - например, Заголовок и создать там зависимые от языка блоки для каждого языка. недостаток - это не будет отображаться в title сайта.
перевода как такового нету - перевел только около десятка фраз, что вываливаются на сайт - в контактах в первую очередь. могу экспортировать и переслать. в общем если что - аська 492782113

Аватар пользователя albert t albert t 4 августа 2008 в 16:49

Спасибо.

Так же можно изменять меню и с book. Настоятельно рекамендую использовать данный способ формирования содержимого сайта с помощью подшивки. Исключительно прогресивный способ. Единственный который корректно работает как с меню так и с хлебными крошками. И вообще.

Аватар пользователя Beshly Beshly 24 ноября 2008 в 14:30

А почему у меня на главной (что на русском, что на английском с приставкой en) выводятся все новости включая другие языки? (хотя в story стоит например, Русский, но новость появляется там и там).

Аватар пользователя clubwave.ru clubwave.ru 28 января 2009 в 18:41

"Bios" wrote:
Все сделал так же но для БЛОКОВ так же есть поле язык, где можно установить на страницах с каким языком должен отображаться БЛОК.... Таким образом можно добиться результат не вставляя PHP код для проверки текущего языка...
Язык для блоков меняется в Настройки меню + Navagation+ выбираете заранее созданный БЛОК жмете на настройки данного блока в открывшейся странице устанавливаете языковые настройки текущего блока

тоже не нашёл для блоков поле язык

Аватар пользователя saken saken 16 февраля 2009 в 21:05

"doctor" wrote:
Настроить и САМОЕ ГЛАВНОЕ: в Установки видимости страницы вставляем следующие строки:

извините, а это где если не секрет?

так пора спать. туплю уже

Аватар пользователя Лампочка Лампочка 4 апреля 2009 в 12:53

Я решила проблему проще

Все пункты меню, созданные как ноды прекрасно переводятся на другой язык.
А для тех пунктов, которые ссылаются на форум или другие существующие адреса (пункты, которые надо создавать прямо из меню), сделала два варианта на двух языках, и в css прописала видимость пунктов

Аватар пользователя Горя Горя 2 марта 2010 в 22:15

Подскажите все таки, куда это нужно добавить???

САМОЕ ГЛАВНОЕ: в Установки видимости страницы вставляем следующие строки:
<?php global $language; if ($language->language == "ru") return true;
else return false;
?>

Аватар пользователя LARGiTAS LARGiTAS 20 августа 2010 в 13:02

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