Zum Inhalt springen

Listen-Textmenu zur Sprachumschaltung

Erstellt am 3. April 2007 · 1 Antwort · letzte Antwort am 5. April 2007

Tags: RealURL, Frage

pixelmord ·

Hallo,

ich bin mir nicht ganz sicher, wie ich ein einfaches Text-Menu als Liste zum Umschalten der Sprachen der Seite realisieren soll.
Ich habe leider noch nicht so viel Typo-Script Erfahrung.
Hier mein Versuch, der immerhin schon halb funktioniert:

# Language-Menü
lib.langmenu = COA
lib.langmenu.1 = TEXT
lib.langmenu.1 {
  value = deutsch
  wrap = <li><a href="index.php?L=de"> | </a></li>
}

lib.langmenu.2 = TEXT
lib.langmenu.2 {
  value = english
  wrap = <li><a href="index.php?L=en"> | </a></li>
}
lib.langmenu.3 = TEXT
lib.langmenu.3 {
  value = francais
  wrap = <li><a href="index.php?L=fr"> | </a></li>
}

lib.langmenu.4 = TEXT
lib.langmenu.4 {
  value = espanol
  wrap = <li><a href="index.php?L=es"> | </a></li>
}
lib.langmenu.5 = TEXT
lib.langmenu.5 {
  value = italiano
  wrap = <li><a href="index.php?L=it"> | </a></li>
}

lib.langmenu.6 = TEXT
lib.langmenu.6 {
  value = cesky
  wrap = <li><a href="index.php?L=cz"> | </a></li>
}

# Sprachumschaltung
config.linkVars = L
# Standardsprache
config.sys_language_mode = content_fallback
config.sys_language_overlay = hideNonTranslated
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
date_stdWrap.strftime = %d. %B %Y
time_stdWrap.strftime= %H:%M
config.metaCharset = iso-8859-1
config.renderCharset = iso-8859-1

# Deutsch = 4
[globalVar = GP:L=de]
   config.sys_language_uid = 0
   config.language = de
   config.locale_all = de_DE
   lib.langmenu.1.wrap = <li><a href="index.php?L=de" class="current"> | </a></li>
[global]

# English = 1
[globalVar = GP:L=en]
   config.sys_language_uid = 1
   config.language = en
   config.locale_all = en_US
   lib.langmenu.2.wrap = <li><a href="index.php?L=en" class="current"> | </a></li>
[global]

# spanish = 3
[globalVar = GP:L=es]
   config.sys_language_uid = 3
   config.language = es
   config.locale_all = es_ES
   lib.langmenu.4.wrap = <li><a href="index.php?L=es" class="current"> | </a></li>
[global]

# italian = 4
[globalVar = GP:L=it]
   config.sys_language_uid = 4
   config.language = it
   config.locale_all = it_IT
   lib.langmenu.5.wrap = <li><a href="index.php?L=it" class="current"> | </a></li>
[global]

# french = 5
[globalVar = GP:L=fr]
   config.sys_language_uid = 5
   config.language = fr
   config.locale_all = fr_FR
   lib.langmenu.3.wrap = <li><a href="index.php?L=fr" class="current"> | </a></li>
[global]

# czech = 6
[globalVar = GP:L=cz]
   config.sys_language_uid = 6
   config.language = cz
   config.locale_all = cz_CZ
   lib.langmenu.6.wrap = <li><a href="index.php?L=cz" class="current"> | </a></li>
[global]

Leider weiß ich nicht, wie ich die aktuelle uid übergeben kann, damit nicht beim Umschalten immer auf die Startseite gesprungen wird.
Auch ist beim ersten Aufrufen der Seite der Link zu "deutsch" nicht mit class="current" versehen, wohl weil die Variable L=de noch nicht initialisiert ist.
Außerdem nutze ich RealURL und eigentlich ist es unschön auf die SEO-optimierten Pfade beim Umschalten der Sprache zu verzichten.

Fazit: Wie kann ich den o.g. Code verbessern, oder wäre es besser eine Extension zu installieren, um die Sprachumschaltung zu handhaben und wenn ja, welche?

Vielen Dank für Eure Hilfe.

pixelmord ·

Hallo nochmal,

also ich hab das Problem jetzt mal so gelöst, indem ich cab_realurl_languageselector und adaltas_realurl_i18n installiert habe.

Das ist aber auch leider noch mit Problemen verbunden:

  • Die realurl-Links im Sprachmenu funktionieren nur, wenn ich nicht im backend angemeldet bin

  • Ich mußte den pfad zu meinem root-verzeichnis in der config zum languageselector manuell angeben, wohl weil mein typo3 in einem unterverzeichnis installiert ist?

  • Das blödeste ist aber, daß die Auszeichnung des aktiven Links für die aktuelle Sprache nicht funktioniert. Bei der Standard-Sprache sind alle Menupunkte mit der von mir eingegebenen Klasse class="current" versehen, bei Wahl einer der Übersetzungssprachen ist gar kein Link mit der Klasse versehen

Hier der Code:

# Language-Menü
lib.langmenu = TEXT
lib.langmenu.postUserFunc = tx_cablanguageselector_pi1->main
lib.langmenu.postUserFunc{

   	atag.before = <a href="http://homepage.de/typo|">
	atag.beforeACT = <a class="current" href="http://webdev.purple-dc.de/typo|">
	atag.after = </a>                
	disableACT = 0
	linkACT = 1
	wrap = <li>|</li>
	startUID = 2   
}

# Sprachumschaltung
config.linkVars = L
# Standardsprache
config.sys_language_mode = content_fallback
config.sys_language_overlay = hideNonTranslated
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
date_stdWrap.strftime = %d. %B %Y
time_stdWrap.strftime= %H:%M
config.metaCharset = iso-8859-1
config.renderCharset = iso-8859-1