template

Index :: Anhang :: Multilinguale Site (Mechanismen zur Sprachauswahl)

Manche große Organisationen wie Firmen, Institute oder Universitäten bieten den Besuchern ihrer Site die Möglichkeit, die Sprache der Webseiten umzuschalten. Das Angebot und die Anzahl an alternativen Sprachen differiert je nach Heimatland und internationaler Etablierung der Betreiber und richtet sich natürlich auch nach den zu erwarteten Besuchern.
Weil die Pflege solcher Seiten recht zeitintensiv und aufgrund professioneller Übersetzung auch kostenträchtig sein kann, begnügt man sich meist mit 2 oder 3 Sprachen, wobei Englisch als Weltsprache fast immer vertreten ist. Häufig anzutreffen sind ausserdem Französisch und Spanisch.
Die Auswahl der gewünschten Sprache erfolgt i.d.R. durch Anklicken entsprechender Flaggensymbole, die im Kopf- oder Fußbereich platziert sind.

Für die Realisierung einer Sprachauswahl gibt es eine ganze Reihe verschiedener Lösungsansätze.
Der Zusatzaufwand bei der Entwicklung und Pflege mehrsprachiger Sites scheint auf den ersten Blick in simplen Übersetzungsaufgaben zu bestehen, aber gerade die Implementierung in PHP- oder Javascript-generierte Seiten ist keineswegs trivial, und oft ist eine enge Zusammenarbeit von Webdesigner und Übersetzer unerlässlich.

Methode: HTML pur

Jedes Dokument liegt in N verschiedenen statischen Versionen vor - entweder mit Sprachkennung im Namen (z.B. index_de.html und index_en.html) oder im Pfad (für jede Sprache ein Unterordner, z.B. de/index.html und en/index.html).

Typischer Verwendungszweck: Passive, textlastige Dokumente (Handbücher, Hilfeseiten, Beschreibungen), die auch offline zugänglich sein müssen.

Session-Initialisierung Meistens Anzeige einer neutralen Startseite.
Seiten-Initialisierung (ohne)
Sprachumschaltung Die entsprechende Seitenversion wird geladen.
Vorteil
  • Funktioniert ohne Javascript, also auch mit alten Browsern.
  • Funktioniert ohne PHP/MySQL, also auch offline.
  • Uneingeschränkte Verwendung von HTML-Code (z.B. <br>,<b> oder <img>).
  • Individuelle Formulierung und Gestaltung.
  • In Lesezeichen (Favoriten) ist die richtige Sprache implizit gespeichert.
Nachteil
  • Umschaltung erfordert das Neuladen einer Seite.
  • Bei einer Änderung müssen immer zwei oder mehr Seiten bearbeitet werden.
  • Keine sessionübergreifende Speicherung der Einstellung.
  • Keine strukturierten Sprachresourcen in kompakter oder zentraler Form.

Die SprachenID könnte zu Beginn per Javascript-Funktion initialisiert werden (siehe Sprache des Clients ermitteln).

Methode: Javascript pur

Jedes Dokument enthält seine Sprachresource als Javascript-Array im HEAD.

Typischer Verwendungszweck: Alle Arten von Seiten, die auch offline zugänglich sein müssen.

Siehe: Javascript :: Multilinguale Site (mit Demo)

Session-Initialisierung (ohne)
Seiten-Initialisierung SprachenID wird aus Cookie gelesen; Textfragmente werden per write() ausgegeben.
Sprachumschaltung Textfragmente werden sofort per DOM ausgetauscht.
Vorteil
  • Funktioniert ohne PHP/MySQL, also auch offline.
  • Umschaltung erfolgt in Echtzeit, ohne Neuaden der Seite.
  • Kompakte Sprachresource im Dokument.
  • Sessionübergreifende Speicherung der Einstellung (in Cookie).
  • Lesezeichen (Favoriten) bewirken die Anzeige der richtigen Sprache.
Nachteil
  • Javascript muss aktiviert sein; DOM-fähiger Browser erforderlich.
  • Cookies müssen aktiviert sein.
  • Ausgabe von HTML-Code (z.B. <br>,<b> oder <img>) umständlich.
  • Sprachresourcen sind dezentral auf die Dokumente (HEAD-Bereich) verteilt.

Die SprachenID könnte zu Beginn per Javascript-Funktion initialisiert werden (siehe Sprache des Clients ermitteln).

Methode: PHP

Sprachresourcen liegen auf dem Server in Textdateien/Modulen oder einer MySQL-Datenbank.

Typischer Verwendungszweck: Allgemein Applikationen, die auf dem Server laufen.

Siehe: PHP :: Multilinguale Site

Session-Initialisierung Meistens Anzeige einer neutralen Startseite.
Seiten-Initialisierung SprachenID wird aus PHP-Session gelesen; Textfragmente werden mittels PHP eingefügt.
Sprachumschaltung
Vorteil
  • Funktioniert ohne Javascript, also auch mit alten Browsern.
  • Sprachresourcen liegen zentral in Textdatei(en) oder einer MySQL-Datenbank.
  • Ausgabe von HTML-Code (z.B. <br>,<b> oder <img>) leicht realisierbar.
Nachteil
  • Server muss PHP unterstützen; funktioniert nur online.
  • Umschaltung erfordert ein Neuladen der Seite.
  • Evtl. keine sessionübergreifende Speicherung der Einstellung.
  • Durch Lesezeichen (Favoriten) wird lediglich die Standard-Sprache angezeigt.

Wird die SprachenID auf dem Server in einer Benutzertabelle sessionübergreifend gespeichert, kann die Session bereits mit der richtigen Sprache initialisiert werden, und auch Lesezeichen/Favoriten arbeiten dann korrekt.
Manchmal wird die SprachenID bei allen Seitenaufrufen als URL-Parameter mitgeführt, z.B. impressum.php?langid=2 oder impressum.php?lang=en, um Lesezeichen/Favoriten mit der richtigen Sprache zu versorgen.
Die SprachenID könnte zu Beginn per PHP $_SERVER['HTTP_ACCEPT_LANGUAGE'] oder Javascript-Funktion (siehe Sprache des Clients ermitteln) initialisiert werden.

Methode: PHP + Javascript(AJAX)

Sprachresourcen liegen auf dem Server in Textdateien/Modulen oder einer MySQL-Datenbank.

Typischer Verwendungszweck: Applikationen, die auf dem Server laufen und interaktive DHTML-Oberflächen besitzen.

Session-Initialisierung Meistens Anzeige einer neutralen Startseite.
Seiten-Initialisierung SprachenID wird aus PHP-Session gelesen; Textfragmente werden mittels PHP eingefügt.
Sprachumschaltung Textfragmente werden per AJAX geholt und im Dokument per DOM ausgetauscht.
Vorteil
  • Umschaltung erfolgt zügig, ohne Neuladen der Seite.
  • Sprachresourcen liegen zentral in Textdatei(en) oder einer MySQL-Datenbank.
Nachteil
  • Javascript muss aktiviert sein; DOM-/AJAX-fähiger Browser erforderlich.
  • Server muss PHP unterstützen; funktioniert nur online.
  • Ausgabe von HTML-Code (z.B. <br>,<b> oder <img>) umständlich.
  • Evtl. keine sessionübergreifende Speicherung der Einstellung.
  • Durch Lesezeichen (Favoriten) wird lediglich die Standard-Sprache angezeigt.

Wird die SprachenID in einem Cookie oder auf dem Server in einer Benutzertabelle sessionübergreifend gespeichert, kann die Session bereits mit der richtigen Sprache initialisiert werden, und auch Lesezeichen/Favoriten arbeiten dann korrekt.
Manchmal wird die SprachenID bei allen Seitenaufrufen als URL-Parameter mitgeführt, z.B. impressum.php?langid=2 oder impressum.php?lang=en, um Lesezeichen/Favoriten mit der richtigen Sprache zu versorgen.
Die SprachenID könnte zu Beginn per PHP $_SERVER['HTTP_ACCEPT_LANGUAGE'] oder Javascript-Funktion (siehe Sprache des Clients ermitteln) initialisiert werden.

Resourcen: Eingebettete Platzhalter

Zwar lassen sich viele Textvorkommen (wie Seitentitel, Menüpunkte, Labels, Buttonbeschriftungen oder unveränderlicher Fließtext) en bloc in eine Fremdsprache übertragen, aber es können auch Fragmentgruppen auftreten, deren Elemente sich nicht 1:1 übersetzen lassen, weil z.B. die Regeln der Satzstellung in den einzelnen Sprachen differieren.
Solche Fragmentgruppen entstehen meist bei der Ausgabe von Variablen, wodurch ein Satz in 2 oder mehr Resourceteile gesplittet wird:

Sie haben 3 Datensätze ausgewählt

Eine strikte Übersetzung der beiden Fragmente ergibt in englisch:

You have 3 records selected

Dies ist jedoch nicht korrekt, denn es müsste lauten:

You have selected 3 records

Den Übersetzer trifft hier keine Schuld, denn er sieht ja nur eine Liste von Textteilen und muss quasi raten, welche Segmente inhaltlich zusammengehören. Ausserdem kann es im Zuge einer Nachbearbeitung/Ergänzung des Dokuments durchaus passieren, dass ein neues Satzteil (mit neuer höchster ResourceID) zwischen bereits vorhandene Satzteile (mit niedrigen ResourceIDs) eingefügt wird. In der - nach ResourceID sortierten - Liste steht das neue Satzteil ganz am Ende, weit entfernt von seinen eigentlichen Nachbarn. Hier ist dann kein Zusammenhang mehr erkennbar.

Um die Zerstückelung von Sätzen zu vermeiden, empfiehlt sich in der Resource die Verwendung von Platzhaltern; am besten durchnummeriert, falls mehr als eine Variable eingesetzt werden muss:

Sie haben %1% Datensätze ausgewählt

Nun kann das Element auf Anhieb richtig übersetzt werden zu:

You have selected %1% records

Bevor Javascript/PHP die Resource ins Dokument schreibt, müssen Platzhalter dann durch die entsprechenden Variablen ersetzt werden.

Index :: Anhang


template