Zum Inhalt springen

One-Tree - Vier Sprachen - Möglich?

Erstellt am 19. Oktober 2005 · 3 Antworten · letzte Antwort am 26. Oktober 2005

Tags: Frage

jalali ·

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=|&amp;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=|&amp;L=1">German</a>
page.10.marks.PRINT.wrap = <a href="index.php?id=|&amp;L=2&amp;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

sirwylm ·

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

kaip ·
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!