mehrsprachige Web-Präsenz - optimale Lösung
Viennamade
- php
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
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
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
Hi,
[...] Hauptsache, es wird nicht als URL-Parameter übergeben.
warum nicht?
Gruss,
Ludger
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
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
hi,
- www.xyz.at/de/bla.html gibt es "physikalisch" gar nicht.
- --------- " ---------- ist aber, was der Anwender in der Adresszeile tippt und sieht.
- Die internen Verweise zielen auf /de/bla.html.
- 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.
- 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*)
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
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
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
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
Hi,
RewriteRule ^/{.2})/(.*) $2?lang=$1
Der Regex ist falsch.
Du meinst vermutlich
^/(.{2})/(.*)
oder einfacher:
^/(..)/(.*)
cu,
Andreas
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
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
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
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
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
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:
Oder anders herum:
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
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
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
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
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