Drupal → Многоязычное меню без использования Menu translation (i18n)
Код ниже, пропускает все названия пунктов Main Menu через функцию t()
, поэтому можно не мучатся с модулем Menu translation и переводить пункты с помощью стандартного интерфейса admin/config/regional/translate/translate
:
/** * Preprocess function for theme_menu_link() */ function THEMENAME_preprocess_menu_link(&$vars) { if ($vars['element']['#original_link']['menu_name'] == 'main-menu' && !empty($vars['element']['#title'])) { $vars['element']['#title'] = t($vars['element']['#title'], array(), array('context' => 'menu')); } }
Добавить в template.php
, заменить THEMENAME
на имя темы, сбросить кэш.
P.S: оригинальные названия всех пунктов должны быть на английском.
Комментарии
Габор считает что так делать нельзя
http://hojtsy.hu/blog/2011-may-19/drupals-multilingual-problem-why-t-wro...
я другого выхода не нашёл, Menu translation пока очень сырой
В чем проблема была, если не секрет? Можно на почту. Просто из спортивного интереса.
какие-то проблемы с определением active-trail, в следствии чего меню не раскрывается и теряется подменю. причём баг иногда странным образом пропадает. вылезало на двух сайтах. вчера пол ночи просидел в отладчике, но терпения разобраться так и не хватило.
хотя возможно в Drupal 7.12 это уже исправили, там есть закрытые issue по поводу меню. надо дождаться когда допилят совместимость с i18n
Оставить комментарий