37 Reaktionen zu “Sprach-Menü”

Kommentare abonnieren (RSS) oder TrackBack URL

schön schön, das sollte aber doch bisschen kürzer sein, beim stdwrap ändert sich ja nicht allzuviel?!?

peter hat das mal für tipafriend online gestellt hier

lg georg
ps: umschlaten im text is falsch 😉
PPS: nichts destotrotz sehr schön, werd ich mir gleich kopieren

Georg Ringer (just2b) am 16. September 2007 um 17:27

Hi Georg,

sicherlich ändert sich beim stdWrap nicht viel. Doch da der standard Link des HMENU eben die zusätzlichen GET-Parameter in der URL verliert muss der Link eben mit stdWrap neu aufgebaut werden. Wenn dieser Link auch noch normal gecached werden soll ist da soweit ich sehe jede Zeile des Codes nötig. Kannst ja mal vorschlagen wie Du es kürzer hinbekommen willst.

beste Grüße

Sareen

Sareen Millet am 16. September 2007 um 19:10

Aehm – ich bin jetzt nicht der TS-Profi; aber wenn ich die Anzahl der „{“ gegen die Anzahl der „}“ gegenueberstelle, muesste die doch gleich sein, oder? 😎 Hier steht es 6:9 – da stimmt doch was nicht. Und hiermit oute ich mich sicher gaenzlich zum Schnellmerker: beim „_CSS_DEFAULT_STYLE“ gehoert ans Ende sicher auch ein „)“ statt „}“ – gelle?

Oder ist das Ding bewusst so gestaltet, dass man es nicht einfach kopieren und ausprobieren kann???

Bitte macht ein Update…

Martin am 05. November 2007 um 09:58

Ich selber bin nicht der TS Guru… Deshalb habe ich eine kurze Info Mail an Sareen geschickt. Werden den Fehler in kürze beheben.

Beste Grüße,
Tim

Tim Lochmüller am 06. November 2007 um 10:14

Hallo Martin, Hallo Tim,

in der Tat haben sich da ein paar Zeilen im TS verdoppelt. Die habe ich jetzt gelöscht und schön eingerückt. – So müsste es aber jetzt passen.

stimmts?

liebe Grüße

Sareen

Sareen Millet am 07. November 2007 um 18:35

Habe soeben festgestellt, dass dieser Language Switch mit dem Cache ein Problem hat. L=0 wird an die URL übergeben und damit doppelt gecached. Diese Änderung behebt das Problem teilweise:

stdWrap.typolink.additionalParams = &L=1 || &L=0&no_cache=1 || &L=2

schöner wäre natürlich

stdWrap.typolink.additionalParams = &L=1 || || &L=2

doch trotz

stdWrap.typolink.addQueryString.exclude = L,id,cHash,no_cache

wird L übergeben also funktioniert der Switch nicht mehr zur Default-Sprache

… vielleicht hat ja jemand noch eine bessere Idee. …

Sareen Millet am 10. Januar 2008 um 21:07

Danke für das Umstellen des Codes…. Ich habe das Menü auf zwei Seiten im Einsatz und konnte das Cache Problem bisher noch nicht nachvollziehen… 🙁

Tim Lochmüller am 11. Januar 2008 um 09:46

Vielen dank. Konnte den Hinweis für meinen Druckansicht-Link verwenden. Die fragliche Seite wird von einer Extension dynamisch generiert wobei der Inhalt von der GET-Variable year abhängt. Hier mein TS:

marks.PRINTBUTTON = TEXT
marks.PRINTBUTTON {
value = Druckansicht 
stdWrap.typolink.parameter.data = page:uid
stdWrap.typolink.additionalParams = &type=98
stdWrap.typolink.addQueryString = 1
stdWrap.typolink.addQueryString.exclude = L,id,cHash,no_cache,type
stdWrap.typolink.addQueryString.method = GET
stdWrap.typolink.ATagParams = class=“menu1″
}

Thomas am 24. Januar 2008 um 00:05

Super klasse! Hat mir gut geholfen! thx

brennA am 28. Februar 2008 um 10:19

Hallo,

bekomme ich eigentlich bei USERDEF1 den Link wieder weg ?
Wen keine Übersetzung vorhanden ist soll der Text eine andere Farbe bekommen, aber ohne den Link.

Björn Reichert am 03. März 2008 um 16:12

Funktioniert einwandfrei, wenn RealURL deaktiviert ist. Ist es aktiviert, wird immer nur ein Link mit der Default-Sprache erzeugt – für alle Menüeinträge.

Wie kann ich das ändern?

desiser am 10. Januar 2009 um 11:52

Bei mir geht auch mit RealURL alles bestens. Prüfe mal deine special values und diese hier „&L=1 || &L=0 || &L=2“. vielleicht stimmen die ID´s nicht?!?!

Grüße,
Tim

Tim Lochmüller am 10. Januar 2009 um 12:09

Ich habe das nur verdreht mit den IDs (Absicht).
Ich habe es mittlerweile auch mit fertigen Extensions versucht, das Problem scheint nicht der TS zu sein, da die Problematik überall auftritt. Kann das darin liegen, dass meine TS Bedingung
„[globalVar = GP:L = 1]“ immer greift?
Hier mal ein Link zu meinem Problem, was vielleicht zusammenhängt: http://www.typo3.net/forum/list/list_post//85626/

desiser am 10. Januar 2009 um 16:12

Ich habe das Problem nun gelöst. Lang daran, dass ich Kommentare im TypoScript hatte und TS damit nicht klar kam.

desiser am 15. Januar 2009 um 19:24

Hi und vielen Dank für das coole Script. Ich möchte es gerne in einer grösseren TYPO3 installation einbauen. Leider habe ich auch das Prob, dass die nicht übersetzte Sprache trotzdem angezeigt wird (das flag wird mit dem link zur default-sprache gerendert). habe nun schon sämtliche spracheinstellungen überprüft, hast du evtl. noch eine Idee? anbei mein TS:

temp.languagenav = HMENU
temp.languagenav {
special = language
special.value = 0,2,3
special.normalWhenNoLanguage = 0
wrap = |
1 = TMENU
1 {
noBlur = 1

NO = 1
NO {
linkWrap = |
stdWrap.override = {$flag.us} || {$flag.de} || {$flag.fr}
doNotLinkIt = 1

stdWrap.typolink.parameter.data = page:uid
stdWrap.typolink.additionalParams = &L=0 || &L=2 || &L=3
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
}
ACT < .NO
ACT.linkWrap = |

USERDEF1 = 1
USERDEF1 < .NO
USERDEF1.linkwrap = –|–

USERDEF2 = 1
USERDEF2 < .ACT
USERDEF2.linkwrap = oo|oo
}
}

ich krieg den zustand userdef1 oder -2 einfach nicht hin (btw. die oo und — sind nur als nonsense output), special.normalWhenNoLanguage = 0 scheint auch nicht zu helfen.

danke im voraus
hagi

Hagi am 20. Februar 2009 um 18:34

Danke für den tollen Code, hat mir sehr geholfen 🙂

@ Björn Reichert
das liegt dann höchstwahrscheinlich an deiner RealUrl Configuration, musst Du dann noch um die entsprechen Sprachen erweitern.

Cody am 08. April 2009 um 22:25

also ich versuche grade krampfhaft herauszufinden wie ich die Sprachnavigation mit bei der Sprachauswahl per Domain zum laufen bekomme.

meine realurlconfig sieht so aus:

// Host abfragen und getVar setzen:
switch(t3lib_div::getIndpEnv(‚HTTP_HOST‘)){
case ‚www.domain.de‘;
$_GET[‚L‘] = 0;
break;
case ‚www.domain.es‘;
$_GET[‚L‘] = 1;
break;
case ‚www.domain.co.uk‘;
$_GET[‚L‘] = 2;
break;
case ‚www.domain.nl‘;
$_GET[‚L‘] = 3;
break;
case ‚www.domain.it‘;
$_GET[‚L‘] = 4;
break;
case ‚www.domain.fr‘;
$_GET[‚L‘] = 5;
break;
}

$TYPO3_CONF_VARS[‚EXTCONF‘][‚realurl‘] = array(
‚_DEFAULT‘ => array(
‚init‘ => array(
‚enableCHashCache‘ => 1,
‚appendMissingSlash‘ => ‚ifNotFile‘,
‚enableUrlDecodeCache‘ => 1,
‚enableUrlEncodeCache‘ => 1,
),
‚preVars‘ => array(
array(
‚GETvar‘ => ‚L‘,
‚valueMap‘ => array(),
’noMatch‘ => ‚bypass‘,
),
),
‚pagePath‘ => array(
‚type‘ => ‚user‘,
‚userFunc‘ => ‚EXT:realurl/class.tx_realurl_advanced.php:&tx_realurl_advanced->main‘,
’spaceCharacter‘ => ‚-‚,
‚languageGetVar‘ => ‚L‘,
‚expireDays‘ => 7,
‚disablePathCache‘ => 0,
‚rootpage_id‘ => 130,
),
),
);

und ich teile den Domains im TS die entsprechenden Sprachen zu:

config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
config.htmlTag_langKey = de

# English language, sys_language.uid = 2
[globalString = ENV:HTTP_HOST=www.domain.co.uk]
page.config{
baseURL = http://www.domain.co.uk/
sys_language_uid = 2
language = en
locale_all = en_EN
htmlTag_langKey = en
}
[global]

# French language, sys_language.uid = 5
[globalString = ENV:HTTP_HOST=www.domain.fr]
page.config{
baseURL = http://www.domain.fr/
sys_language_uid = 5
language = fr
locale_all = fr_FR
htmlTag_langKey = fr
}
[global]

# Spain language, sys_language.uid = 1
[globalString = ENV:HTTP_HOST=www.domain.es]
page.config{
baseURL = http://www.domain.es/
sys_language_uid = 1
language = es
locale_all = es_ES
htmlTag_langKey = es
}

[global]

# Italian language, sys_language.uid = 4
[globalString = ENV:HTTP_HOST=www.domain.it]
page.config{
baseURL = http://www.domain.it/
sys_language_uid = 4
language = it
locale_all = it_IT
htmlTag_langKey = it
}
[global]
# Niederländisch language, sys_language.uid = 3
[globalString = ENV:HTTP_HOST=www.domain.nl]
page.config{
baseURL = http://www.domain.nl/
sys_language_uid = 3
language = nl
locale_all = nl_NL
htmlTag_langKey = nl
}
[global]

ich komme an der Stelle grade einfach nicht weiter… Bin für jeden Tip sehr dankbar

neuz8 am 30. Juli 2009 um 22:54

Der USERDEF1-Zustand „greift“ ja nur nicht, weil das so konfiguriert ist.

Links auf unübersetzte Seiten können so ganz einfach abgeschaltet werden (oder anderweitig angepasst)

USERDEF1
}

Vielen Dank für den tollen Schnipsel!

Urs am 21. September 2009 um 16:33

Danke, habe ich 1.1. übernommen und hat für vier Sprachen wunderbar funktioniert.

Martin Terber am 23. November 2009 um 01:18

Spannendes Stück Code… dazu aber die Frage bevor ich das einbaue: ist denn das Problem gelöst, dass bei Seiten die in eine bestimmte Sprache nicht übersetzt sind eben diese Sprache dennoch im Menü erscheint?
Der Vorschlag von neuz8 vom 30. Juli 2009 ist mir leider nicht zugänglich… (fehlt da was?)
Vielen Dank für jede Art von Hilfe!

Peter am 06. April 2010 um 12:45

Haudey,

ich war auf der Suche nach einer besseren Lösung, als die mit der „languageMenu.php“ bekannten Version 1.6. Dein Codeschnipsel habe ich ein wenig verändert, da ich kein Textbasierendes Manü benutzen wollte, sondern direkt ein Grafisches mit den bekannten Fahnen. Das ganze läuft bei mir mit realURL und zwei Sprachen.

lib.langmenu = HMENU
lib.langmenu {
# Ein Sprach-Menü wird erzeugt
special = language
# Reihenfolge und Auswahl der Sprachen im Menü
special.value = 0,1
special.normalWhenNoLanguage = 0

# Grafisches Menü anstelle eines Textbasierten
1 = GMENU
1 {
# Hauptwrap
wrap = |
NO = 1
NO {
wrap = |
# XY = Breite,Höhe
XY = 20,12
5 = IMAGE
# Wenn es mehrere Sprachen gibt, dann durch ein weiteres logisches Oder mit || verknüpfen
5.file = fileadmin/templates/images/de.gif || fileadmin/templates/images/gb.gif
}
# Hier kommt der bekannte Pfeil 🙂
# „ACT“ erbt von „NO“ und „wrap“ wird überschrieben
ACT < .NO
ACT = 1
ACT {
wrap = |
}
}
}

Beste Grüße
Damian

Damian am 12. April 2010 um 18:43

Hallo an Alle,
ich versuche gerade ein Sprachwechsler als dropdown zu bauen.
Das muß nichts besonderes sein.
Kann mir jemand helfen :-)?
Ich habe keinen Lösungsansatz ;-(
Danke und Grüße

Ralph am 13. April 2010 um 13:30

@Sareen Millet

Zitat (am 10. Januar 2008 um 21:07):
stdWrap.typolink.additionalParams = &L=1 || &L=0&no_cache=1 || &L=2

Gibt es inzwischen eine elegantere Lösung für das Problem beim Language-Switch zurück zur Standardsprache?

Danke, Johannes

Johannes Scherg am 27. September 2010 um 16:35

@Martin Terber
Damit das Menü nicht übersetzte Seiten erst gar nicht zum drauf klicken anzeigt muss folgendes ergänzt werden:

# NO + Übersetzung nicht vorhanden
USERDEF1
# ACT + Übersetzung nicht vorhanden
USERDEF2

Felix Nagel am 25. Oktober 2010 um 18:28

Na, super. Den ganzen TS code gefressen. Guckst du hier: http://pastebin.com/KDj9ASe1

Felix Nagel am 25. Oktober 2010 um 18:31

Auch wenn das hier schon eine Weile alt ist – Wer auf der Suche ist, wie man das L=0 weg bekommen kann – hier eine Lösungsmöglichkeit mit Einsatz von RealURL:

http://pastebin.com/xhFKJ2q0

Simon Schick am 08. Februar 2011 um 13:48

Ich habs benötigt mit GMENU, habs dazu nur wenig angepasst und folgendes Snippet kam dabei raus: http://pastebin.com/xmSQbB7J

Josef Florian Glatz am 02. Mai 2011 um 07:19

@Martin Terber
Um den Link bei nicht übersetzten Seiten wegzubekommen folgende Zustände eintragen:
USERDEF1

USERDEF2

Dominic am 09. Mai 2011 um 05:05

Das Sprachmenü funktioniert prima – nur stört mich ein kleiner W3C Fehler, nämlich dass bei mir (ich nutze RealUrl) bei der Standard-Sprache Deutsch der Link leer ist.

Martina am 06. September 2011 um 16:57

@Martina:
Wenn du das Problem noch hast, schau dir mal die Doku zu RealURL an …

http://typo3.org/documentation/document-library/extension-manuals/realurl/1.11.2/view/1/2/

Ich würde den Wert „emptyUrlReturnValue“ auf true oder „/“ setzen (letzteres ist bei einem Auftritt mit mehreren Domains zu empfehlen).

Soweit meine Erfahrungswerte damit.

Simon Schick am 06. September 2011 um 21:52

@Simon
Danke das funktioniert.

Bei unserem Projekt haben wir 6 Seitensprachen. Ist es möglich, das TS so einzustellen das man nur die Sprachen sieht, die auch in der Seite genutzt werden?
Sprich wenn z.b. nur Deutsch und Englisch für die Seite benutzt werden Italienisch, Französisch etc nicht im Sprachmenü angezeigt werden (ohne das man das Menü jedes mal dafür anpassen muss.)?

Martina am 07. September 2011 um 09:16

@Martina:
Vielleicht ist das hier die Lösung nach der du suchst: http://labs.zeroseven.de/development/typo3/seite-verbergen-wenn-keine-ubersetzung-fur-die-aktuelle-sprache-vorhanden-ist/

Das Sprachmenu wirst du wohl oder übel noch mal anfassen müssen. Dort wirst du wahrscheinlich folgenden Code benötigen (nicht getestet):

# No wrap
USERDEF1.linkwrap >
USERDEF1.stdWrap >
# Remove the a-tag
USERDEF1.doNotLinkIt = 1
# Remove the rest of the text created for this item
USERDEF1.stdWrap.override =

USERDEF2 < .USERDEF1

Oder etwas ähnliches. Probieren ist erlaubt – räum aber nachdem es funktioniert deinen Code wieder auf 🙂

Simon Schick am 07. September 2011 um 11:51

Vielen Dank. Habe lange danach gesucht und etliche Male selbst versucht. Hatte es selbst nie so hinbekommen, dass der URL Pfad nur in der Zielsprache ausgegeben wird. Endlich! Danke.

Richard am 07. Juli 2014 um 17:49
Trackbacks & Pingbacks

[…] Lochmüller hat auf seinem TYPO3-Blog ein paar interessante Zeilen TypoScript veröffentlicht, die ein Sprachmenü realisieren, das bis auf die Sprach-Variable alle Variablen, die der […]

Pingback von Sprachmenü für TYPO3 | TYPO3 Metablog am 16. September 2007 um 21:31

[…] Typo3 Wiki [2] Frontend Localization Guide auf Typo3.org [3] TSref – TypoScript Reference [4] Sprachmenü in Typo3 Voraussetzungen: Typo3 4.x Einsatz von TemplaVoila für das […]

Pingback von [Be el o ge] » Blog Archive » Typo3 Internationalisierung - Best Practice am 10. Oktober 2007 um 09:47

[…] […]

Pingback von Sprachumschaltun am 11. März 2013 um 20:37

[…] […]

Pingback von Sprachenlinks am 02. Dezember 2014 um 20:28

Kategorien

Archiv