Einfache Multilinguale Webseite mit PHP/MySQL

Es wird viel Zeit dafür aufgewendet, eine Webseite ansprechend, benutzerfreundlich und intuitiv bedienbar zu gestalten. Wenn denn das Zielpublikum nicht nur aus dem deutschen Sprachraum kommt, ist es natürlich unmöglich, eine benutzerfreundliche Seite zu kreieren, wenn der Benutzer kein Wort vom Inhalt versteht.

 

Für kleine bis mittlere Webseiten kann eine mehrsprachige Webseite recht einfach aufgebaut werden.

Die zwei einfachsten Möglichkeiten sind 1) alle Webseiten mehrmals anzulegen, für jede Sprache einmal, oder 2) Alle Texte nicht im HTML/PHP-File zu speichern, sondern in einer Datenbank. Erstere Variante hat den grossen Nachteil, dass viele Redundanzen entstehen und sämtliche strukturelle Anpassungen mehrmals ausgeführt werden müssen. Deshalb hier einige Erklärungen zum zweiten Ansatz.

Datenbank

Da nur selten weitere Sprachen zu einer Webseite hinzugefügt werden, ist es nicht weiter ein Problem, für jede Sprache eine Tabellenspalte fix vorzusehen. Es ist zwar nicht schön, wenn für das Hinzufügen einer weiteren Sprache die Datenbankstruktur verändert werden muss, dafür ist diese Lösung einiges pragmatischer, also einfacher einzubauen und zu verstehen.

Die Übersetzungsdatenbank besteht lediglich einer Tabelle. Als Spalten werden natürlich je eine für jede Sprache benötigt, und dazu genug Informationen, um die Datensätze eindeutig zu finden. Es würde theoretisch ausreichen, eine numerische ID zu vergeben. Da es aber sehr mühsam ist, beim Bauen der Webseite für jeden Text die ID nachzuschlagen, und es das PHP/HTML-File sehr unleserlich macht, ist es weitaus vernünftiger, eine erklärende ID zu vergeben. Aber Achtung: Diese muss dennoch eindeutig sein! In diesem Beispiel wurde zusätzlich angegeben, zu welcher Seite der Text gehört. Dies hat zwei Vorteile: Es müssen immer nur die relevanten Texte geladen werden und nicht alle, und es ist möglich, eine erklärende ID mehrmals zu vergeben (z.B. "page-title"), aber halt einfach nur einmal pro Seite.

PHP - Übersetzer

Eine Datei "trans.php" dient dazu, die richtigen Texte aus der Datenbank aus der Datenbank zu laden und diese in eine Liste (Array) abzufüllen, aus welchem die Texte dann auf die Seite gesetzt werden.

Zudem detektiert dieser Code, welche Sprache der Benutzer auf seinem Browser eingestellt hat. Wenn dies Deutsch ist, werden die deutschen Texte geladen, sonst die englischen.

trans.php:

transdb-connection.php:

Implementation auf der Webseite

Auf der eigentliche Webseite müssen die folgenden Dinge angepasst werden:

  1. Im Header muss angegeben werden, für welche Seite die Übersetzungen geladen werden (Ich habe zusätzlich eine spezielle "Seite" 'common' definiert, für Texte die auf allen Seiten, etwa der Navigation, benötigt werden). Dies geschieht mit der Zeile
    <?php $page = "page-name"; ?>
  2. Danach muss das Übersetzungstool von oben eingefügt werden (die Datei liegt hier von der Seite aus gesehen im Ordner "php"):
    <?php include = "php/trans.php"; ?>
  3. Schliesslich werden alle Texte durch einen PHP-Code-Schnipsel ersetzt, welcher so aussieht:
    <?php echo $trans['page-title']; ?>
    Anstelle von 'page-title' muss hier das entsprechende Schlüsselwort für diesen Text eingegeben werden.