Есть сайт на русском языке работающий на друпале с самописной темой. Понадобидось добавить небольшой англоязычный раздел (пара страничек). Проблема в том что кроме статей там будет еще конечно и англоязычное меню и остальные элементы страницы будут на английском. Модуль перевода вроде не подходит - структура англоязычного раздела не соответствует остальному сайту? Как лучше поступить? Заранее спасибо!
Комментарии
Так в чем тут сложность. Самый простой вариант многоязычного сайта
1. Добавляете отдельно меню для каждого языка (не перевод, отдельное меню стабильнее и проще)
2. При создании контента указываете язык и связываете с пунктом меню
3. Если необходимо, дорабатываете View с ограничением по текущему языку.
4. Видимость блоков так же можно сделать для каждого языка
Я сейчас планирую мультиязычный сайт с переходом на 6ку - эта функция есть в ядре? Или доп модуль надо ставить? Если да, то какой?
Ставите модуль i18n...
Потом для каждого меню выбираете свой язык... У меня таким образом реализовано 3 языка на сайте...
Определяете язык /admin/settings/language русский - дефолтный
/admin/settings/language/configure - выбираете префикс в пути
/admin/settings/language/i18n - выбираете Current language and language neutral
В i18n у меня включены модули:
Block translation
Content type translation
Internationalization
String translation
Итого получаем:
При создании ноды указываем ее язык... Если ставим нейтральный язык то видим ноду на всех языках... Для каждого меню /admin/build/block тут ставите свой язык...
В итоге получаете счастье... (переводами нод не пользуюсь, на то есть глючные причины)
Переводами терминов таксономии не заморачивался так как не было необходимости...
Да есть в ядре, то же принцип в блоке, что и для ноды. Выбираешь язык и виден только если данный язык активен. Как пример, блок адресов и телефонов фирмы под каждый язык.
ДА еще по теме Вариант многоязычия шестого Друпала (без вмешательства в код) и по меню мультиязычному тоже надо поискать по форуму.
kodo спасибо! А не подскажете что делать с теми надписями которые забиты непосредственно в шаблоне темы?
Писать их на английском и заворачивать в функцию t() потом в админке переводить, а вообще в шаблон темы писать стационарные надписи без функции t() большой грех.
Спасибо glu2006 уже ответил. Я бы даже не знал, что сказать, т.к. таких проблем у меня не было.
да ну. if ($language=="ru"){ echo 'тыдых';} else {echo 'ololo'}
и че отсюда имеем? ага - два запроса к бд. я не прав?
Если подходить к этому с позиции количества запросов в БД то тогда вообще какой смысл делать мультиязычный сайт на одном двигуне и с одной базой? Зачем вообще тогда разработчики придумали этот модуль locale??
Тут же вопрос не только в количестве запросов к БД, но и едином стиле, проблемах последующего сопровождения и т.д.
Так что как говирил все через t()
if ($language->language=="ru) { echo "русиш"; } ...
если текста много, и он в разных местах, лучше через switch одним запросом определить нужный текст в переменных.
По сабжу: делал мультиязычные сайты (3, 5 языков). Ответы на форуме есть
Проблемы у меня возникали с урлами меню. Хотелось site_name/ru/contacts и site_name/en/contacts. В меню эта конструкция почему-то держалась очень недолго. Определил primary_links в блоке, а не через темизацию theme('links', ... ) в шаблоне и переключения прекрасно работают.
Удачи!
Кто нибудь знает,как побороть проблему с коментами? Если включена многоязычность,мы имеем в сущности несколько нод-по одной на перевод.Следовательно,если я комментирую одну ноду,находясь,скажем на русском переводе,то комментарии будут относится ТОЛЬКО к русской ноде.Если человек заходит,скажем,с украинского перевода,ему показано,что комментарием ВООБЩЕ нет,хотя они есть в русском варианте ноды.Проблема!
Как валить каменты в кучу со всех вариантов перевода?
Между одинаковыми нодами на разных языках есть связь воспользуйтесь ей создания собственного SQL запроса который выгребет комменты для русской и украинской ноды и на экран их
Таже проблема была. Просто указал primary_links для каждого языка. Даже переводом не мучался. А вначале все пытался через перевод...
Зачем плодить primary_links'ы? лучше вставить один через блок
Это не подойдет в том случае если меню не полностью синхронны. Вводить видимость пункта меню для одного из языков, так же не вариант если ссылка идет на что-нибудь интернациональное (типа блога).
если не подходить к позиции со словом производительность то никаких серваков не хватит.