---
title: "realurl und die sprachumschaltung"
url: "https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung"
source: "typo3.net"
tags: ["TYPO3","Mehrsprachigkeit","Frage","RealURL"]
created: "2004-07-12"
last_reply: "2005-11-16"
replies: 42
solved: false
page: 1
pages: 1
lang: "de"
---

# realurl und die sprachumschaltung

TYPO3 › Mehrsprachigkeit · 42 Antworten · gestartet 2004-07-12

## Eröffnungsbeitrag

**doku** · 2004-07-12 · [Beitrag #1](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/1)

kurze, aber **wichtige** frage:

hat hier irgendjemand (schon) die sprachumschaltung über das language.php-skript (bei den meisten wird es ja mit den flaggen verwendet) in verbindung mit der realurl-extension hinbekommen?

ich meine hier ganz konkret die möglichkeit innerhalb einzelner seiten umzuschalten. daß mit dem skript auf die startseite in der alternativen sprache umgelenkt wird, ist kein problem.

## Antworten

### [#2](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/2) · AFisch · 2004-07-20

Ach, das ist ja Lustig. ich dachte du weisst wie es geht :-)

Gruß AFisch

### [#3](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/3) · doku · 2004-07-20

ja, du hast recht, meine bemerkung in einem anderen thread läßt darauf schließen, aber da hatte ich bei dem dortigen beispiel nicht genau genug hingeguckt... :o

### [#4](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/4) · AFisch · 2004-07-20

Also, das hat mir jetzt keine Ruhe gelassen :-)

Also, erstmal

#config.linkVars = L

Die L Var im Setup auskomentieren, das dieses Konstrukt weg ist.

Dann mit einer kleinen Anpassung im Lang Menu die Url umschreiben:

```php
$flags[] = '<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=2&ch_lang=1').'"  onfoc.......

//Wurde Flag angeklickt
if($_GET['ch_lang']=="1") {
	
	$domain=$_SERVER['HTTP_HOST'];
	$url_2go=$_SERVER['REQUEST_URI'];
	
	$url_2go=str_replace('&ch_lang=1','',$url_2go);
	$url_2go = preg_replace("/?id=(d+)&L=(d+)/","",$url_2go);
	
	//Und ab in die Wüste mit der hässlichen Url
	header('location: http://'.$domain.$url_2go);
}
```

Kann durchaus sein, das hier und da ein Fehler passiert. Ist nicht getestet und stellt nur eine Idee dar.

Gruß Holger

### [#5](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/5) · AFisch · 2004-07-20

Und noch ein kleiner Nachtrag.

Obige Lösung greift leider nicht wegen dem Seiten Cache.

Folgendes schafft Abhilfe:

```php
$flags[] = '<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0&ch_lang=1&no_cache=1')....

[.....]
$url_2go = preg_replace("/?id=(d+)&L=(d+)&no_cache=1/","",$url_2go);
[.....]
```

Nachteil ist halt, das die Seite dann in dem Momant nicht aus dem Cache kommt. Aber wer schön sein will muss leiden :-)

Gruß AFisch

### [#6](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/6) · doku · 2004-07-21

hi, leider leider gips eine fehlermeldung

```plaintext
Warning: Cannot modify header information - headers already sent by (output started at /typo3_src-3.6.1/typo3/sysext/cms/tslib/index_ts.php:433) in /html/fileadmin/scripts/language-realurl.php on line 82
```

die sich genau auf die wichtigste zeile bezieht

```plaintext
//Und ab in die Wüste mit der hässlichen Url 
   header('location: http://'.$domain.$url_2go);
```

o.O

der komplette beispielcode sieht übrigens jetzt so aus. vielleicht hab ich es ja auch völlig falsch "eingebaut"...?

```php
<?php

$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'];
}

$pointer = '<img src="t3lib/gfx/content_client.gif" width="7" height="10" align="middle" alt="" />';

$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0&ch_lang=1&no_cache=1').'" target="_top"><img src="media/uploads/flag_uk.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';

$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=1&ch_lang=1&no_cache=1').'" target="_top"><img src="media/uploads/flag_de'.($langArr[1]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';

if($_GET['ch_lang']=="1") {

   $domain=$_SERVER['HTTP_HOST'];
   $url_2go=$_SERVER['REQUEST_URI'];

   $url_2go = str_replace('&ch_lang=1','',$url_2go);
   $url_2go = preg_replace("/?id=(d+)&L=(d+)&no_cache=1/","",$url_2go);

   //Und ab in die Wüste mit der hässlichen Url
   header('location: http://'.$domain.$url_2go);
}

$content = '<table border="0" cellpadding="0" cellspacing="0"><tr><td><img src="clear.gif" width="30" height="1" alt="" /></td><td>'.implode('',$flags).'</td></tr></table>';

?>
```

### [#7](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/7) · AFisch · 2004-07-21

> Warning: Cannot modify header information - headers already....

Nein, Eingebunden hast du es sicherlich nicht falsch. Wie gesagt, das mit dem Header senden ist ein böser Hack. Wahrscheinlich hast du irgend ein Extension in deiner Installation drin, die vor dem header in langMenu.php schon etwas an den Browser sendet. Dann kommt nähmlich die Fehlermeldung s.o.  Kann unter Umständen auch an den Einstellungen von PHP liegen.

Tja, also bei meinem Projekt funktioniert das so. Aber für eine bessere und sicherere Lösung muss man da wohl RealUrl an der entscheidenden Stelle patchen. Nur da ist kein Quick Hack drin, das muss man richtig machen.

Werd mich in einer ruhigen Minute mal hinsetzen und das entwursteln.

Gruß AFisch

### [#8](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/8) · doku · 2004-07-21

wenn du dir tatsächlich die mühe machen solltest (und realurl wird bestimmt auf kurz oder lang zu den gebräuchlichsten extensions gehören) möchte ich gerne eine information an dich weiterleiten. ich hatte die frage nämlich auch schon in der typo3.org-mailingliste gepostet und da hat ingmar schlecht (der auch an der t3-entwicklung mitarbeitet) folgendes geantwortet:

> **Ingmar Schlecht schrieb:**
>
> Kleiner Tipp:
> Du musst die Datei language-menu.php so ändern, dass die Funktion typolink aus der Datei class.tslib_content.php zum Erstellen des Links verwendet wird.
>
> Siehe auch:
> <http://typo3.org/documentation/mailing-lists/user-list-archive/thread/62/?tx_maillisttofaq_pi1%5Bmode%5D=5>
>
> und
>
> <http://typo3.org/documentation/mailing-lists/user-list-archive/thread/66/?tx_maillisttofaq_pi1%5Bmode%5D=5>

das wäre sicherlich die sauberste lösung, ich kann aber nunmal leider kein stück php...

### [#9](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/9) · AFisch · 2004-07-21

Danke für den Hinweis.

Werd das ganze mal den Debuger laufen lassen. Ich muss nur die Stelle finden, an der die Url im Seiten-Cache landet.

Wenn ich das gefunden habe muss ich mal sehen, wie man das am besten da rein strickt. Soll ja unter allen Umständen funktionieren.

Gruß AFisch

### [#10](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/10) · AFisch · 2004-07-21

So, der nächste Hack :-)

An deine Url im Lang Menu wie gehabt diesen Parameter "&ch_lang=1" anhängen:

```html
<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0&ch_lang=1').'"  onfo.......
```

und in Zeile 616 in "typo3conf/ext/realurl/class.ux_tslib_fe.php" folgendes einfügen was in //HH-Hack einkommentiert ist:

```php
[....]
$result = array();
      
      //HH-Hack
      if(preg_match("/ch_lang=1/",$uri))
      $uri = preg_replace("/?id=(d+)&L=(d+)&ch_lang=1/","",$uri);
      //HH-Hack ende
      
$parsed = parse_url($uri); // Let PHP do the first run
[....]
```

Danach Cache und die real_url Tabelle leeren und Testen.

Feedback erwünscht.

Gruß AFisch

### [#11](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/11) · doku · 2004-07-21

das klappert hervorragend!

eine klitzkleine änderung wäre da noch wünschenswert:
die url hört ja nun mit einem slash auf.
besteht eine möglichkeit, abschließend noch ein "index.html" dranzuhängen? dann würde nämlich die jeweilige seite in meiner statistikauswertung nicht als eigenständige version ein und derselben seite gezählt.

die endversion sollten wir dann auch in deinem namen entweder in den "howto-bereich" auf typo3.org stellen.
-> <http://typo3.org/documentation/mailing-lists/user-list-archive/?tx_maillisttofaq_pi1%5Bmode%5D=5>

...oder besser noch gleich an den realurl-urheber schicken?

### [#12](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/12) · AFisch · 2004-07-21

> besteht eine möglichkeit, abschließend noch ein "index.html" dranzuhängen?

Das ist etwas schwieriger. Das Ding wird weggeparst und dann beim automatischen Umwandeln der Url für einen Link wieder dazugepackt.

Das würde dann doch etwas tiefer in realurl eingreifen. Und ich denke das die Besucher deiner Seite nicht so oft auf den Language Button rumhämmern werden.

Werd mir das morgen nochmal ansehen, vieleicht gehts ja doch einfacher als es im Moment aussieht.

Wenn du willst kannst du das ja dem Autor von Real Url mailen. Namen brauchst du nicht dazu tun. So ein kleines Script ist doch keine Leistung :-)

Gruß AFisch

### [#13](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/13) · doku · 2004-07-21

ok, hier also die zusammenfassung für alle anderen zum mitschreiben... ;)

zwei (beispiel)versionen einer angepaßten **example_languageMenu.php**. sie dienen zum "seitengenauen" umschalten bei einer one-tree-fits-all umsetzung von mehreren sprachversionen einer website bei verwendung der **extension realurl**:

da wäre zum einen die klassische version mit den flaggen, die ja standardmäßig von typo3 mitgeliefert wird. hier mit english als id=0 und deutsch als id=1

```php
<?php
/***************************************************************
*  Copyright notice
*
*  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*  A copy is found in the textfile GPL.txt and important notices to the license
*  from the author is found in LICENSE.txt distributed with these scripts.
*
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

$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'];
}

$pointer = '<img src="t3lib/gfx/content_client.gif" width="7" height="10" align="middle" alt="" />';

$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0&ch_lang=1').'" target="_top"><img src="media/uploads/flag_uk.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';

$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=1&ch_lang=1').'" target="_top"><img src="media/uploads/flag_de'.($langArr[1]?'':'_d').'.gif" width="21" height="13" hspace="5" border="0" alt="" /></a>';

$content = '<table border="0" cellpadding="0" cellspacing="0"><tr><td><img src="clear.gif" width="30" height="1" alt="" /></td><td>'.implode('',$flags).'</td></tr></table>';

?>
```

zum anderen eine version, die textlinks liefert ("deutsch", bzw. "english"). es wird dabei immer nur ein link angezeigt (logischerweise nur der, der zur jeweils anderen sprache führt... ;)).

```php
<?php
/***************************************************************
*  Copyright notice
*
*  (c) 1999-2003 Kasper Skårhøj (kasper@typo3.com)
*  All rights reserved
*
*  This script is part of the Typo3 project. The Typo3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*  A copy is found in the textfile GPL.txt and important notices to the license
*  from the author is found in LICENSE.txt distributed with these scripts.
*
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

$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"];
}

$english = '[<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=0&ch_lang=1').'">english</a>]';
$deutsch = '[<a href="'.htmlspecialchars('index.php?id='.$GLOBALS['TSFE']->id.'&L=1&ch_lang=1').'">deutsch</a>]';

$flags = array();
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==0?$deutsch:"");
$flags[] = ($GLOBALS["TSFE"]->sys_language_uid==1?$english:"");

$content = '<div style="position: absolute; text-align: right; right:0px; width:200px; height:15px; background-color:#ffffff;" class="language">'.implode("",$flags).'</div>';

?>
```

ich hatte hier übrigens einfach keinen bock **$flags** umzubenennen. es gibt natürlich keine flaggen...

alles funktioniert aber nur dann so schön, wenn man folgende änderung in **typo3conf/ext/realurl/class.ux_tslib_fe.php** (ungefähr zeile 616) macht

```php
[....] 
$result = array(); 
      
      //HH-Hack 
      if(preg_match("/ch_lang=1/",$uri)) 
      $uri = preg_replace("/?id=(d+)&L=(d+)&ch_lang=1/","",$uri); 
      //HH-Hack ende 
      
$parsed = parse_url($uri); // Let PHP do the first run 
[....]
```

nochmals großen dank an AFisch! :)

### [#14](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/14) · Bladerunner · 2004-08-12

Danke Euch beiden ,

stand vor dem selben Problem und mit euren Codes hier ,funzt es jetzt wunderbar  :D

### [#15](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/15) · jenses · 2004-08-19

Funktioniert auch bei mir hervorragend mit 3 Sprachen.
Vielen Dank !

Ein kleines Problem gibt es jedoch :

Die EXT: Language Detection, die vorher automatisch die
entsprechende Startseite aufrief, je nachdem welche Sprache im Browser eingestellt war,
machts nicht mehr !

Habt ihr irgendwelche Tips dazu ?

mit freundlichen Grüßen
jenses

### [#16](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/16) · AFisch · 2004-08-19

Hy Jenses

Versuch mal in deinem TS-Template folgendes.

config.linkVars = L

und schau ob es dann wieder geht. Wenn nicht, muss ich mal in die Ext reinschauen.

Gruß AFisch

### [#17](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/17) · jenses · 2004-08-19

Hy AFisch,
das war ja 'ne schnelle Antwort !

Das config.linkVars = L habe ich natürlich im Template,
sonst würde ja auch die ganze Sprachumschaltung nicht laufen.

Das Problem muß woanders liegen,
vermutlich in der EXT: Language Detection.

viele Grüße
jenses

### [#18](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/18) · AFisch · 2004-08-19

Nein, brauchen tut man die bei RealUrl nicht. Bei mir gehts auch ohne. Und aus dem Grund; versuch es mal ohne.

Ansonsten wird da wohl was bei der zusammenarbeit der beiden Ext durch den kleinen Patch falsch laufen.

Die EXT: Language Detection macht nähmlich am Ende der main() Funktion folgendes:

```plaintext
header('Location: '.$locationURL.'&L='.$L);
```

Und dann kommt unser RealUrl Patch daher und schmeisst das doch gleich wieder raus.

```php
$uri = preg_replace("/?id=(d+)&L=(d+)&ch_lang=1/","",$uri);
```

Wird man nicht viel machen können so auf die schnelle.

Gruß AFisch

Edit: Hast du schon mal die RealURL Tabelle geleert?

### [#19](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/19) · jenses · 2004-08-19

Hai Afisch !

Danke für deine Mühe !

Also,
die config.linkVars = L habe ich auskommentiert,
real_url-Tabelle geleert, alle Chaches geleert,
Ergebnis:
EXT: Language Detection läuft nicht,
es wird immer Standardsprache Schwedisch aufgerufen.
Da kann man wohl nichts machen.

Gibt´s irgendeine andere Möglichkeit,
dem Zuschauer seine Sprachseite zu servieren ?

viele Grüße
jenses

### [#20](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/20) · AFisch · 2004-08-19

Rein theoretisch könnte man die Aufgabe der Spracherkennung einem externen index.php übertragen, das dann jeweils die von Typo3 richtig anspricht.

Das kann aber nicht die Lösung sein. Ich werd mich mal ran machen, wenn ich Zeit dazu finde. Im Moment siehts da aber mau aus. Kunden sind wie Wölfe. Die kommen immer im Rudel hab ich bald das Gefühl. *Nicht das ich mich beklagen würde* :-)

Gruß AFisch

### [#21](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/21) · jenses · 2004-08-19

Hallo AFisch!

Hab gerade festgestellt, das tt_news,
wenn man zur Single-Ansicht will,
schon die richtige Meldung aufruft,
aber das Template der Standardsprache benutzt
und auch auf das Standardsprachen-Menü umschaltet!

Also wieder rein mit  config.linkVars = L ,
und tt_news funzt!

Immer diese gegenseitigen Auswirkungen in T3  #evil#

viele Grüße
jenses

### [#22](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/22) · jenses · 2004-08-20

Habe Robert Lemke, dem Autoren der EXT: Language Detection,
das Problem im Zusammenhang mit dem Real-URL-Hack erläutert.
Er hats auf seine ToDo-List gesetzt.
Weiß aber nicht, wann er da was machen kann.

### [#23](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/23) · AFisch · 2004-08-20

Super!

Ist sowieso sinnvoller wenn es auf der ToDo Liste der Autoren landet, als wenn ich in dem Zeug rumpatche :-)

Gruß AFisch

### [#24](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/24) · jenses · 2004-08-21

Bin gerade am Testen meiner neuen Seite.
[ RealUrl installiert und Hack eingebaut ]
Und was muß ich da feststellen ?

Das Klick-Vergrößern von Bildern funktioniert nicht mehr !
Es öffnet sich ein neues Fenster, die aber nicht das vergrößerte Bild enthält,
sondern die komplette Seite.
Breite und Höhe des Browserfensters haben wiederum
die zum Bild passenden Abmesseungen.

1. Spracherkennung funzt nicht
2. Klick-Vergrößern funzt nicht

--->> RealURL fliegt wieder raus !

viele Grüße
jenses

### [#25](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/25) · doku · 2004-08-22

das klick vergrößern funktioniert problemlos, wenn du die .htaccess so ergänzt, daß der weg zu **showpic.php** **uploads/pics** und **/typo3temp** gewiesen wird.

### [#26](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/26) · jenses · 2004-08-22

Hallo Doku !

Wie genau müßte denn dieser Eintrag aussehen ?

So

```apacheconf
RewriteRule ^uploads/pics$ typo3/showpic.php [L]
```

funktioniert es nicht.

vielen Danke
jenses

### [#27](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/27) · doku · 2004-08-22

```apacheconf
RewriteRule .*/showpic.(php)$ showpic.php [L]
RewriteRule .*/uploads/pics/(.*)$ uploads/pics/$1 [L]
RewriteRule .*/typo3temp/(.*)$ typo3temp/$1 [L]
```

### [#28](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/28) · jenses · 2004-08-22

Vielen Dank !!
So klappts wunderbar.

viele Grüße
jenses

### [#29](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/29) · eberhardt · 2004-09-15

Hallo,

dank der tollen Beiträge von AFisch und doku habe ich unter typo3_src-3.6.2 die realurl mit mehrsprachigkeit (de,L=0/en,L=1) ans Laufen gekriegt. Dafür zunächst ein herzliches Dankeschön!!!
Zusätzlich dazu möchte ich gerne auch noch die printer-friendly version aktivieren.

Habe in meinem typo3-Template-setup zu diesem Zweck folgendes:

```typoscript
marks.PRINT = TEXT 
marks.PRINT.data = field:uid
#marks.PRINT.parameter.data = field:uid
#marks.PRINT.data = getenv: REQUEST_URI 
#marks.PRINT.wrap = <a href="|.98.html"><img src="fileadmin/images/navi/print_icon.gif" border="0" alt="print page" title="Print Version"></a>
marks.PRINT.wrap = <a href="index.php?id=|&type=98"><img src="fileadmin/images/navi/print_icon.gif" border="0" alt="print page" title="Print Version"></a>
#marks.PRINT.wrap = <a href="|&type=98" target="_blank"><img src="fileadmin/images/navi/print_icon.gif" border="0" alt="print page" title="Print Version"></a>
#marks.PRINT.wrap = <a href="|&type=98"><img src="fileadmin/images/navi/print_icon.gif" border="0" alt="print page" title="Print Version"></a>
```

habe mal die auskommentierten - vergeblich probierten Varianten - dabeigelassen.

Dieses setup gibt natürlich immer nur die deutsche Seite aus. Müsste also die Sprachvariable mit übergeben, so etwa:

```typoscript
marks.PRINT.wrap = <a href="index.php?id=|&L=0&type=98"><img src="fileadmin/images/navi/print_icon.gif" border="0" alt="print page" title="Print Version"></a>
```

für deutsch, bzw.

```typoscript
marks.PRINT.wrap = <a href="index.php?id=|&L=1&type=98"><img src="fileadmin/images/navi/print_icon.gif" border="0" alt="print page" title="Print Version"></a>
```

für englisch.

Habe auch schon den Tipp von doku versucht, die Unterscheidung zwischen die globalVars zu schreiben in dem Stil:

```typoscript
config.linkVars = L

# English language, sys_language.uid = 1
[globalVar = GP:L = 1]
config.sys_language_uid = 1
config.language = en

#---------------------------------

marks.PRINT = COA 
marks.PRINT.wrap = <a href="index.php|&type=98&L=1"><img src="fileadmin/images/navi/print_icon.gif" border="0" alt="print page" title="Print Version"></a>
[else] 
marks.PRINT.wrap = <a href="index.php|&type=98"><img src="fileadmin/images/navi/print_icon.gif" border="0" alt="print page" title="Print Version"></a>

#---------------------------------

# French language, sys_language.uid = 2
#[globalVar = GP:L = 2]
#config.sys_language_uid = 2
#config.language = fr

# Italian language, sys_language.uid = 3
#[globalVar = GP:L = 3]
#config.sys_language_uid = 3
#config.language = it

[global]
```

Klappt aber nicht.
Hat jemand eine Ahnung, wie ich sich die 3 Komponenten
vereinbaren lassen?
Danke im Voraus

Eckhard

### [#30](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/30) · eberhardt · 2004-09-15

Hat sich erledigt, habs selbst gefunden:
warum schwierig wenns, auch einfach geht mit der
make_printlink extension:

```typoscript
marks.PRINT = IMAGE 
marks.PRINT.file = fileadmin/images/navi/print_icon.gif 
marks.PRINT.postUserFunc = tx_make_printlink 
marks.PRINT.stdWrap.postUserFunc = tx_make_printlink
```

ciao

eckhard

### [#31](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/31) · user667 · 2005-06-14

Hallo,

wollte eben Euren HH-Hack einbauen, musste aber feststellen, dass es die Datei
**typo3conf/ext/realurl/class.ux_tslib_fe.php** in RealURL Version 0.3.0 nicht mehr gibt. Desweiteren haben sich wohl die Variablennamen geändert (ich habe einfach mal nen grep über das Verzeichnis gemacht).

Weiss jemand, wie man es bei der neuen Version implementiert? Womöglich habe ich ja einfach etwas übersehen.

Thx...

### [#32](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/32) · Proximo · 2005-06-16

Sorry wenn ich nicht alle Posts gelesen habe aber meine Lösung schaut einfach so aus:

# simStatic
config.simulateStaticDocuments = 1
config.simulateStaticDocuments_pEnc = md5
config.simulateStaticDocuments_addTitle=22
config.simulateStaticDocuments_pEnc_onlyP = L

MFG Proximo

### [#33](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/33) · chukks · 2005-06-28

Das verstehe ich nicht, was hat simulatestatic mit realurl zu tun??

Ich habe den selben Problem, mit realurl3. Hat jemand ein script für das sprachmenu?
Mir geht's darum dass die url freundlich bleibt auch bei Sprachumschaltung.

Danke

Gruß aus Paris

### [#34](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/34) · tymo3 · 2005-07-07

> **chukks schrieb:**
>
> Das verstehe ich nicht, was hat simulatestatic mit realurl zu tun??
>
> Ich habe den selben Problem, mit realurl3. Hat jemand ein script für das sprachmenu?
> Mir geht's darum dass die url freundlich bleibt auch bei Sprachumschaltung.
>
> Danke
>
> Gruß aus Paris

Vielleicht hilft dir das Skript von Typo3Wiki weiter.
Siehe ganz unten auf dieser Seite: <http://wiki.typo3.org/index.php/EXT/realurl/testing>

### [#35](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/35) · Unbekannter Benutzer · 2005-07-12

hat da inzwischen jemand eine funktionierende Lösung, die auch bei der 0.3er realurl Version greift? Das Wiki Skript müsste man auch erst mal debuggen scheint mir. Vielleicht hat das ja schon jemand gemacht?

Viele Grüße!
Niki

### [#36](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/36) · Unbekannter Benutzer · 2005-07-25

ok, Kollege Björn hat das Sprachauswahl PHP Skript etwas angepasst.

```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'  => '',
			'1' => '',
			'2' => ''
			);
		
$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();

$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<li><a href="'.htmlspecialchars($linkarray[0]).'" target="_top">Deutsch</a></li>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<li><a href="'.htmlspecialchars($linkarray[1]).'" target="_top">English</a></li>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==2?$pointer:'').'<li><a href="'.htmlspecialchars($linkarray[2]).'" target="_top">Francais</a></li>';

$content = implode('',$flags);
```

Im localconf das Standardteil verwenden.

Damit klappts mit der 0.3.0 Version von realurl. Zumindest bei uns :D Als Links haben wir jetzt hier Textlinks genommen aber da könnte man genauso die Flaggen einsetzen, sh. mitgeliefertes Beispiel-PHP im T3 Packerl.

Viele Grüße
Niki

### [#37](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/37) · rosiner · 2005-09-16

hallo,

vielleicht kann mir jemand von euch weiterhelfen..

ok, mit dem lang php skript von björn klappt die ausgabe schon perfekt. schön.

nur die sprache der seite schaltet nicht um. kann ja eigentlich bloß noch eine kleinigkeit sein.

was muss in das typoscript rein?

danke,
gruß,
johannes.

### [#38](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/38) · Perrin · 2005-09-22

Vielen Dank für den Code Niki. Hat bei mir wunderbar funktioniert.
Anbei noch eine kleine Änderung für das Flaggenmenu.
Hier: 2 Sprachen 0=Deutsch, 1=Englisch

```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' => '',
  '1' => ''
);

$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'];
}

$pointer = '<img src="fileadmin/language_menu_arrow.gif" width="7" height="10" alt="" />';

$flags = array();

$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars($linkarray[0]).'" target="_top"><img src="media/uploads/flag_de.gif" width="16" height="10" hspace="5" border="0" alt="" /></a>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars($linkarray[1]).'" target="_top"><img src="media/uploads/flag_uk'.($langArr[1]?" :="" _dgif="" width="16" height="10" hspace="5" border="0" alt="" /></a>';

$content = implode('',$flags);
```

### [#39](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/39) · Sid79 · 2005-10-10

also das Script oben mit den Bildern läuft bei mir nicht so
hier meine Version. Die tut, zumindest bei mir  :)

```typoscript
<?php
/***************************************************************
*  Copyright notice
*
*  (c) 1999-2004 Kasper Skaarhoj (kasper@typo3.com)
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*  A copy is found in the textfile GPL.txt and important notices to the license
*  from the author is found in LICENSE.txt distributed with these scripts.
*
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/


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' => '',
  '1' => ''
);
 
$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'];
}
 
$pointer = '<img src="fileadmin/language_menu_arrow.gif" width="7" height="10" alt="" />';
 
$flags = array();
 
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==0?$pointer:'').'<a href="'.htmlspecialchars($linkarray[0]).'" target="_top"><img src="media/uploads/flag_de.gif" width="16" height="10" hspace="5" border="0" alt="" /></a>';
$flags[] = ($GLOBALS['TSFE']->sys_language_uid==1?$pointer:'').'<a href="'.htmlspecialchars($linkarray[1]).'" target="_top"><img src="media/uploads/flag_uk'.($langArr[1]?'':'_dgif').'.gif" width="16" height="10" hspace="5" border="0" alt="" /></a>';
 
$content = implode('',$flags); 

?>
```

Die *$langarr[1*]  musste angepasst werden

### [#40](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/40) · rosiner · 2005-10-11

@sid79:

vielleicht kannst du mir helfen. irgendwas stimmt immernoch nicht. die urls und  die links werden wunderbar angezeigt, aber die seite schaltet nicht um.

was hast du denn z.b. noch für einstellungen und was steht in deinem typoscript?

gruß,
johannes.

### [#41](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/41) · rosiner · 2005-10-14

ich nochmal..

habe es mittlerweile hinbekommen. habe ewig rumgefuchtelt und nach löschen und neu anlegen hat es dann geklappt. kein plan wieso..

### [#42](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/42) · Imagine · 2005-10-18

Hi,

wie bekomme ich eigentlich bei "make_printlink" das print.gif so sauber rein, dass es auch funktioniert?
Diese Lösung hier

```typoscript
  marks.CONTENT < styles.content.get
  marks.PRINT = IMAGE
  marks.PRINT.file = fileadmin/img/print.gif
  marks.PRINT.postUserFunc = tx_make_printlink
  marks.PRINT.postUserFunc.include_post_vars = 1
  marks.PRINT.postUserFunc.target = _blank
  marks.PRINT.postUserFunc.popup =  1
  marks.PRINT.postUserFunc.windowparams = (resizable=yes,toolbar=no,scrollbars=yes,menubar=no,width=900,height=500)
  marks.PRINT.postUserFunc.windowname = printwindow
```

liefert zwar ein Bildchen. Das ist aber nicht mit einem Anker und dem entsprechenden Link zur Druckseite verbunden.
Diese Version jedoch schon

```typoscript
  marks.CONTENT < styles.content.get
  marks.PRINT = TEXT
  marks.PRINT.value = drucken
  marks.PRINT.postUserFunc = tx_make_printlink
  marks.PRINT.postUserFunc.include_post_vars = 1
  marks.PRINT.postUserFunc.target = _blank
  marks.PRINT.postUserFunc.popup =  1
  marks.PRINT.postUserFunc.windowparams = (resizable=yes,toolbar=no,scrollbars=yes,menubar=no,width=900,height=500)
  marks.PRINT.postUserFunc.windowname = printwindow
```

mit dem Nachteil, dass hier eben nur Text drinnen steht.

Grüsse

Imagine

### [#43](https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung/43) · Sid79 · 2005-11-16

das Script läuft bei mir soweit mit deutsch und englisch. Allerdings wenn ich auf engl umschalte steht nicht "en" als url Ergänzung sondern "de" in der Adressleiste!  :o
und Wenn ich jetzt noch ne Sprache erweitere mit der id3 wird immer "dk" genommen obwohl ich das nicht verwende! ich habe schon weiß Gott alles probiert und komme nicht drauf wo und wie ich das ändern kann??

---

Quelle: „realurl und die sprachumschaltung“, typo3.net, https://www.typo3.net/d/13389-realurl-und-die-sprachumschaltung
Beiträge von Mitgliedern des Forums. Bitte mit Link auf die Diskussion zitieren.
