Zum Inhalt springen

Mehrsprachigkeit und Menü

Erstellt am 23. Juni 2003 · 22 Antworten · letzte Antwort am 29. November 2005 · Seite 1 von 2

Tags: Frage

Frosch136 ·

Hi Leute,

ich habe ein Problem mit der Mehrsprachigkeit von einem Menü.
Hatte das Tutorial von Typo3.org durchgenommen, um die Sprache auf der Webseite ändern zu können.
Funktioniert auch so weit, nur das Menü bereitet mir Schwierigkeiten.
Ich habe zwei Sprachen, einmal Deutsch und Englisch
Jedes mal wenn ich die Spache umschalte z.B auf Englisch und dann auf den Link in meinen Menü klicke, werden die ganzen Seiten und die Links wieder auf Deutsch angezeigt.

Wie kann ich das Menü anpassen, wenn ich eine Sprache auswähle und dann auf einen Link klicke, das er dann in der Sprache z.B. Englisch bleibt?

Gruß
Marco

Frosch136 ·

Hi Jochen,

Die Flaggen werden angezeigt, ich kann damit die Sprachen auch wechseln.
Mein Inhalt und mein Menü passen sich der Sprache an.

Nur wenn ich z.B. die englische Flagge aktive habe, wird mir das Menü und auch der Inhalt in englisch angezeigt.
Ist ja auch richtig so. 🙂
Aber wenn ich auf irgendein Link in meinem Menü gehen, zeigt er sie wieder in Deutsch an, obwohl ich die Sprache englisch in diesem Fall weiter behalten möchte.
Das heißt egal welchen link ich in meinem Menü wähle, er springt immer wieder auf deutsch. 😢

Gruß
Marco

gecko ·

Hallo Jochen,

ich habe das gleiche Problem. Alle erzeugten Links im Menu haben keinen L-Parameter.

Ich erzeuge das Menu folgendermassen:

temp.menu_1 = HMENU
 # First level menu-object, textual
temp.menu_1.1 = TMENU
temp.menu_1.1 {
    # Normal state properties
  NO.allWrap = <HR>|<BR>
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = <HR>|<BR>
}
  # Second level menu-object, textual
temp.menu_1.2 = TMENU
temp.menu_1.2 {
    # Normal state properties
  NO.allWrap = &nbsp;&nbsp;|<BR>
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = &nbsp;&nbsp;|<BR>
}
  # Third level menu-object, textual
temp.menu_1.3 = TMENU
temp.menu_1.3 {
    # Normal state properties
  NO.allWrap = &nbsp;&nbsp;&nbsp;&nbsp;|<BR>
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = &nbsp;&nbsp;&nbsp;&nbsp;|<BR>
}

über

subparts.FOOTERMENU < temp.footermenu

bekomme ich es dann in die Seite.

Funktioniert auch gut, allerdings wird immer nur das Menu der default-Sprache erzeugt.
D.h.
default: english
id1: deutsch

Das erzeugte Menu hat allerdings nur Links zu den jeweiligen id's aber ohne L=...

dadurch springe ich aus einer deutschen Seite beim anklicken des Menüs wieder in die default-Language (english) zurück.

Kann ich bei der Menüerstellung irgendwo eintragen, dass im href der L-Parameter der angezeigten Seite beibehalten wird?

Gruß
harald
(gecko)

jweiland ·

Also, wenn ich das Problem richtig verstehe:

- der Link auf den Flaggen enthält die Variable L=... und die Sprachumschaltung funktioniert
- die Links beim Menü enthalten die Variable L=... nicht?

gecko ·

Genau so verhällt sich das ganze.

hier der code-auszug der flaggen:

<table border=0 cellpadding=0 cellspacing=0><tr><td><img src=clear.gif width=30 height=1></td><td><img src="t3lib/gfx/content_client.gif" width="7" height="10" align=middle><a href="index.php?id=1&L=0" target=_top><img src="fileadmin/images/flag_ie.gif" hspace=5 border="0"></a><a href="index.php?id=1&L=1" target=_top><img src="fileadmin/images/flag_de_d.gif" hspace=5 border="0"></a></td></</tr></table>

hier der code-auszug des menus:

<HR><A HREF="index.php?id=3" onFocus="blurLink(this);">home page</A><BR><HR><A HREF="index.php?id=4" onFocus="blurLink(this);">menus</A><BR><HR><A HREF="index.php?id=8" onFocus="blurLink(this);">entertainment</A><BR><HR><A HREF="index.php?id=9" onFocus="blurLink(this);">make a booking</A><BR><HR><A HREF="index.php?id=10" onFocus="blurLink(this);">jobs</A><BR><HR><A HREF="index.php?id=11" onFocus="blurLink(this);">how to find us</A><BR><HR><A HREF="index.php?id=12" onFocus="blurLink(this);">photo gallery</A><BR><HR><A HREF="index.php?id=13" onFocus="blurLink(this);">Beamish & Crawford</A><BR>

komischerweise bleibt auch die deutsche Flagge grau, obwohl die seite vorhanden und sichtbar ist. das steht aber bereist in einem anderen thread.

gruß
harald

jweiland ·

Wenn du magst, schick mir mal die admin login-Daten für das BE, dann schau ich mir das mal an.

Jochen Weiland

jweiland ·

Falls jemand die gleichen Probleme hat, hier ein paar Tipps zur Fehlersuche:

Wenn die Sprachumschaltung manuell funktioniert (Klick auf Flaggen oder Anhängen des L-Parameters an die URL), aber der L-Parameter bei den Links im Menü fehlt:

Mit dem Objekt Browser prüfen, ob die Linkvariable richtig definiert ist:

config.linkVars = L

(linkVars direkt unterhalb von config definieren, nicht unterhalb des PAGE Objekts (also nicht page.config.linkVars = L))

Wenn sonst alles richtig funktioniert, aber die Fähnchen grau bleiben (obwohl fremdsprachiger Content vorhanden und sichtbar ist):

Dann liegt es meist in einer fehlerhaften Anpassung der example_languageMenu.php Datei.

Jochen Weiland

Lingnet ·
gecko schrieb

Hallo Jochen,

ich habe das gleiche Problem. Alle erzeugten Links im Menu haben keinen L-Parameter.

Ich erzeuge das Menu folgendermassen:

temp.menu_1 = HMENU
 # First level menu-object, textual
temp.menu_1.1 = TMENU
temp.menu_1.1 {
    # Normal state properties
  NO.allWrap = <HR>|<BR>
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = <HR>|<BR>
}
  # Second level menu-object, textual
temp.menu_1.2 = TMENU
temp.menu_1.2 {
    # Normal state properties
  NO.allWrap = &nbsp;&nbsp;|<BR>
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = &nbsp;&nbsp;|<BR>
}
  # Third level menu-object, textual
temp.menu_1.3 = TMENU
temp.menu_1.3 {
    # Normal state properties
  NO.allWrap = &nbsp;&nbsp;&nbsp;&nbsp;|<BR>
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = &nbsp;&nbsp;&nbsp;&nbsp;|<BR>
}

über

subparts.FOOTERMENU < temp.footermenu

bekomme ich es dann in die Seite.

Funktioniert auch gut, allerdings wird immer nur das Menu der default-Sprache erzeugt.
D.h.
default: english
id1: deutsch

Das erzeugte Menu hat allerdings nur Links zu den jeweiligen id's aber ohne L=...

dadurch springe ich aus einer deutschen Seite beim anklicken des Menüs wieder in die default-Language (english) zurück.

Kann ich bei der Menüerstellung irgendwo eintragen, dass im href der L-Parameter der angezeigten Seite beibehalten wird?

Gruß
harald
(gecko)

Hallo Harald,

wohin soll ich der Code einkonfiguriert?

Danke,
Lyn

Lingnet ·
gecko schrieb

welchen teil das codes meinst du?

die config vars?

Die ganzen Code. Wohin soll ich alles config? Ich sehe kein Flaggen.

Gruß,
Lyn

gecko ·

hi lyn,

ich habe hier noch eine zweite site, die ich mehrsprachig machen will.
ich werde das jetzt gelich anfengen, dabei werde ich schritt für schritt alles aufschreiben, was ich gemacht habe.
Das hilft dir hoffentlich.

gecko ·

Also hier die kurze Beschreibung von dem was ich gemacht habe:

Im html-template eine Sektion LANGUAGEMENU einbauen.
Name ist eigentlich egal.

<!-- ###LANGUAGEMENU### begin -->
<!-- ###LANGUAGEMENU### end -->

Im setup des templates:

temp.language = PHP_SCRIPT
temp.language.file = fileadmin/templates/scripts/my_languageMenu.php

# Setting up the language variable "L" to be passed along with links 
config.linkVars = L 

config.sys_language_uid = 0 
config.language = en 
config.locale_all = english 

# English language, sys_language.uid = 0 
[globalVar = GP:L = 0] 
config.sys_language_uid = 0 
config.language = en 
config.locale_all = english 
[global] 

# German language, sys_language.uid = 1 
[globalVar = GP:L = 1] 
config.sys_language_uid = 1 
config.language = de 
config.locale_all = de_DE 
[global]

page.10 {
  template = FILE
  template.file = fileadmin/templates/template.tmpl

  workOnSubpart = DOCUMENT_BODY
  subparts.MENU < temp.menu_1
  subparts.LANGUAGEMENU < temp.language
  subparts.TITEL < temp.ctitel

  subparts.CONTENT < styles.content.get
  subparts.FOOTERMENU < temp.footermenu 
  subparts.LASTUPDATESEC < temp.LETZTEAENDERUNG

}

eintragen.

In Zeile 51 und 52 des scripts die Angaben für die Flaggen eintragen:

// 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="index.php?id='.$GLOBALS["TSFE"]->id.'&L=0" target=_top><img src="fileadmin/templates/images/flag_ie.gif" hspace=5 border="0"align=middle></a>';
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==1?$pointer:"").'<a href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=1" target=_top><img src="fileadmin/templates/images/flag_de'.($langArr[1]?"":"_d").'.gif" hspace=5 border="0" align=middle></a>';

Das script habe ich extra in fileadmin... kopiert, damit es beim update nicht überschrieben wird, genau wie die flaggen.
Das originalscript liegt unter media/scripts und heisst example_languageMenu.php.

Hoffe das hilft weiter.

Unbekannter Benutzer ·

Hi gecko,

danke erstmal für den hilfreichen Post. Das Problem mit der grauen Flagge hab ich so in den Griff bekommen, aber funktioniert bei dir jetzt auch die zweitsprachige Menüführung? Oder hab ich was überlesen?

gruß timbo

gecko ·

die zweisprachige menuführung funktioniert.

kannst hier sehen

http://www.fiddlers-bonn.com

wenn du auf den englischen seiten bist bekommst du ein englisches menü auf den deutschen ein deutsches....

besaonders gut bei den speisekarten zu sehen.

der inhalt wird noch vom wirt überarbeitet....

gecko ·

.... bei mir war der fehler, dass ich den cache nicht geleert habe, bevor ich neu nachgeschaut habe.... :-)

Zerwas ·
jweiland schrieb

Also, wenn ich das Problem richtig verstehe:

- der Link auf den Flaggen enthält die Variable L=... und die Sprachumschaltung funktioniert
- die Links beim Menü enthalten die Variable L=... nicht?

Ich habe genau das gleiche Problem: Die richtigen Bilder werden für das englische Menü genommen und auch die Sprachumschaltung funktioniert, aber die Links im englischen Menü bekommen haben keinen '&L=2' Parameter! Ich verwende nicht das example_languageMenu.php Script, da ich den Umschaltbutton ohne PHP gelöst habe. Brauche ich denn aus dem PHP Skript noch irgendwas, damit die Vererbung des '&L=2' Parameters funktioniert?

Mein Typoscript code könnt Ihr hier finden:

#14683

Ich bin ziemlich ratlos und sitze schon das ganze letzte Wochenende daran...