Hi, hab mal versucht aus der GMenu vorlage (referenz) für die Sprachwahl als Textlinks mit TMenu umzusetzen.
leider Zeigt mir das ding jetzt immer die aktuellen Seitennamen in den jeweiligen sprachen an, und nicht "deutsch | english", schön wärs auch den link zu entfernen wenn die sprache keine übersetzung hat (deutsch ist standard). Wäre nett wenn mir da mal einer helfen könnte 😉
hier mal mein TS-code
languageMenu = HMENU
languageMenu.special = language
languageMenu.special.value = 0,2
languageMenu.1 = TMENU
languageMenu.1.NO {
5 = text
5.value = deutsch || english
}
#languageMenu.1.ACT < lib.langMenu.1.NO
#languageMenu.1.ACT=1
#languageMenu.1.ACT.color = red
languageMenu.1.USERDEF1 < lib.languageMenu.1.NO
languageMenu.1.USERDEF1=1
languageMenu.1.USERDEF1.5.text = deutsch || english
languageMenu.1.USERDEF1.noLink = 1
und hier mal das original mit flaggen-bildern
lib.langMenu = HMENU
lib.langMenu.special = language
lib.langMenu.special.value = 0,1,2
lib.langMenu.1 = GMENU
lib.langMenu.1.NO {
XY = [5.w]+4, [5.h]+4
backColor = white
5 = IMAGE
5.file = media/flags/flag_uk.gif || media/flags/flag_fr.gif || media/flags/flag_es.gif
5.offset = 2,2
}
lib.langMenu.1.ACT < lib.langMenu.1.NO
lib.langMenu.1.ACT=1
lib.langMenu.1.ACT.backColor = black
lib.langMenu.1.USERDEF1 < lib.langMenu.1.NO
lib.langMenu.1.USERDEF1=1
lib.langMenu.1.USERDEF1.5.file = media/flags/flag_uk_d.gif ||media/flags/flag_fr_d.gif || media/flags/flag_es_d.gif
lib.langMenu.1.USERDEF1.noLink = 1
Unter TYPO3 3.8.0 gibts dafür sowas
Bild: alpha-online.org/…/sprache.jpg
Danke alphaonline 🙂
ich glaub ich hab mich missverständlich ausgedrückt...
was ich machen will, ist das flaggenmenü zur sprachwahl deutsch | english durch textlinks zu ersetzen.
und wenn keine übersetzung vorhanden ist soll statt dem link halt nur text dort stehen.
Ich arbeite auf meinen betreuten Seiten mit dem Script my_languageMenu.php,
da geht das problemlos !
Voraussetzung: in meinen Templates existiert ein Marker ###LANGUAGE###
und das Script liegt im Ordner /fileadmin/scripts/
Als erstes im root-Template-SETUP vor der PAGE-Konfiguration die Sprachen und dazugehörige Einstellungen festlegen (ist sowieso immer gut ;-) )
###############################################
# Konfiguration der Sprachen
###############################################
# Standardsprache deutsch wird festgelegt
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
date_stdWrap.strftime = %d. %B %Y
time_stdWrap.strftime= %H:%M
###############################################
# die Variable zur Sprachauswahl wird definiert
config.linkVars = L
###############################################
# die verschieden Seiten-Sprachen werden definiert
# Deutsch, sys_language.uid = 0
[globalVar = GP:L = 0]
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
date_stdWrap.strftime = %d. %B %Y
time_stdWrap.strftime= %H:%M
[global]
# English language, sys_language.uid = 1
[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = en
config.locale_all = english
date_stdWrap.strftime = %d of %B %Y
time_stdWrap.strftime= %I:%M %p
[global]
### ENDE SPRACHUMSCHALTUNG #######################
Dann innerhalb der PAGE-Konfiguration:
### SPRACHUMSCHALTUNG
LANGUAGE = PHP_SCRIPT
LANGUAGE {
file = fileadmin/scripts/my_languageMenu.php
}
aber wie kann ich die template editiern ?
Hey danke 😉
klar die mit den flaggen hab ich auch am laufen,... problemlos.
Und du benutzt das mit textlinks?
aber die eigentliche intension war dieses (extra dafür gemachte) HMenü zum laufen zu kriegen... dachte ich mir so.
aber wie kann ich die template editiern ?
stev ich glaube das du hier zum einen falsch bist und zum anderen solltest du mal deine fragen etwas ausführlicher stellen.
Sprachmenü mit Textlinks (bzw. nurtext wenn keine übersetzung)
hab mal dieses php-script etwas modifiziert,.. nicht sehr elegant, aber es funktioniert für meine bedürfnisse...
<?php
if (!is_object($this)) die ('Error: No parent object present.');
// First, select all pages_language_overlay records on the current page. Each represents a possibility for a language.
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'pages_language_overlay', 'pid='.intval($GLOBALS['TSFE']->id).$GLOBALS['TSFE']->sys_page->enableFields('pages_language_overlay'), 'sys_language_uid');
$langArr = array();
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
$langArr[$row['sys_language_uid']] = $row['title'];
}
// Little red arrow, which is inserted to the left of the flag-icon if the TSFE->sys_language_uid equals the language uid (notice that 0=english, 1=danish and 2=german is SPECIFIC to this database, because these numbers refer to uid's of the table sys_language)
// 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();
//////* default sprache */
$flags[] = '<a globals="" tsfe-="">sys_language_uid==0?' class="lgactive" ':' ').' href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0').'" target="_top"> deutsch </a>';
//////* alternative sprache (language id 2 bei mir) */
$flags[] =(
$langArr[2]?'<a globals="" tsfe-="">sys_language_uid==2?' class="lgactive" ':' ') .
'href="'.
htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id .'&L=2').
'" target="_top">':' '
) .
'english' .
($langArr[2]?'</a>':'');
// Make the little menu. Notice, the menu does ONLY transfer the page-id and the "L" variable (which is also SPECIFIC for this website because "L" has been used in the extension template used to control the language setup)
//$content = implode('',$flags);
$content = '<div id="language">'.implode('',$flags).'</div>';
?>
greeetz chris
Mensch warum verwendet Ihr das PHP Script wenn es extra ein Menutyp gibt #angry#. Das einzige was ich noch herausfinden muss, ist wie ich den Blöden Titel des Menuelements ändern kann...
ja mensch, die antwort ist so simpel aber verherend: weil der menütyp mir nicht das liefert was ich will; die 2 wörter deutsch und english.
falls du weißt wie, lass uns teil haben an deinem wissen
gruß chris
mit PHP languageselect ist das schon ganz gut, nur manchmal hats seine Tücken (z.B. beim target in frames, aber wer mag schon frames ...).
Bei dem Menü, Du könntest einfach das Menüskript für jede Sprache kopieren, entsprechende Links der aktuellen Sprache deaktivieren, Linkbezeichnungen übersetzen etc.. Dann über [globalVar = GP:L=XXX] die kopierten und lokalisierten Menüskripts je nach aktiver Sprache ein-/ausschalten.
Viele Grüße
Niki
um diese flaggen in die texte "deutsch" und "englisch" zu verwandeln. musst du einfach nur die datei "my_languageMenu.php" öffnen und ein paar zeilen ändern.
nämlich (hier ist englisch die defaultsprache, deswegen L=0):
$flags[] = '<td><a href="index.php?id='.$GLOBALS['TSFE']-">id.'&L=0" target="_top">ENGLISCH</a></td>';
$flags[] = '<td><a href="index.php?id='.$GLOBALS['TSFE']-">id.'&L=5" target="_top">DEUTSCH</a></td>';
ich habe ein problem mit dem TMENU. meine sprachauswahl, geht super bei GMENU, aber nicht bei TMENU. es wird einfach diesen blöde L nicht mehr übertragen....
hat jemand eine idee?
gruß
swinda
ok, ich habs. ich hatte in meinem gmenu:
doNotShowLink = 1
dann wird L nicht übertragen.
das einzige problem ist jetzt noch meine suche. ich habe ein suchfeld, dass auf jeder seite (also im template) vorhanden ist.
<form action="IDsuche.html?tx_indexedsearch[sword]" method="get">
<input name="tx_indexedsearch[sword]" type="text">
<!--Suche nach Wortteil-->
<input type="hidden" name="tx_indexedsearch[type]" value="1">
<!--Suchwörter UND-->
<input type="hidden" name="tx_indexedsearch[defOp]" value="0">
</form>
IDsuche ist hierbei die ID der suchseite.
es wird immer zu meiner suchseite mit der defaultsprache verlinkt. also kein L übertragen.
wenn ich auf der suchsiete selbst bin, dann kann ich problemlos über die flaggen umschalten.
??????????????????????????????????????????????????????????????????????????????????????????eine idee?
das einzige problem ist jetzt noch meine suche. ich habe ein suchfeld, dass auf jeder seite (also im template) vorhanden ist.
entweder übergibst du einfach das L mit als hidden fild oder parst den vorhandenen url-string ab dem ? zurück in den neuen url.
bei realurl mußt du das sprachzeugs mit dem L in der localconf.php in /typo3conf definieren
Hi,
Vergiß my_languageMenu.php
bei mir klappt das mit ganz normal im TMENU mittels:
NO.stdWrap.override = English || Deutsch
Dann erscheinen jedenfalls nicht die Title der Seiten.
Ooops sehe gerade dass Deine Frage vom letzten Jahr ist .....
Trotzdem danke,
mir hat Deine Antwort nochmals ein Jahr später geholfen
beste Grüße
Sareen
Hey,
das ganze geht auch mit nem Standartmenu von Typo3 und einem subpart.
# Languagemenu
#######################################
subparts.LANGMENU = HMENU
subparts.LANGMENU {
special = language
special.value = 0,1,2
1 = TMENU
1 {
wrap = <p id="langmenu"> | </p>
NO {
stdWrap.cObject = TEXT
stdWrap.cObject {
value = English || Deutsch || Française
}
doNotLinkIt = 0
linkWrap = | Ι |*||*| |
}
ACT < .NO
ACT = 1
ACT {
doNotLinkIt = 1
linkWrap = <b> | </b> Ι |*||*| |
}
}
}
Ausgabe
English | Deutsch | Française
Bei mir läuft das ganze damit super. Aktuell probier ich noch ein wenig herum, aber im großen und ganzen ist es schonmal recht okay.
Leider wird auch ein Link angezeigt, wenn keine Übersetzung vorhanden ist.
Wenn noch wer Fragen oder Verbesserungen hat, könnt ihr euch gern bei mir melden! 😉
Grüße,
Aldarin
Hallo,
über diese Webseite http://typo3blogger.de/sprach-menu/ wurde ich auf den gloreichen Tip "stdWrap.override = [en] || [de] || [fr]" gebracht :p
So sieht das ganze bei mir wie folgt aus (in kombination mit yamlTv):
temp.languageMenu >
temp.languageMenu = COA
temp.languageMenu.stdWrap.prefixComment = 2|Output of lib.header.5
temp.languageMenu.10 = HMENU
temp.languageMenu.10.wrap = <div id="languageMenu">|</div>
temp.languageMenu.10.special = language
temp.languageMenu.10.special.value = 0,1,2
temp.languageMenu.10.special.normalWhenNoLanguage = 0
temp.languageMenu.10.1 = TMENU
temp.languageMenu.10.1.NO.allWrap = | - |*||*| |
temp.languageMenu.10.1.NO.stdWrap.override = [Deutsch] || [Englisch] || [Französisch]
lib.teaser.20 > # schaltet das yaml langMenü mit Flaggen aus
lib.header.5 < temp.languageMenu # bindet das neue Text Menü im Header ein
Ein bisschen CSS damit mir das rechts oben angezeigt wird
div#languageMenu { float: right; height:25px; margin: 20px 20px 0px 0px; color: #000000; }
Gruß
Info
hallo,
auch wenn diese beiträge schon etwas äter sind, hoffe ich auf eine antwort.
ich beziehe mich auf die antwort von "Aldarin".
das menü habe ich eingebaut und es funktioniert.
jetzt würde ich gern statt den text 2 simple flaggen-grafiken benutzen.
wie baue ich das ein?
danke
hi vielleicht kann mir einer helfen ich hab das problem das zwar die Codes am ende der URL funzen aber die language-icons bzw. flaggen nicht angezeigt werden.
ich hab das problem hier geschildert: http://www.typo3forum.net/forum/typo3-4-x-fragen-probleme/53667-sprach-flaggen-angezeigt.html#post176421