Karsten: Link Dateinamen verändern

Hallo,

ich habe in meinem zweisprachigen Projekt einen internen Link zur Sprachumstellung. Mein Problem ist, wenn jemand ein Suchergebnis von z.B. Google öffnet und diese Seite in der für den User falschen Sprache angezeigt wird, soll er direkt mit dem Link auf die richtige Seite geleitet werden. Diesen Link würde ich gerne automatisch generieren lassen.

Leider sind meine Dateinamen in etwa so gestaltet: blabla_dt.php für deutsch bzw. blabla_en.php für englisch.

Ist es möglich den aktuellen Dateinamen mit "basename" auszulesen und das z.B. _dt durch _en zu ersetzen?

Schonmal vielen Dank für Eure Hilfe.

Gruß,
Karsten

  1. Hallo

    Ist es möglich den aktuellen Dateinamen mit "basename" auszulesen und das z.B. _dt durch _en zu ersetzen?

    Klar. Am Beginn der Seite (des Skriptes) fragst du nach dem Dateinamen[1], fragst nach den vom Browser akzeptierten Sprachen[2], änderst _nur_ im Bedarfsfall den Dateinamen und schickst in diesem Fall nur einen Header[3], der die anderssprachige Datei lädt.

    [1] z.B. mit basename($_SERVER["SKRIPT_NAME"])
    [2] SELFHTML-Artikel Ermitteln der Sprache des Browsers
    [3] PHP-Manual: header() (bitte beachten: header braucht eine absolute URL (siehe Codebeispiel 3))

    Tschö, Auge

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    Veranstaltungsdatenbank Vdb 0.1
  2. Hallo Karsten,

    als erstes ein Tipp: benutze statt dt, de. Halte dich bei solchen Dingen am besten immer an allgemeinen Standards.

    Um aber deine Frage zu beantworten...
    Grundsätzlich würde ich die Sprache in einer eigenen Variable speichern und dann entsprechend die Dateien einbinden. So kannst du den Dateinamen aus "blabla_". $lang .".php"; automatisch einbinden.
    umdrehen kannst du es ganz simpel z.B. über eine if-Abfrage
    if ($lang = "de") {
        $thislink = "en";
    }else{
        $thislink = "de";
    }

    Dein Scriptname kannst du aber auch über $_SERVER['script_name'] auslesen, wobei hier ein etwaiger Pfad, also ein Verzeichnis mit drinsteht.
    Den String könntest du aber entsprechend mit explode("/", $_SERVER['script_name']) zerlegen und der letzte ist der Scriptname.

    Hoffe geholfen zu haben ;-)

    Gruß Patrick

  3. Erstmal Danke für die Antworten,

    da mein Projekt aber schon besteht und ich nicht meine gesamte Website umstellen möchte habe ich weiter rumprobiert.

    Folgendes ist dabei rausgekommen:

    <?PHP
    $spracheneu = basename($_SERVER["PHP_SELF"],".php");
    $array = explode('_dt', $spracheneu);
    ?>

    <a href="<?php for($x = 0; $x < count($array); $x++){ echo $array[$x]; } ?>_en.php">english

    Das script funktioniert.

    Aber, WARUM?

    Warum muß ich das array echo so programmieren? Kann ich das auch abkürzen?

    Gruß,
    Karsten