Pull to refresh

Мультиязычность в Drupal 7. Меню

Reading time2 min
Views22K
Ранее я рассказал как быстро и легко можно переводить контент (ноды) в D7.
Сейчас я расскажу про 2 способа перевода меню.

В обоих случаях мы будем использовать модули i18n, i18n_menu. На этот раз Entity translation нам не помошник, так как он может переводить только entity. В Drupal 6 для этого использовался Menu Translation, позже он был объеденен с Internationalization.


Предполагается что модуль i18n уже включен и настроено определения языка (если нет, то вам сюда).
Первым делом давайте включим подмодуль для перевода меню, воспользуемся drush.
drush en -y i18n_menu

Способ первый


На странице редактирования меню «admin/structure/menu/manage/%menu%/edit» выбираем пункт «Translate and Localize».


Как видим, на странице меню появилась новая вкладка «Translate».


С помощью неё можно перевести название и описание этого меню.


При создании новой ссылки в меню появляется поле выбора языка.
Важно: язык нужно обязательно выбрать, иначе эту ссылку будет нельзя перевести этим способом.


На странице «admin/structure/menu/item/%menu_item_id%/translate» можно добавить новый перевод к этой ссылке, а можно указать существующую в качестве перевода.


В результате перевода ссылки дублируются, но с разными языками.


Способ второй


Во втором способе мы будет использовать эти же модуля, но другому.

Важно: при создании новой ссылки необходимо выбрать нейтральный язык


Все, теперь можно переводить. Это делается на одной из двух страниц, на ваш выбор:
Через вкладку «Translate» на странице редактирования ссылки.

Либо на странице «admin/config/regional/translate/translate».

При использовании второго способа сами ссылки не дублируются

Результат

Английский:
Немецкий:

Update

Если вы собираетесь выводить программно, то должны использовать функцию
<?php print render( i18n_menu_translated_tree('menu-name') ); ?>
вместо
<?php print render( menu_tree('menu-name') ); ?>
Tags:
Hubs:
+9
Comments7

Articles