Niels: Änderung einer URL

Hallo Forum,
ich hoffe Ihr könnt mir weiterhelfen

Mein Problem: Ich habe eine Seite einer deutschen und einer englischen Version. Die verschiedenen Versionen liegen in folgenden Ordnern:
deutsche Seite:  "/projekt/index.html"
englische Seite: "/projekt/engl/index.html"

Die Seite besteht aus zwei Frames. Ein rechter Frame "Inhalt", in dem sämtliche Seiten angezeigt werden, und ein linker Frame "Navigation", der das Navigationsmenü enthält. In diesem linken Frame habe ich einen Button zur Umschaltung der Sprache. Bisher verlinkt dieser Button auf die "index.html"-Datei des jeweils anderen Sprachordners (der linke Frame wird dann mittels JavaScript in anderer Sprache nachgeladen). Das Problem hierbei ist nun, daß ich bei Umschaltung der Sprache nicht auf die Seite "index.html", sondern auf die jeweils entsprechende Seite in der anderen Sprache gelangen will.

Meine Idee: Im Frame "Navigation" wird bei Umschaltung der Sprache ein Skript aufgerufen, welches die aktuelle URL des Frames "Inhalt" liest und diese URL dann so verändert, daß die gleiche Seite entweder aus dem normalen Ordner "/projekt/" oder dem Unterordner "/projekt/engl/" gelesen wird. Also, beispielsweise Veränderung der URL "/projekt/test.html" zu "/projekt/engl/test.html" (und umgekehrt).

Mein Versuch:
function sprache() {
 var url = parent.Inhalt.location.href;
 if (url.indexOf("/projekt/")!=-1) {
  url=url.replace(/projekt/,"/projekt/engl");
 } else {
  url=url.replace(/engl/,"../");
 }
 document.location.href=url;
}

Leider funktioniert das nicht richtig und ich bin nicht Fachmann genug, um den Fehler zu entdecken. Für jede Idee bin ich sehr dankbar.

Gruß, Niels

  1. Hi,

    Bisher verlinkt dieser Button auf die "index.html"-Datei des jeweils anderen Sprachordners (der linke Frame wird dann mittels JavaScript in anderer Sprache nachgeladen).

    doppelt unschön: 1. dürfte dann ohne Javascript ja wohl überhaupt keine Navigation vorhanden sein und 2. hast Du ja schon selbst entdeckt:

    Das Problem hierbei ist nun, daß ich bei Umschaltung der Sprache nicht auf die Seite "index.html", sondern auf die jeweils entsprechende Seite in der anderen Sprache gelangen will.

    Meine Idee: Im Frame "Navigation" wird bei Umschaltung der Sprache ein Skript aufgerufen,

    Wodurch sich ohne Javascript nichts tut? Das geht auch besser:

    a) Du verlinkst von der deutschen Navigation auf die englische index-Datei; diese sollte aber ein Frameset sein, welches die englische Navigation und die englische Startseite lädt.

    b) Du hängst mittels Javascript an den Sprachlink die url der anzuzeigenden Inhaltsseite. Dieser Parameter wird dann vom - hoffentlich schon vorhandenen - Nachladescript ausgewertet und die entsprechende Seite eingebunden.

    freundliche Grüße
    Ingo

    1. Hallo,

      a) Du verlinkst von der deutschen Navigation auf die englische index-Datei; diese sollte aber ein Frameset sein, welches die englische Navigation und die englische Startseite lädt.

      b) Du hängst mittels Javascript an den Sprachlink die url der anzuzeigenden Inhaltsseite. Dieser Parameter wird dann vom - hoffentlich schon vorhandenen - Nachladescript ausgewertet und die entsprechende Seite eingebunden.

      Schon mal herzlichen Dank für die Vorschläge. Punkt a ist bei mir erfüllt. Ich habe allerdings das Problem, daß ich nicht den richtigen Pfad erstellen kann. Ich möchte ja in einen vorhandenen Link einen Unterordner einfügen, so daß z.B. "projekt/test.html" geändert wird in "projekt/engl/test.html" (bzw. auch umgekehrt). Mein Skript sieht folgendermaßen aus:

      function sprache()
      {
      parent.Inhalt.location.href= location.pathname + "engl" + location.hash;
      }

      So funktioniert das aber nicht. Ich habe auch nirgends gefunden, wie man beim "pathname" die Datei wegläßt, d.h. wie man zwischen Pfad und eigentlicher Datei unterscheiden kann.

      Ich bin für jede Idee dankbar. Viele Grüße

      Niels

      1. Hallo Niels

        ... Ich möchte ja in einen vorhandenen Link einen Unterordner einfügen, so daß z.B. "projekt/test.html" geändert wird in "projekt/engl/test.html" (bzw. auch umgekehrt).

        Schau dir mal replace() an, das könnte dir helfen.

        Auf Wiederlesen
        Detlef

        --
        - Wissen ist gut
        - Können ist besser
        - aber das Beste und Interessanteste ist der Weg dahin!
      2. Hi,

        a) Du verlinkst von der deutschen Navigation auf die englische index-Datei; diese sollte aber ein Frameset sein, welches die englische Navigation und die englische Startseite lädt.

        Punkt a ist bei mir erfüllt.

        sicher? ich lese in

        Bisher verlinkt dieser Button auf die "index.html"-Datei des jeweils anderen Sprachordners (der linke Frame wird dann mittels JavaScript in anderer Sprache nachgeladen).

        etwas anderes, nämlich, daß es ohne Javascript keine Navigation gibt.

        Ich möchte ja in einen vorhandenen Link einen Unterordner einfügen, so daß z.B. "projekt/test.html" geändert wird in "projekt/engl/test.html" (bzw. auch umgekehrt).

        wieso?
        Wenn Du /projekt/engl/index.html?test.html aufrufst, dann brauchst Du keinen Pfad mehr.

        Mein Skript sieht folgendermaßen aus:

        function sprache()
        {
        parent.Inhalt.location.href= location.pathname + "engl" + location.hash;
        }

        wie gesagt: ohne Javascript keinerlei Funktion. Dein Weg ist verkehrt.

        freundliche Grüße
        Ingo

        1. Moin moin,

          Punkt a ist bei mir erfüllt.

          sicher? ich lese in

          Bisher verlinkt dieser Button auf die "index.html"-Datei des jeweils anderen Sprachordners (der linke Frame wird dann mittels JavaScript in anderer Sprache nachgeladen).

          Doch: die index-Datei definiert das Frameset. Mein Script bewirkt, daß beim Aufruf der sonstigen Dateien dieses Frameset nachgeladen wird (entweder das deutsche oder das englische), also genau "/projekt/engl/index.html?test.html". Tut mir leid, aber da hatte ich mich nicht klar ausgedrückt.

          Ich möchte ja in einen vorhandenen Link einen Unterordner einfügen, so daß z.B. "projekt/test.html" geändert wird in "projekt/engl/test.html" (bzw. auch umgekehrt).
          wieso?
          Wenn Du /projekt/engl/index.html?test.html aufrufst, dann brauchst Du keinen Pfad mehr.

          Leider schaffe ich es bisher noch nicht, eine solche Datei aufzurufen, d.h. in den jeweils unter- bzw. übergeordneten Ordner zu springen und in diesem die Datei gleichen Namens aufzurufen. Ich habe schon mit replace() herumprobiert, hatte bisher aber noch keinen Erfolg. Zudem machen mir noch die Browser zu schaffen: ich teste die Seiten in Firefox und in Safari, wobei das Ergebnis leider unterschiedlich ausfällt.

          Nochmals vielen Dank für die Ideen. Gruß,

          Niels

          1. Hi,

            Wenn Du /projekt/engl/index.html?test.html aufrufst, dann brauchst Du keinen Pfad mehr.

            Leider schaffe ich es bisher noch nicht, eine solche Datei aufzurufen, d.h. in den jeweils unter- bzw. übergeordneten Ordner zu springen und in diesem die Datei gleichen Namens aufzurufen. Ich habe schon mit replace() herumprobiert, hatte bisher aber noch keinen Erfolg.

            Der Aufruf erfolgt ja zunächst über einen ganz normalen HTML-Link, also (wenn Du im Verzeichnis /projekt/ bist: <a href="engl/index.html">. Über Javascript müßtest Du nun den Parameter anhängen. Dazu könntest Du links verwenden und zum Auslesen der anzuhängenden Datei location und hier den Dateinamen über die String-Funktionen extrahieren.

            freundliche Grüße
            Ingo