Viennamade: mehrsprachige Web-Präsenz - optimale Lösung

Hallo liebe Forumer!

Zuerstmal will ich meine Freude über das Wiederfunktionieren des Forums zum Ausdruck bringen.

Es geht um eine viersprachige (de,en,es,fr) Web-Präsenz, die ich demnächst online stelle. Aus dem Archiv weiß ich, daß ich die Sprachenverwaltung schlecht gemacht habe. Die Grundpfeiler der Präsenz: Inhalte (Texte, Bildpfade, Menüstrukturen) sind in einer MySQL-DB, diese Inhalte können mittels eines selbst gemachten Redaktionssystem verändert werden. Das Ganze in PHP.
Zur Sprachverwaltung: Mittels der "Seilerschen Sprachermittlung" http://aktuell.de.selfhtml.org/tippstricks/php/httpsprache/index.htm wird das Sprachkürzel in die Session eingetragen und zum Abrufen der DB-Inhalte benutzt. Die URL www.xyz.at/products.php ist also für alle Sprachen identisch.
Schlecht ist das, weil Suchmaschinen nicht wissen welcher Sprache die URL zuzuordnen ist.

Wenn es nach mir geht, dann schreibe ich ein Script, welches alle PHP-Seiten durchgeht und unter www.xyz.at/de/products.php - und aliquot für die anderen Sprachen - wegschreibt.

Und wenn es nach Euch geht?

Bitte um Tipps & Belehrung,
Viennamade

  1. hi,

    Wenn es nach mir geht, dann schreibe ich ein Script, welches alle PHP-Seiten durchgeht und unter www.xyz.at/de/products.php - und aliquot für die anderen Sprachen - wegschreibt.

    Und wenn es nach Euch geht?

    wenn es nach mir geht, machst du natürlich kein wirkliches "wegschreiben der PHP-seiten" unter irgendwelchen pfaden - sondern schreibst das sprachenkürzel im "pseudo-pfad" durch mod_rewrite um und wertest es aus; deine inhalte kannst du dabei ja weiterhin aus der DB holen.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  2. Moin!

    Und wenn es nach Euch geht?

    mod_rewrite nehmen und die gewählte Sprache nicht in der Session speichern, sondern aus der angeforderten URL entnehmen.

    Sessions sollten für eine dauerhafte, nicht von den Browsereinstellungen abhängige Sprachwahl niemals notwendig sein. Wenn du sie für andere Dinge benötigst - meinetwegen. Aber nicht zum Speichern der Sprachwahl. Das sollte ausschließlich über die URL geregelt werden. Wobei du dort die Wahl hast, die Sprache im Verzeichnis am Anfang ("/de/pfad/index.html"), im Verzeichnis am Ende ("/pfad/en/index.html") oder gar als Dateiname ("/pfad/index_fr.html") einzufügen. Hauptsache, es wird nicht als URL-Parameter übergeben.

    - Sven Rautenberg

    1. Hi,

      [...] Hauptsache, es wird nicht als URL-Parameter übergeben.

      warum nicht?

      Gruss,
      Ludger

      1. Moin!

        [...] Hauptsache, es wird nicht als URL-Parameter übergeben.

        warum nicht?

        Weil Suchmaschinen das nicht so gerne mögen (wobei die sich auch an den Caching-Headern etc. orientieren - bei PHP wird standardmäßig "kein Caching" in den Headern ausgegeben, das senkt die Willigkeit der Suchmaschinen, die Seite aufzunehmen, auch erheblich). Und es sich außerdem, verglichen mit der Eleganz insbesondere der ersten Pfadvariante "/fr/pfad/..." auch nicht sonderlich gut in relativen Links weitergeben läßt, ohne dass man ständig dran denken muß, ja nicht den Parameter zu verlieren.

        Die Pfad-Sprach-Methode ist nach meiner Ansicht die beste Möglichkeit, sowohl für dynamisch generierte als auch für statische Seiten.

        - Sven Rautenberg

    2. Hallo!

      Und wenn es nach Euch geht?

      mod_rewrite nehmen und die gewählte Sprache nicht in der Session speichern, sondern aus der angeforderten URL entnehmen.

      Sessions sollten für eine dauerhafte, nicht von den Browsereinstellungen abhängige Sprachwahl niemals notwendig sein. Wenn du sie für andere Dinge benötigst - meinetwegen. Aber nicht zum Speichern der Sprachwahl. Das sollte ausschließlich über die URL geregelt werden. Wobei du dort die Wahl hast, die Sprache im Verzeichnis am Anfang ("/de/pfad/index.html"), im Verzeichnis am Ende ("/pfad/en/index.html") oder gar als Dateiname ("/pfad/index_fr.html") einzufügen. Hauptsache, es wird nicht als URL-Parameter übergeben.

      Mühsam ernährt sich das Eichhörnchen und ich will mal wissen ob ich  am rechten Weg bin:

      RewriteEngine on
      RewriteBase /
      RewriteRule /de/bla.html /bla.html

      Da für mich das Neuland ist habe ich ein paar Anfängerfragen, will wissen ob ich die Logik richtig verstanden habe.

      1. www.xyz.at/de/bla.html gibt es "physikalisch" gar nicht.
      2. --------- " ---------- ist aber, was der Anwender in der Adresszeile tippt und sieht.
      3. Die internen Verweise zielen auf /de/bla.html.
      4. Suchmaschinen finden "www.xyz.at/de/bla.html" nicht aber die tatsächlich existierende "www.xyz.at/bla.html", denn auf letztere gibt es ja keine Verweise.
      5. Die nicht existierende "/de/bla.html" soll die existierende "/bla.html" aufrufen und einen URL-Parameter, z.B. lang=DE übergeben.

      Freue mich über Eure Ja und Nein.

      Beste Grüße
      Viennamade

      1. hi,

        1. www.xyz.at/de/bla.html gibt es "physikalisch" gar nicht.
        2. --------- " ---------- ist aber, was der Anwender in der Adresszeile tippt und sieht.
        3. Die internen Verweise zielen auf /de/bla.html.
        4. Suchmaschinen finden "www.xyz.at/de/bla.html" nicht aber die tatsächlich existierende "www.xyz.at/bla.html", denn auf letztere gibt es ja keine Verweise.
        5. Die nicht existierende "/de/bla.html" soll die existierende "/bla.html" aufrufen und einen URL-Parameter, z.B. lang=DE übergeben.

        Freue mich über Eure Ja und Nein.

        ja.
        ja.
        ja.
        ja.
        ja.

        gruß,
        wahsaga

        (dir ist klar, dass das jetzt eigentlich zwei mal *LMAA* und ein mal ja ist ...? *g*)

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
      2. Hallo!

        Ich habs noch immer nicht kapiert ...

        RewriteEngine on
        RewriteBase /
        RewriteRule /de/bla.html /bla.html

        Das gefällt mir ja mal. Der Surfer tippt »/de/bla.html« und sieht »/bla.html«. Aber muß ich jetzt »/bla.html« wirklich mit einem Url-Parameter aufrufen? Kann ich das 'de' nicht auch aus dem getippten Verzeichnis rausholen?

        Bitte entschuldigt meine Ignoranz.

        Beste Grüße
        Viennamade

        1. Moin!

          Das gefällt mir ja mal. Der Surfer tippt »/de/bla.html« und sieht »/bla.html«. Aber muß ich jetzt »/bla.html« wirklich mit einem Url-Parameter aufrufen? Kann ich das 'de' nicht auch aus dem getippten Verzeichnis rausholen?

          Kann man.

          Bitte wende dich für alle Informationen, die dein Server dir über den aktuellen Request liefert, vertrauensvoll an $_SERVER, hilfsweise auch an $_ENV.

          - Sven Rautenberg

          1. Hallo Sven!

            Das gefällt mir ja mal. Der Surfer tippt »/de/bla.html« und sieht »/bla.html«. Aber muß ich jetzt »/bla.html« wirklich mit einem Url-Parameter aufrufen? Kann ich das 'de' nicht auch aus dem getippten Verzeichnis rausholen?

            Kann man.

            Bitte wende dich für alle Informationen, die dein Server dir über den aktuellen Request liefert, vertrauensvoll an $_SERVER, hilfsweise auch an $_ENV.

            OK, ich nehme $_SERVER['REQUEST_URI'].

            Herzlichen Dank,
            Viennamade

  3. Hallo!

    Danke für Eure Antworten (mod_rewrite) ...

    Ich habe keine Ahnung davon, und begann mal diese beiden Zeilen in die .htaccess zu schreiben:

    RewriteEngine on
    RewriteRule ^/{.2})/(.*) $2?lang=$1

    Die erste alleine eingetragen macht noch kein Problem, nachdem ich die 2. reingeschrieben habe, bekomme ich den Fehler
      »Server error! Error 500«

    Heißt das, daß ich kein mod_rewrite machen darf? Wenn ja, in welche Richtung kann ich noch gehen?

    Beste Grüße
    Viennamade

    1. Hi,

      RewriteRule ^/{.2})/(.*) $2?lang=$1

      Der Regex ist falsch.
      Du meinst vermutlich
      ^/(.{2})/(.*)

      oder einfacher:
      ^/(..)/(.*)

      cu,
      Andreas

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. hi,

      Heißt das, daß ich kein mod_rewrite machen darf?

      frag deinen provider, ob du es nutzen darfst.

      Wenn ja, in welche Richtung kann ich noch gehen?

      in diese: http://www.drweb.de/suchmaschinen/suchmaschinen-urls.shtml

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  4. Hi Viennamade,

    Es geht um eine viersprachige (de,en,es,fr) Web-Präsenz, die ich demnächst online stelle. Aus dem Archiv weiß ich, daß ich die Sprachenverwaltung schlecht gemacht habe. Die Grundpfeiler der Präsenz: Inhalte (Texte, Bildpfade, Menüstrukturen) sind in einer MySQL-DB, diese Inhalte können mittels eines selbst gemachten Redaktionssystem verändert werden. Das Ganze in PHP.

    Das Vorhalten der Texte in einer Datenbank oder Tabelle, die editierbar ist, und ein CMS für die Übersetzer finde ich sinnvoll. Wenn die Seite stark frequentiert ist, würde ich daraus aber statische Seiten und entsprechende URLs erzeugen..

    Viele Grüße
    Mathias Bigge

    1. Hallo Mathias!

      Das Vorhalten der Texte in einer Datenbank oder Tabelle, die editierbar ist, und ein CMS für die Übersetzer finde ich sinnvoll. Wenn die Seite stark frequentiert ist, würde ich daraus aber statische Seiten und entsprechende URLs erzeugen..

      ... 1000 bis 1500 Zugriffe pro Monat sind es. Was mit Zugriffen gemeint ist, Besucher oder Hits, weiß ich nicht.

      Beste Grüße
      Viennamade

      1. Hi Viennamade,

        ... 1000 bis 1500 Zugriffe pro Monat sind es. Was mit Zugriffen gemeint ist, Besucher oder Hits, weiß ich nicht.

        Das dürfte selbst für eine lahme Kiste noch keine Probleme erzeugen, denke ich.

        Viele Grüße
        Mathias Bigge

        1. Hallo,

          ... 1000 bis 1500 Zugriffe pro Monat sind es. Was mit Zugriffen gemeint ist, Besucher oder Hits, weiß ich nicht.
          Das dürfte selbst für eine lahme Kiste noch keine Probleme erzeugen, denke ich.

          Ab wann sollte man so was in erwägung ziehen?

          Grüße
          Jeena Paradies

          --
          Welterbe Forum - neues Projekt geht online
          http://jeenaparadies.de/weblog/2004/august/worldheritage-forum/
          Spammer jetzt beim Arbeitsamt
          http://jeenaparadies.de/artikel/arbeitsamt-spammer/
          1. Hi Jeena,

            ... 1000 bis 1500 Zugriffe pro Monat sind es. Was mit Zugriffen gemeint ist, Besucher oder Hits, weiß ich nicht.
            Das dürfte selbst für eine lahme Kiste noch keine Probleme erzeugen, denke ich.
            Ab wann sollte man so was in erwägung ziehen?

            Schwierige Frage. Es gibt sicher verschiedene Parameter:

            • Welche Hardware steckt hinter dem Rechner?
            • Ist der Zugriff auf die Datenbank irgendwie begrenzt?
            • Wie lange läuft das Script?
            • Wie sehr ist der Server durch Datenübertragung
                belastet?

            Oder anders herum:

            • Machen dynamische Seiten irgendeinen Sinn oder sind
                die Inhalte de facto statisch?

            Am schnellsten ist es immer, statische Seiten komprimiert auszuliefern.

            Ich mache gerade selber eine Übersetzung in mehrere Sprachen und hab's rein statisch abgewickelt. Ich weiß nicht, ab welcher Datenmenge sich eine dynamische Version rechnet. Der Nachteil bei meiner simplen Lösung war, dass ich vergessen hatte, dem ersten  Übersetzer die Texte unter der Haube mitzuliefern (keywords, title-tags, Kurzbeschreibung, Sprachkürzel), Gott sei Dank war es Englisch, bei Türkisch und Chinesisch wird mir das nicht passieren, aber solche Dummheiten kann man ja auch bei Datenbanken anstellen *g*

            Viele Grüße
            Mathias Bigge

  5. Hallo!

    Wenn es nach mir geht, dann schreibe ich ein Script, welches alle PHP-Seiten durchgeht und unter www.xyz.at/de/products.php - und aliquot für die anderen Sprachen - wegschreibt.
    Und wenn es nach Euch geht?

    Ich möchte mich bei allen Thread-Teilnehmern bedanken. Heute morgen hatte ich noch keine Ahnung von mod_rewrite, jetzt reichts für mein Problem https://forum.selfhtml.org/?t=88483&m=527635.

    Danke,
    Viennamade

  6. Hallo Wiederum!

    Ist die optimale Lösung für eine mehrsprachige Seite nicht viel einfacher? Nämlich Seitennamen für die jeweiligen Sprachen:

    products.php - für en
    produits.php - für fr
    produkte.php - das ist deutsch ;-)

    Deswegen auch optimal, weil die Seitenbezeichnung ja der beste aller Suchbegriffe sein soll?

    Vielleicht geht dieses Schema auf riesengroßen Seiten mangels Organisierbarkeit nicht, auf meiner aber würde es gehen.

    Danke für Euer Feedback!
    Viennamade

    1. Hi,

      Ist die optimale Lösung für eine mehrsprachige Seite nicht viel einfacher? Nämlich Seitennamen für die jeweiligen Sprachen:
      products.php - für en
      produits.php - für fr
      produkte.php - das ist deutsch ;-)

      Dann mußt Du nicht nur die sichtbaren Inhalte ändern, sondern auch die Links, nachdem Du z.B. eine deutsche Seite übersetzen willst.

      Außerdem gibt es einige Fälle, in denen die Worte nicht unterschiedlich geschrieben sind - so daß zusätzlich auch getrennte Verzeichnisse benötigt werden. Z.B.:
      Ist contact französisch oder englisch?
      Ist index Deutsch oder Englisch oder Französisch?

      cu,
      Andreas

      --
      MudGuard? Siehe http://www.Mud-Guard.de/
      Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
      1. Hallo!

        Ist die optimale Lösung für eine mehrsprachige Seite nicht viel einfacher? Nämlich Seitennamen für die jeweiligen Sprachen:
        products.php - für en
        produits.php - für fr
        produkte.php - das ist deutsch ;-)

        Dann mußt Du nicht nur die sichtbaren Inhalte ändern, sondern auch die Links, nachdem Du z.B. eine deutsche Seite übersetzen willst.

        Ja, das packe ich noch in Redaktionsystem rein!

        Außerdem gibt es einige Fälle, in denen die Worte nicht unterschiedlich geschrieben sind - so daß zusätzlich auch getrennte Verzeichnisse benötigt werden. Z.B.:
        Ist contact französisch oder englisch?
        Ist index Deutsch oder Englisch oder Französisch?

        Kommt Zeit kommt Rat ;-)

        Also ich bin begeistert! Ganz einfach wegen der Suchbegriffe die sich aufgrund der Links ergeben.

        Danke Andreas!
        Viennamade