[TYPO3-german] real url
Tolleiv Nietsch
tolleiv at gmx.de
Thu Apr 20 14:39:40 CEST 2006
jens holze wrote:
> hallo,
>
> ich habe eine seite erstellt, wo ich die sprachen deutsch (default) english
> und french habe . jetzt habe ich das problem, wenn z.b die französiche
> seiten noch nicht existiert, er mir einen fehler bringt, wenn ich im
> sprachmenu auf den link für french klicke. ich habe auch schon versucht die
> optionen im page.config bereich zu testen.
>
> kann mir da einer eine lösung sagen.
>
> am besten wäre es, wenn er dann die deutsch seie anzeiht. oder kann man eine
> fehler seite erstellen, die sagte das keine übersetzung angelegt wurde.
>
> jens
>
>
Hallo,
da gibt es viele Wege (ich geh mal davon aus das du die One-Tree Lösung
gewählt hast)
wichtig ist in dem Zusammenhang das du bei deiner Seite (Seitenheader)
einen Hacken bei "Verstecke Seite wenn keine Übersetzung für die
aktuelle Sprache existiert" gemacht hast und je nachdem wie du das Menü
zur Sprachumschaltung baust sollte ein Umschalten auch nur dann möglich
sein wenn eine Übersetzung der aktuellen Seite existiert.
Sobald diese Sachen gegeben sind brauchst du im Prinzip das von die
angestrebte Verhalten (bei Fehlern => Standardsprache) auch nichtmehr da
nur noch übersetzte Inhalte dargestellt werden.
Für ein Sprachmenu nehm ich das folgende Script:
<?php
$tstemp = new t3lib_TStemplate();
# alle Alternavtivsprachen suchen
$query = "SELECT * FROM pages_language_overlay WHERE
pid=".$GLOBALS["TSFE"]->id.$GLOBALS["TSFE"]->sys_page->enableFields("pages_language_overlay")."
GROUP BY sys_language_uid";
$res = mysql(TYPO3_db,$query);
$langArr=array();
while($row=mysql_fetch_assoc($res)) {
$langArr[$row["sys_language_uid"]]=$row["title"];
}
#HTML erzeugen
$languages = array();
for($i=1;$i<10;$i++)
{
if(!preg_match('/^[a-z]{2}$/',$conf[$i])) break;
$languages[$conf[$i]] = $conf[$i.'.'];
}
foreach($languages as $tag=>$element)
{
$LD = $tstemp->linkData($GLOBALS['TSFE']->page,'' /* $oTarget */,''/*
$no_cache */, ''/* $script */, ''/* $overrideArray */,
'&L='.$element['uid'] /* $addParams */, '0');
$linkCur = $LD['totalURL'];
$LD = $tstemp->linkData('','' /* $oTarget */,''/* $no_cache */, ''/*
$script */, array('L'=>$element['uid'])/* $overrideArray */, '' /*
$addParams */, '0');
$linkNull = $LD['totalURL'];
if($element['uid'] == 0 || $langArr[$element['uid']])
$flags[] = tslib_cObj::stdWrap('<a
href="'.$linkCur.'">'.tslib_cObj::stdWrap('<img
src="'.$conf['image.']['path'].$tag.$conf['image.']['postfix_found'].'"
alt="'.$element["name"].'" class="flags" title="'.$element["name"].'"
border="0"/>',$conf['image.']).'</a>',$conf);
else
$flags[] = tslib_cObj::stdWrap('<a
href="'.$linkNull.'">'.tslib_cObj::stdWrap('<img
src="'.$conf['image.']['path'].$tag.$conf['image.']['postfix_notfound'].'"
alt="'.$element["name"].'" class="flags" title="'.$element["name"].'"
border="0"/>',$conf['image.']).'</a>',$conf);
}
$content = implode("",$flags);
?>
Im TS muss dann zB folgendes stehn:
config.sys_language_uid = 0
config.language = de
config.locale_all = de_DE
[globalVar = GP:L=1]
config.sys_language_uid = 1
config.language = en
config.locale_all = english
[global]
temp.lang = PHP_SCRIPT
temp.lang.file = fileadmin/scripts/languagemenu.php
temp.lang.wrap = |
temp.lang.image.path = fileadmin/images/flags/
temp.lang.image.postfix_found = .gif
temp.lang.image.postfix_notfound = _off.gif
temp.lang.1 = de
temp.lang.1.uid = 0
temp.lang.1.name = deutsch
temp.lang.2 = gb
temp.lang.2.uid = 1
temp.lang.2.name = english
Damit wird dann die Länderflagge nur noch verlinkt wenn auch eine
Übersetzung vorhanden ist ...
Nur noch ne kurze Frage - was genau hast du dir denn bei dem Betreff
gedacht?
Gruß Tolleiv
More information about the TYPO3-german
mailing list