Sven Rautenberg: mehrsprachige Homepage

Beitrag lesen

Moin!

ich habe seit längerem eine Homepage, die ich nun gern auch in englisch und spanisch anbieten möchte.

Ich verwende bereits PHP.
Der content wird zum Teil einer DB entnommen.

Wie geh ich da am besten vor ?

Vergiss Sessions! (Sorry, Jungs, aber Sessions sind bei Sprachauswahl das letzte, was mir dazu einfällt - aus diversen Gründen, die ich hier gerne auseinanderdrösele).

Ausgangspunkt deiner Überlegungen sollte sein (er war es bei meiner Überlegung jedenfalls): Was macht der Besucher? Was kriegt der zu sehen, wie kann er die Sprache wählen, und wie kann man ihm das Leben leicht machen?

Fangen wir mal ganz hinten an: Das Leben leicht machen geht durch Automatik. Eigentlich jeder Browser sendet die bevorzugte Sprache seines Benutzers mit. Auf diese Weise kann man für den Deutschen Deutsch, für den Engländer Englisch und für den Spanier Spanisch auswählen. Diese Sprachinformation findet man bei PHP in $_SERVER['HTTP_ACCEPT_LANGUAGE']. Da steht, durch Komma separiert, eine Liste, welche Sprachen bevorzugt werden.

Es gibt dazu einen Tipp&Trick für PHP von Christian Seiler, der dir die ganzen Überlegungen "Was ist, wenn ich keine passende Sprache habe" etc. abnimmt: http://aktuell.de.selfhtml.org/tippstricks/php/httpsprache/index.htm.

Ok, nun hast du als Ergebnis also eine Sprache, die du tatsächlich anbietest und die der Benutzer bevorzugt - oder die du zumindest als Standard festgelegt hast, wenn nichts paßt.

Mein Standard ist dann, dass sich diese Sprache in der URL widerspiegelt:
www.example.com/de/...
www.example.com/en/...
www.example.com/es/...

Die Startseite www.example.com/index.php hat, basierend auf der Browserangabe, dabei nur die Aufgabe, den Benutzer auf die Startseite des passenden Unterverzeichnisses zu leiten.

Unterhalb dieses Verzeichnisses spielt sich dann ein einzelner Sprachauftritt ab.

Die Sprache wechseln kann man, indem man auf die Startseite der jeweils anderen Verzeichnisse verlinkt. Und wenn man es tatsächlich leisten kann, dann linkt man nicht einfach blind auf die Startseite, sondern auf die identische Seite der anderen Sprache - dazu muß man natürlich identische Seiten haben.

Sowas läßt sich als Billig-Lösung ganz einfach einbauen, indem du deine bisherigen Skripte einfach kopierst und dreimal auf der Website hast.

Die bessere Version wäre, dass du die URL per Rewriting alle auf _einen_ Verzeichnisbaum mappst und dann mit PHP die URL auswertest und herausfindest, welche Sprache gewünscht ist. Das kannst du dann meinetwegen dynamisch in DB-Abfragen einbauen.

Du mußt dir nur etwas (meinetwegen ein paar Ausnahmeregelungen) für Sachen wie Bilder einfallen lassen, die nicht aus der DB kommen, aber je Sprache trotzdem unterschiedlich sind, weil sie z.B. Text enthalten.

Welche Vorteile hat diese URL-Vorgehensweise?

1. Suchmaschinen haben damit kein Problem. Da alle Sprachvarianten als parameterlose URL zur Verfügung stehen (mal davon abgesehen, was man mit PHP-Krams sonst noch so macht), werden alle Sprachvarianten indiziert. Die Startseite gibt einen Redirect aus, der auch für die Suchmaschinen nicht schädlich ist und mutmaßlich auf der definierten Standardsprache landet, und von dort aus ist einerseits die jeweilige Sprach-Site verlinkt, als auch die Wechsel-Links zu den anderen Versionen vorhanden. Die Suchmaschine kommt also überall hin.

2. Durch die dynamische Auswertung der Browserinformation kommt der Besucher meistens auf die von ihm gewünschte Sprache.

3. In den Fällen, in denen man bei dieser Automatik falsch rät, kann der Besucher diese Entscheidung _ohne Sessions_ mit einem Klick ändern. Man muß die Entscheidung _gegen_ die Automatik also nicht selber irgendwie speichern, weil sie in der URL schon gespeichert wird.

4. Die so entstehenden URLs sehen auch noch vernünftig aus.

Bis auf die Automatik-Auswahl wird solch ein URL-Sprachwahl-Mechanismus mittlerweile häufig genutzt, beispielsweise bei www.php.net und www.mysql.com für die Sprachvarianten der Dokumentation.

- Sven Rautenberg

--
"Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
(fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)