Hallo Forum,
ich habe nach der "One-Tree-Anleitung" von Robert Meyer "Praxiswissen Typo3" meine HP zweisprachig umgesetzt. Der Sprachwechsel erfolgt über eine Textlink. Alles bestens. Nun möchte ich zwei weitere Sprachen anlegen. Die Lösung mit dem Textlink hilft mir hier nicht weiter. Der Textlink wechselt nur zwischen zwei Sprachen und nicht vier.
Hat jemand eine Idee, wie man eine "mehr als zweisprachige Seite" mit der One-Tree-Lösung hinbekommt?
Hier mein TS-Code:
config.sys_language_uid = 1
config.language = de
...
######Den Sprachwechsel als Link erzeugen_Beginn######
marks.SPRACHE = TEXT
marks.SPRACHE {
field = uid
wrap = <a href="index.php?id=|&L=2">English</a>
}
######Den Sprachwechsel als Link erzeugen_Ende######
...
#######Bedingung_Mehrsprachigkeit_englisch_Beginn#######
[globalVar = GP:L=2]
config.sys_language_uid = 2
config.language = en
page.10.marks.SPRACHE.wrap = <a href="index.php?id=|&L=1">German</a>
page.10.marks.PRINT.wrap = <a href="index.php?id=|&L=2&type=1" target="î_newî">Print</a>
page.10.marks.FRIEND.wrap = <a href="index.php?id=96">Tip a friend</a>
page.10.marks.FRIEND.1.wrap = &tipUrl=http://www.jalaliundjalali.de?id=|
[global]
####### Bedingung_Mehrsprachigkeit_englisch_Ende#######
Ich würde auch eine Lösung mit grafischer Sprachweschler einsetzen (mit den schönen Flaggen). Auch hier wäre ich für einen Tip oder Verweis auf eine Lösung dankbar.
Gruß
jalali
Hi,
wenn du das sowieso einen grafischen Sprachwechsler einsetzen willst, kannst du das Sprachwechseln ja auch über ein PHP-Script lösen (ein Beispiel hierfür ist example_languageMenu.php )
Ein bißchen umgestrickt bietet es dann auch die Möglichkeit die jeweils aktive Sprache nicht klickbar zu machen, siehe folgendes Beispiel (in diesem Beispiel mit Textlinks und 3 Sprachen realisiert, du kannst es aber auch schnell für die Flaggenbilder ummodeln, und dann zB. für die aktive Sprache eine graue, nicht klickbare Fahne nehmen o.ä.):
<?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'];
}
$linkarray = array(
'0' => 'de',
'1' => 'br',
'2' => 'en'
);
$localTempl = new t3lib_TStemplate;
foreach($linkarray as $key=>$lang)
{
$LD = $localTempl->linkData($GLOBALS['TSFE']->page,
'', // $oTarget
'', // $no_cache
'', // $script
'', // $overrideArray
'&L='.$key, //.$def['uid'], // $addParams, need the & prefix to work
'0');
$linkarray[$key] = $LD['totalURL'];
}
$flags = array();
if($GLOBALS['TSFE']->sys_language_uid!=0) { $flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a class="languageLink" href="'.htmlspecialchars($linkarray[0]).'">Deutsch</a> '; } else { $flags[]='<span class="languageTextHilite">Deutsch</span> '; }
if($GLOBALS['TSFE']->sys_language_uid!=1) { $flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a class="languageLink" href="'.htmlspecialchars($linkarray[1]).'">Portuguese</a> '; } else { $flags[]='<span class="languageTextHilite">Portuguese</span> '; }
if($GLOBALS['TSFE']->sys_language_uid!=2) { $flags[] = ($GLOBALS['TSFE']->sys_language_uid==2?$pointer:'').'<a class="languageLink" href="'.htmlspecialchars($linkarray[2]).'">English</a>'; } else { $flags[]='<span class="languageTextHilite">English</span>'; }
$content = implode('',$flags);
?>
PS: obiges Script funktioniert auch mit SimulateStatic bzw. RealURL
Beste Grüße,
Wilnis
EDIT: Ach so, wenn du nicht weisst wie du das Script dann einbindest schau hier:
#30767
Hallo Wilnis,
vielen Dank für deine schnelle Antwort. Werde es gleich ausprobieren.
Besten Gruß
jalali
Language_D = TEXT
Language_D {
field = uid
wrap = <div class="LanguageCUR"><a href="index.php?id=|&L=0">DEUTSCH</a></div>
}
Language_E = TEXT
Language_E {
field = uid
wrap = <a href="index.php?id=|&L=1">ENGLISH</a>
}
Language_F = TEXT
Language_F {
field = uid
wrap = <a href="index.php?id=|&L=2">FRANÇAIS</a>
}
Language_I = TEXT
Language_I {
field = uid
wrap = <a href="index.php?id=|&L=3">ITALIANO</a>
}
[globalVar = GP:L=0]
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
page.10.marks.Language_D.wrap = <div class="LanguageCUR"><a href="index.php?id=|&L=0">DEUTSCH</a></div>
[global]
[globalVar = GP:L=1]
config.sys_language_uid = 1
config.language = en
config.locale_all = en_EN
page.10.marks.Language_E.wrap = <div class="LanguageCUR"><a href="index.php?id=|&L=1">ENGLISH</a></div>
page.10.marks.Language_D.wrap = <a href="index.php?id=|&L=0">DEUTSCH</a>
[global]
[globalVar = GP:L=2]
config.sys_language_uid = 2
config.language = fr
config.locale_all = fr_FR
page.10.marks.Language_F.wrap = <div class="LanguageCUR"><a href="index.php?id=|&L=2">FRANÇAIS</a></div>
page.10.marks.Language_D.wrap = <a href="index.php?id=|&L=0">DEUTSCH</a>
[global]
[globalVar = GP:L=3]
config.sys_language_uid = 3
config.language = it
config.locale_all = it_IT
page.10.marks.Language_I.wrap = <div class="LanguageCUR"><a href="index.php?id=|&L=3"ITALIANO</a></div>
page.10.marks.Language_D.wrap = <a href="index.php?id=|&L=0">DEUTSCH</a>
[global]
So habe ich das bei mir gelöst! Ist ne Simple (wahrscheinlich gehts kürzer, wenn ja, immer her mit Tips!) und Einfache Lösung!
Die aktive Sprache wir per CSS anderst formatiert!