Ordnerwechsel durch Linkklick - Seite beibehalten

Hallo!

Erstmal entschuldigung für den seltsamen Titel, mir fiel nichts besseres ein um mein Problem zu beschreiben.

Ich habe meine Website in deutsche und englische Version geteilt. Dabei befindet sich alles für die deutsche Version im Ordner 'de' und alles für die englische im Ordner 'en'. Im Kopfbereich der Seite soll man nun via Klick auf die deutsche/englische Flagge die Sprache wechseln. Dabei soll aber die gleiche Seite (nur halt in der anderen Sprache) erscheinen, wie zuvor.

Beispiel: ich befinde mich auf '.../de/impressum.php' und möchte die Sprache auf Englisch umstellen. Wie kann ich nun die englische Flagge verlinken, sodass einfach nur der Ordner 'de' zu 'en' geändert wird und ich mich danach auf '.../en/impressum.php' befinde?

Liebe Grüße
Markus
 
Dazu müsstest du den angeforderten URL-Pfad ($_SERVER['REQUEST_URI']-Variable) zerlegen (etwa mithilfe der parse_url()-Funktion) und anschließend angepasst wieder zusammensetzen.
 
Mhm, danke erstmal. Mir ist klar dass ich mit

<a href="<? $_SERVER['REQUEST_URL'] ?>">Link</a>

die aktuelle URL auslesen kann. Zerteile ich diese mit parse_url() wird mir ja der Pfad ausgegeben, z.B.

/Web/de/index.php

Wie aber kann ich jetzt erreichen, dass in dem Link das 'de' zu 'en' geändert wird?
 
Es ist besser wenn „/de/“ durch „/en/“ ersetzt wird, da es so unwahrscheinlicher zu einer ungewollten Ersetzung kommt. Die Variable $_SERVER['REQUEST_URL'] gibt es übrigens nicht.
 
Entweder bin ich zu blöd dafür oder es funktioniert nicht ...

Sieht bei mir jetzt so aus:

<a href="<? parse_url($_SERVER['REQUEST_URL']); echo str_replace("/de/", "/en/", "/Web/de/index.php"); ?>"

Aber jetzt verlinkt auch die deutsche Flagge in den 'en' Ordner - es wird also gar nicht richtig erkannt, wo sich die aktuelle Datei eigentlich befindet. Außerdem soll der Link sich ja für jede Seite umstellen, aber hier bezieht er sich ja nur auf die index.php ...
 
Ich hätte dann doch nich ein kleines Problem. Bei Seiten mit Fragment funktioniert der Link nicht mehr, da ja irgendwas bei der Query ausgeschlossen wird. Bekomme den Link aber nicht so modifiziert, dass es funktioniert, was muss ich denn da ändern damit auch sowas wie

index.php?catid=34

zugelassen wird?

Gruß
Markus
 
PHP:
$parsedUrl = parse_url($_SERVER['REQUEST_URI']);
echo str_replace('/de/', '/en/', $parsedUrl['path'] . (!empty($parsedUrl['query']) ? '?'.$parsedUrl['query'] : null));

Probier es mal so. Glaube da war ein kleiner Fehler drin.
 
Zurück