xandeadx.ru Блог музицирующего веб-девелопера

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: оригинальные названия всех пунктов должны быть на английском.

Написанное актуально для Drupal 7
Похожие записи

Комментарии RSS

Габор считает что так делать нельзя
http://hojtsy.hu/blog/2011-may-19/drupals-multilingual-problem-why-t-wro...

я другого выхода не нашёл, Menu translation пока очень сырой

я другого выхода не нашёл, Menu translation пока очень сырой

В чем проблема была, если не секрет? Можно на почту. Просто из спортивного интереса.

какие-то проблемы с определением active-trail, в следствии чего меню не раскрывается и теряется подменю. причём баг иногда странным образом пропадает. вылезало на двух сайтах. вчера пол ночи просидел в отладчике, но терпения разобраться так и не хватило.

хотя возможно в Drupal 7.12 это уже исправили, там есть закрытые issue по поводу меню. надо дождаться когда допилят совместимость с i18n

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании