GELÖST > Problem mit i18n und Primary Menu
am 01.05.2010 - 19:25 Uhr in
Ich betreue eine Seite, welche wir jetzt mehrsprachig erweitert haben. Hierfür wurde das i18n Modul installiert. Leider haben wir ein kleines Problem bei der Menüstruktur.
Die deutsche Seite funktioniert einwandfrei. Allerdings werden die übersetzten Menüpunkte im Primary Menu nicht immer angezeigt.
- Alle Inhalte sind mittels des Tab "Übersetzen" ins englische übersetzt und auch neue Menüpunkte zugewiesen.
- Die deutschen Menüpunkte wurden nachräglich im Menu-Manager auch auf "Deutsch" gesetzt
Mein Problem ist nun, das beim aufrufen der Startseite in der englischen Spache nur die Menüpunkte angezeigt werden, die auf Sprachneutral stehen.
(Startseite-Beispiel: www.meineseite.com/de
oder www.meineseite.com/en
) Wenn hingegen man jetzt auf einen Menüpunkt klickt, der in englisch vorhanden ist, werden wieder alle richtig Menüpunkte angezeigt.
Ich konnte jetzt das Problem noch genauer eingrenzen.
Es sind in der settings.php i18n-variablen für die getrennte Verwaltung von Startseiten gesetzt. Dadurch kann man für jede Sprache getrennt eine Startseite einstellen.
Sowie ist hier einen anderen Wert einstellen ausser node als z.B. node/322 dann werden die Menüs nur bei der Sprache korrekt angezeigt, bei der ich in den Webseiteneinstellungen die Startseite zuletzt eingestellt habe.
Wo liegt das Problem, oder ist ein Bug?
- Anmelden oder Registrieren um Kommentare zu schreiben
Problem behoben
am 02.05.2010 - 17:02 Uhr
Das Modul i18n hat einen kleinen Bug. Es werden auf der Startseite einer weiteren Sprache (nicht Originalsprache) die Menüpunkte, die explizit auf diese Sprache eingestellt sind, nicht angezeigt. Diese Bug tritt nur auf, wenn man die i18n Variablen in der settings.php eingefügt hat, um für jeder Sprache getrennte Frontpages, Solgans, Footers etc. zuzuweisen.
i18n Variablen in der Setting.php:
<?php
$conf['i18n_variables'] = array(
// Site name, slogan, mission, etc..
'site_name',
'site_slogan',
'site_mission',
'site_footer',
'anonymous',
// Different front page for each language
'site_frontpage',
// Primary and secondary links
//'menu_primary_links_source',
//'menu_secondary_links_source',
// Contact form information
//'contact_form_information',
// For theme variables, read more below
//'theme_settings',
//'theme_garland_settings',
);
?>
Der Bug befindet sich in der Datei i18n.module. Hier muss eine Zeile in der Function "i18n_selection_mode" eingefügt werden. Das ist in Modulversion 1.4 ab Zeile 348.
So sieht der Funktionsanfang Original aus:
<?php
function i18n_selection_mode($mode = NULL, $params = NULL) {
static $current_mode = NULL;
static $current_value = '';
static $store = array();
// Initialization, first time this runs with no explicit mode.
if (!$current_mode && !$mode) {
?>
Die 4te Zeile muss ergänzt werden:
<?php
function i18n_selection_mode($mode = NULL, $params = NULL) {
static $current_mode = NULL;
static $current_value = '';
static $store = array();
if($current_value=='') i18n_init();
// Initialization, first time this runs with no explicit mode.
if (!$current_mode && !$mode) {
?>
Jetzt werden auf der Startseite die Menüs wieder korrekt bei beiden Sprachen angezeigt. Übrigens der Original Beitrag zur Behebung dieses Bugs ist in den Modul-Issues auf Drupal.org zu finden: http://drupal.org/node/614548
--------
Active-Media-Production
Individual Web Development and Design