Zum Inhalt springen

Fähnchen bleibt grau

Erstellt am 24. Juni 2003 · 3 Antworten · letzte Antwort am 22. September 2006

Tags: Frage

loremIpsum ·

Liebe Leute

Ich habe jetzt den ganzen (heissen) Tag mit dem Versucht verbracht, meine Site mehrsprachig aufzubauen. Dabei konnte ich einige "Etappen"-Erfolge verbuchen aber ins Ziel hats mir noch nicht gereicht.

Nebst jweilands und Kaspars Tutorial hab ich mich durch sämtliche Foren-Threads durchgeackert und habe das Gefühl, alles richtig gemacht zu haben, aber trotzdem scheint die Site die alternative Sprache nicht zu erkennen.

Nun aber Schritt für Schritt:
Default-Sprache ist Deutsch.
Als Alternativ-Sprache habe ich im Page-Root Englisch eingerichtet. In der Datenbank ist diese Sprache in der "sys_language" mit der UID "2" vertreten.
Einen alternativen Page Record konnte ich erfolgreich erstellen und sehe jetzt im Pagecontent den deutschen (Default) und den englischen (English) Eintrag.
Die Fähnchen-Sprachauswahl habe ich mit einem externen PHP-Script (welches ich von Kaspar übernommen und auf meine Bedürfnisse angepasst habe) included. Der Code sieht so aus:

<?php
 // First, select all pages_language_overlay records on the current page. Each represents a possibility for a language.
$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"];
}

// 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=german and 2=german is SPECIFIC to this database, because these numbers refer to uid's of the table sys_language)
$pointer = '<img src="t3lib/gfx/content_client.gif" width="7" height="10" align=middle>';

// 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();
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==0?$pointer:"").'<a href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=0" target=_top><img src="media/uploads/flag_de.gif" width="21" height="13" hspace=5 border="0"></a>';
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==2?$pointer:"").'<a href="index.php?id='.$GLOBALS["TSFE"]->id.'&L=2" target=_top><img src="media/uploads/flag_uk'.($langArr[2]?"":"_d").'.gif" width="21" height="13" hspace=5 border="0"></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 = '<table border=0 cellpadding=0 cellspacing=0><tr><td><img src=clear.gif width=30 height=1></td><td>'.implode("",$flags).'</td></tr></table>'; 
?>

Im Template-Setup habe ich die erforderlichen Zeilen wie folgt eingefügt:

page = PAGE
page.typeNum = 0
page.stylesheet = fileadmin/tpl/styles.css
page.bodyTag = <body bgcolor="#010066" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
page.ATagParams = class="textLink"
page.ACTTagParams = class="textLinkAct"

page.10 = TEMPLATE
page.10.subparts.CONTENT < styles.content.get
page.10 {
   template = FILE
   template.file = fileadmin/tpl/tpl_start.htm
   workOnSubpart = DOCUMENT_BODY

# include php language script   
   marks.LANGNAVI = PHP_SCRIPT
   marks.LANGNAVI.file = fileadmin/tpl/scripts/language.php

   subparts.MAINNAVI = HMENU
   subparts.MAINNAVI.minItems = 5
   subparts.MAINNAVI.maxItems = 5
   subparts.MAINNAVI.1 = TMENU
   subparts.MAINNAVI.1.noBlur = 1
   subparts.MAINNAVI.1.expAll = 0

   subparts.MAINNAVI.1.NO {
     allWrap = <td width="80" background="fileadmin/tpl/images/nav_bg_passiv.gif" valign="bottom"> | </td><td>&nbsp;</td>
     linkWrap = <center> | </center>
     ATagParams = class="mainNavi"
     ACTTagParams = class="mainNaviAct"
   }
  subparts.MAINNAVI.1.ACT < subparts.MAINNAVI.1.NO
  subparts.MAINNAVI.1.ACT = 1
  subparts.MAINNAVI.1.ACT {
     allWrap = <td width="80" background="fileadmin/tpl/images/nav_bg_aktiv.gif" valign="bottom"> | </td><td>&nbsp;</td>
     linkWrap = <center> | </center>
     ATagParams = class="mainNavi"
     ACTTagParams = class="mainNaviAct"
   }


   subparts.SUBNAVI = HMENU
   subparts.SUBNAVI.entryLevel = 1
   subparts.SUBNAVI.1 = TMENU
   subparts.SUBNAVI.1.noBlur = 1
   subparts.SUBNAVI.1.expAll = 0
   subparts.SUBNAVI.1.NO {
      allWrap = <tr> <td width="25" height="20">&nbsp;</td> <td height="20"> | </td></tr>
      ATagParams = class="subNavi"
      ACTTagParams = class="subNaviAct"
   }
 # Setting up the language variable "L" to be passed along with links 
   config.linkVars = L 
  
 # English language, sys_language.uid = 2 
   [globalVar = GP:L = 2] 
   config.sys_language_uid = 2 
   config.language = en 
   [global]
}

Nun habe ich gehofft, ich könne einfach auf die Fähnchen klicken und munter zwischen den Sprachen hin und her switchen, aber dem ist nicht so...
Das englische Fähnchen wird auch bloss grau dargestellt, was gemäss Kasper bedeutet, dass die Sprache nicht erkannt wird.

Was mache ich Falsch...? Ich sehs nicht mehr. Kann mir jemand helfen? Ich würde mich auch gerne erkenntlich zeigen und mich mit einem kühlen Bier revanchieren...[/list]

jweiland ·

Noch ein kleiner Tipp, falls das Fähnchen grau bleibt, obwohl man sonst (fast) alles richtig gemacht hat (und fremdsprachigen Content erstellt hat):

Die Flagge bleibt grau, wenn die entsprechende übersetzte Seite im page header als "hidden/versteckt" markiert ist.

Dafür gibt es dann im Admin-Panel die Option, auch versteckte Seiten anzuzeigen - also das Panel am besten immer mit implementieren (config.admPanel = 1)

Jetzt ist es Zeit für ein kühles Bier (Pils, bitte)

Jochen Weiland

loremIpsum ·

aaaarghh... soooo einfach!!

Es klappt und ich bin mega happy! Vielen Dank... da hatte es einfach zu viele Bäume im Wald :o

Das Bier hast Du Dir redlich verdient - gib mir Bescheid wenn Du das nächste Mal in Zürich bist!

Php_Diver ·

hallo jweiland,

ich habe genau das gleiche problem. leider bin ich in der bedienung des be noch ein anfänger.
das hier verstehe ich leider nicht:

Dafür gibt es dann im Admin-Panel die Option, auch versteckte Seiten anzuzeigen - also das Panel am besten immer mit implementieren (config.admPanel = 1)

ich arbeite mit der typo3_4 version.

wie und wo genau stelle ich das ein.

danke