Zum Inhalt springen

Sprachumschaltung funktioniert nicht

Erstellt am 12. Januar 2006 · 1 Antwort · letzte Antwort am 16. Januar 2006

Tags: Frage

Ezek ·

Ich habe mit der Hilfe von ein paar anderen Usern hier uas dem Forum habe ich mit dem folgenden Code die Seite an der ich arbeite auf die beiden Sprachen Deutsch (Default) und Englisch umgestellt:

	# Standardsprache festlegen
config.linkVars = L
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE 

	# Alternativsprache festlegen
[globalVar = GP:L=1]
config.sys_language_uid = 5
config.language = en
config.locale_all = english

Ich habe für jede Seite auch die alternativen englischen Texte einpflegen können, und entsprechend speichern können.

Nun ergeben sich folgende Probleme:

  • Die Flagge zum Umschalten, schaltet nicht in die andere Sparche um;

  • Es wird nur die Flagge für Englisch aber nicht für Deutsch angezeigt;

  • Browser auf Englischen Windows Systemen zeigen auch nur den Deutschen Text an;

Als Extention für das Anzeigen der Umschalte Flaggen und das Umschalten ist sr_language_menu installiert.

Was kann ich machen um eines oder alle dieser Probleme zu lösen?

birgitr ·

Dein Code ist falsch, richtig wäre:

        # Alternativsprache festlegen

[globalVar = GP:L=1]
#L=1 muss mit der uid der Sprache übereinstimmen, siehe Tabelle sys_language
config.sys_language_uid = 1
config.language = en
# hier die richtige Bezeichnung setzen, UTF-8 oder ISO....
config.locale_all = en_GB.UTF-8
[global]

Dann musst Du die php Datei, die Das Flaggenmenü ausgibt, an Deine Sprachen anpassen. Das ist die Datei
/media/scripts/example_languageMenu.php
Diese enthält standardmäßig

// Set each icon. If the language is the current, red arrow is printed to the left. If the language is NOT found (represented by a pages_language_overlay record on this page), the icon is dimmed.
$flags = array();
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']-">id.'&L=0').'" target="_top"><img src="media/uploads/flag_uk.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']-">id.'&L=1').'" target="_top"><img src="media/uploads/flag_dk'.($langArr[1]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==2?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']-">id.'&L=2').'" target="_top"><img src="media/uploads/flag_de'.($langArr[2]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';

Das heißt:
uid 0 = englisch (UK)
uid 1 = dänisch
uid 2 = deutsch

Du hast aber:
uid 0 = deutsch
uid 1 = englisch

Dein Code wäre also:

// Set each icon. If the language is the current, red arrow is printed to the left. If the language is NOT found (represented by a pages_language_overlay record on this page), the icon is dimmed.
$flags = array();
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']-">id.'&L=0').'" target="_top"><img src="media/uploads/flag_de.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']-">id.'&L=1').'" target="_top"><img src="media/uploads/flag_uk.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';

Auch hier muss der Linkparameter L= Sprach-UID mit der Reihenfolge Deiner Sprachen in der Tabelle sys_language übereinstimmen.
Du kannst übrigens zwischen verschiedenen Flaggensymbolen wählen (farbig, farbig 3d, schwarz/weiss) oder eigene einfügen.