Drupal i18n-MenüsDrupal i18n-Menüs

i18n - die Abkürzung für Internationalization (18= Anzahl der ausgelassenen Buchstaben)

Wer unterschiedliche Menüebenen in Drupal 6 ausgeben will, nutzt dazu eventuell folgenden Code:

print theme('links', menu_navigation_links(variable_get('menu_primary_links_source', 'primary-links'),$level=1));

Leider werden damit aber die Menüeinträge nicht übersetzt, auch wenn eine Übersetzung vorliegt und das i18nmenu-Modul (als Teil des i18n-Moduls) aktiviert ist.

In diesem Kommentar wurde ich fündig:
http://drupal.org/node/230868#comment-832868

I found a workaround, actually an ugly hack.

In menu.inc, in the menu_navigation_links function, add the line

i18nmenu_localize_tree($tree);

before the foreach statement.

Die selbst erzeugten Menüeinträge werden nicht durch das i18n-Modul geschossen, sondern umgehen es unpraktischerweise. Der Empfehlung des Kommentars ein core-Modul zu hacken (includes/menu.inc) sollte nicht gefolgt werden.
Stattdessen sollte man die mittlerweile im i18nmenu-Modul verfügbare Funktion
i18nmenu_menu_navigation_links()
nutzen, und den Code im Theme entsprechend anpassen:
print theme('links', i18nmenu_menu_navigation_links(variable_get('menu_primary_links_source', 'primary-links'),$level=1));

Damit erhält man wunderbar lokalisierte Menüs.