IT-Academy Logo
Sign Up Login Help
Home - Programmieren - PHP - PHP: mehrsprachige Seiten bauen



PHP: mehrsprachige Seiten bauen

Diese Tutorial soll die Grundlagen und Techniken einer mehrsprachigen Webgestalltung auf PHP-Basis aufzeigen.


Autor: Patrick Faes (dreamer)
Datum: 16-07-2004, 19:57:59
Referenzen: keine
Schwierigkeit: Fortgeschrittene
Ansichten: 35790x
Rating: 8.33 (3x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Einführung

Das Anbieten einer Webpräsenz in mehrere Sprachen ist für große Unternehmen sehr wichtig, doch auch kleine Communities können damit ihren Bekanntheitsgrad erhöhen oder einfach ein gutes Angebot an Inhalten erreichen.
In der Praxis erreichen die meisten Webmaster dies indem Sie die Besuchern eine Möglichkeit geben die Sprache selbst zu wählen in einem Menü. Dies ist meist umständlich und die meisten Besucher sind dann schon weg. Man kann dies mittels PHP aber auch sehr leicht automatisieren.

Die Technik

Die Sprache des Besuchers kann ermittelt werden mit der in PHP eingebauten Variable $_SERVER["HTTP_ACCEPT_LANGUAGE"] (mehr dazu). Dieser ergibt dann ein Code.

Eine Liste mit Codes finden Sie auf der Seite des W3C.

Die Praxis

Die Frage stellt sich nun, wie man dies jetzt in der Praxis nutzt. Dazu gibt es drei Möglichkeiten.

Eine erste Möglichkeit besteht darin, dass der Besucher ab der Index-Seite automatisch weitergeleitet wird zu den Seiten die in seiner Sprache präsentiert werden. Dies kann man machen mit diesem Beispiel-Code:


<?php
    $sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
    switch($sprache) {
    case 'de': $weiterleitung = 'include/de/index.php';break;
    case 'en': $weiterleitung = 'include/en/index.php';break;
    default: $weiterleitung = 'include/en/index.php';
    }
    header ("location: $weiterleitung");
?>
Der Code sollte verständlich sein, aber ich werde es dennoch mal kurz erklären:

In der Variable $sprache speichern wir die Sprache des Besuchers. Mit einer Switch() (mehr dazu) wird anhand des Codes vom Besucher bestimmt wohin er weitergeleitet werden soll. In diesem Fall sind es Seiten die einem separaten Verzeichnis gespeichert (die Verzeichnisse müssen korrekt adressiert werden, mehr dazu).

Hier werden die Codes de (deutsch) und en (Englisch) erkannt und die Besucher werden dem entsprechend weitergeleitet. Als default-Seite wird hier die Englische Index-Seite angezeigt, was heißt, dass jeder Besucher der einen anderen Code hat (z.B. fr, also Französich), weitergeleitet wird zur Englischen Index-Seite.

Dies speichern wir in die Variable $weiterleitung. Danach wird der Besucher weitergeleitet mittels der Funktion header() (mehr dazu).

Eine andere Möglichkeit besteht darin, jedes Element (Navigation, Text-Teil, usw.) einzeln mit include() (mehr dazu) ein zu fügen. Der Beispiel-Code zeigt dies:

<?php
    $sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
    switch($sprache) {
    case 'de': include('includes/de/navigation.php');break;
    case 'en': include('englische_navigation.php');break;
    default: include('englische_navigation.php');
    }
?>
Hier wird jedes Element einzeln inkludiert und muss auch einzeln erstellt werden, wobei im ersten Beispiel ganze Seiten einzeln gebaut wurden.

Die letzte Möglichkeit besteht darin, dass Texte u.ä. aus Datenbanken geladen werden. Das könnte z.B. so aussehen:

<?php
    $sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
    mysql_query("SELECT texte FROM $sprache WHERE id = $id");
?>
Hier wird ein Text aus einer Datenbank geholt. Der Name der Tabelle ist zugleich ein Länder-Code. Um zu bestimmen welchen Text genommen werden soll, wird noch eine zweite Variable genutzt (die ID).

Jeder muss selbst entscheiden welche Methode er benutzen möchte, die meisten Unternehmen jedoch entscheiden sich für die erste Möglichkeit.

Nicht nur Sprachen sondern auch Länder-Codes

Die meisten Browser werden jedoch einen Code geben, der auch einen Länder-Code beinhaltet (erst kommt der Sprachen-Code, dann ein Strich und dann der Länder-Code). Für die deutsche Sprache gibt es so z.B.:
  • de: Deutschland
  • de-at: Östenreich
  • de-lu: Luxemburg
  • de-ch: die Schweiz
  • de-li: Liechtenstein
In die oberen Beispiele müsste man dann diese fünf alle einzeln aufnehmen, da ansonsten in 4 Fällen die default-Seite geladen werden würde. Man kann dann auch die Besucher aus verschiedene Länder zu verschiedene Seiten weiterleiten, Internet-Shops tun dies oft.

Man kann aber auch die Codes durchsuchen nach einzelnen Zeichensätzen. Im obigen Beispiel kommt in jedem Code der Zeichensatz de vor. Man kann die Codes durchsuchen mit der Funktion eregi() (mehr dazu). Der Beispiel-Code zeigt dies:

<?php
    $sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
    if ( eregi('de', $sprache) ) {}
?>

Man kann auch hierbei einzelne Länder ausschließen. Beispielcode worin Österreicher ausgeschlossen werden.

<?php
    $sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
    if ( (eregi('de', $sprache)) && !(eregi('at', $sprache)) ){}
    elseif ( (eregi('de', $sprache)) && (eregi('at', $sprache)) ) {}
    else {}
?>
Hierzu kann man sogenannte Operatoren verwenden. Die wichtigsten sind:
- | | : oder (OR)
- && : und (AND)
- ! (Ausrufezeichen): nicht (NOT)
Manuelle Selektion der Sprache

Obwohl man dies also automatisieren kann, muss man aber immer noch den Besuchern die Option lassen, die Sprache selbst zu wählen. Es kann z.B. sein, dass der Besucher in einem Internet-Café surft, oder dass sein Computer falsch konfiguriert ist.
Man kann dann eine Variable mit der GET-Methode (über Links) oder der POST-Methode (über Formulare) mitgeben. Das Script würde dann z.B. so aussehen:

<?php
    if ( isset($_GET["sprache"]) ) {$sprache = $_GET["sprache"];}
    elseif ( isset($_POST["sprache"]) ) {$sprache = $_POST["sprache"];}
    else {$sprache = $_SERVER["HTTP_ACCEPT_LANGUAGE"];}
?>
Hierbei sollte man die Links absolut adressieren, was bedeutet "mit vollständiger URL", z.B.
http://www.url.com/de/unterseite.php oder
http://www.url.com/unterseite.php?sprache=de.

Einstellung speichern

Einen Schritt weiter gehen kann man, indem man die Sprache in einer Session oder einem Cookie speichert. Mit einer Session wird bewirkt, dass der Server die Variable für einem Besucher während einer bestimmten Zeit speichert. Mit einem Cookie dagegen wird die Variable im Browser des Besuchers gespeichert.

Diese beide Optionen werden hier nicht gezeigt, da dies nicht in diesem Artikel gehört. Wenn Sie trotzdem mehr darüber wissen möchten, können Sie den folgenden Links folgen:

Cookies
Tutorial
Nachschlagewerk

Sessions
Tutorial
Nachschlagewerk


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04508
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06246
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1154
Comments: 0