Es gibt ja etliche Extensions, die Sprach-Menü’s erzeugen: TER-Suche
Ich hab alle natürlich ausprobiert und habe oft festgestellt, dass das Caching nicht richtig funktioniert, oder dass keine RealURL-Links erzeugt werden. Als nächstes habe ich mir dann eine eigene Extension programmiert, die all das berücksichtigen sollte. Nach langem programmieren fiel mir auf, dass es auch mit TypoScript geht. Ein besonderes Problem war den Sprach-Switch so zu gestalten, dass nach dem Umschalten der Sprache bis auf die Sprach-Variable alle anderen Variablen wieder in der URL sind. Also ein Umschalten innerhalb eines Foto-Albums oder einer News-Extension möglich ist. Viel Spass mit dem Code:
language_switch = HMENU language_switch { # Ein Sprach-Menü wird erzeugt special = language # Reihenfolge und Auswahl der Sprachen im Menü special.value = 1,0,2 special.normalWhenNoLanguage = 0 wrap = <ul id="language_switch">|</ul> 1 = TMENU 1 { noBlur = 1 # Standard Sprachen NO = 1 NO { linkWrap = <li>|</li> # Standard-Titel für den Link wäre Seitenttitel # => anderer Text als Link-Text (Optionsschift) stdWrap.override = [en] || [de] || [fr] # Standardmäßige Verlinkung des Menüs ausschalten # Da diese sonstige GET-Parameter nicht enthält doNotLinkIt = 1 # Nun wird der Link mit den aktuellen GET-Parametern neu aufgebaut stdWrap.typolink.parameter.data = page:uid stdWrap.typolink.additionalParams = &L=1 || &L=0 || &L=2 stdWrap.typolink.addQueryString = 1 stdWrap.typolink.addQueryString.exclude = L,id,cHash,no_cache stdWrap.typolink.addQueryString.method = GET stdWrap.typolink.useCacheHash = 1 stdWrap.typolink.no_cache = 0 } # Aktive Sprache ACT < .NO ACT.linkWrap = <li class="active">|</li> # NO + Übersetzung nicht vorhanden USERDEF1 < .NO # ACT + Übersetzung nicht vorhanden USERDEF2 < .ACT } } # Nun kann man gleich noch ein wenig CSS Formatierung für den Sprachswitch angegeben werden: plugin.language_switch._CSS_DEFAULT_STYLE ( ul#langua_sitch { padding:0; margin: 0; height: 25px;} ul#languagemenu li { height:25px; display:inline; float:left; } ul#languagemenu li.active { font-weight:bold; } ) |
… freue mich auf Deine Meinung.