PHP - Internationale Webseiten Man spricht ja immer von Globalisierung. Ein Schritt, die eigene Webseite zu globalisieren ist, dass man die Inhalte in verschiedenen Sprachen anbietet. Hier finden Sie eine Lösungsmöglichkeit mit PHP, die das Problem schnell und einfach beheben.

Jeder kennt das: Die Welt wächst zusammen, die Welt wird immer kleiner. Doch leider wächst das Internet in der selben Geschwindigkeit. Dies stellt viele Webmaster vor ein großes Problem: Wie schaffe man es, dass die eigene Seite in verschiedenen Sprachen betrachtbar ist?

Das Prinzip ist einfach: Jeder Text auf der Webseite wird durch eine Variable ersetzt. Für jede Sprache legt man nun eine neue SQL Tabelle an, also beispielsweise "lang_de" (Deutsch) und "lang_eng" (Englisch). Vor dem Laden der Seite wird geprüft, welche Sprache gewünscht wird und die entsprechenden Variablen bzw. Inhalte aus der Datenbank geladen. Diese Lösung ist optimal für kleinere Webseiten. Bei größeren tritt aber ein Geschwindigkeitsverlust ein, der aber auch bei jeder anderen praktikablen Lösung vorhanden ist.

So könnten die Tabellen für ein Datensatz in der jweiligen Sprache aussehen.
lang_de

id title inhalt
1 Der Titel Der Inhalt

Die Tabelle lang_de wird über folgenden SQL Query erzeugt:

CREATE TABLE lang_de (id INT not null AUTO_INCREMENT, title TINYTEXT not null , inhalt TEXT not null , PRIMARY KEY (id))

lang_eng

id title inhalt
1 The Title The content

Die Tabelle lang_eng wird über folgenden SQL Query erzeugt:

CREATE TABLE lang_eng (id INT not null AUTO_INCREMENT, title TINYTEXT not null , inhalt TEXT not null , PRIMARY KEY (id))

Um dieses Datenbanksystem sinnvoll zu nutzen brauchen wir eine Funktion, die den Wert einer bestimmten Feldes in der Datenbank ermittelt und ausgibt. Nehmen wir an, dass die Tabellen lang_* die Felder der obigen Tabelle hat. Ein Datensatz wird über die jweilige ID
genau bestimmt. Der Aufruf des Skriptes sieht z.B. wie folgt aus: "show_article.php?lang=de&id=1". An das Skript wird folglich die Sprache des Artikels, und die eindeutige ID in der Datenbank angegeben.
Die Funktion hat jetzt die Aufgabe, den Inhalt eines Feldes (welches an die Funktion übergeben wird), in der jeweiligen Sprache zu laden, und auszugeben.

Das folgende Skript implementiert dies.

show_article.php
<?php
$user = "";
$pass = "";
$host = "localhost";
$db = "cms";
$connid = mysql_connect($host, $user, $pass);
mysql_select_db($db, $connid);

function display_text($var){
Global $lang;
Global $id;
Global $connid;
if(!isset($lang)){
$lang="de";
}
if (!isset($id)) {
echo "Kein Artikel ausgewählt!<br><br>No article selected!";
}
$res=mysql_query("select $var from lang_".$lang." where id ='$id'", $connid);
$arr=mysql_fetch_array($res);
echo $arr[$var];
}
?>

<h1><?php display_text("title") ?></h1>
<p><b><?php display_text("inhalt") ?></b></p>

<?php
mysql_close($connid);
?>

Wird das Skript nun über show_article.php?lang=eng&id=1 aufgerufen, und Sie die Datenbank mit einigen Werten gefüllt haben, dann könnte das Ergebnis wie folgt aussehen:

Eine einfache PHP Datenbanklösung

Erklärung des Codes


Zunächst wird die Verbindung zur Datenbank aufgebaut.
Die Funktion display_text() ist der Kern des Programms. An diese Funktion wird der Name des Feldes aus der Datenbank übergeben, welches in der jeweiligen Sprache ausgegeben werden soll.
Nun, die Funktion erläutert:
Zunächst bekommen die Variablen $lang, und $id sowie $connid globale Eigenschaften, d.h. die Funktion kann auf die Werte dieser Variablen global, also ohne direkte Übergabe an die Funktion zugreifen.
Die if-Abfrage am Anfang der Funktion stellt die Standartsprache ein (Also die Sprache, die angezeigt wird, falls keine Sprache explizit über $lang festgelegt wurde!).
Die zweite if-Abfrage ermittelt, ob eine $id für den Artikel gesetzt ist, wenn nicht wird eine Fehlermeldung ausgegeben.
In der dritten Zeile nun wird die SQL Abfrage dynamisch erzeugt. Es wird der Wert, der an die Funktion über die Variable $var übergeben wurde, über die ID des Artikels ermittelt, und das Ergebnis ausgegeben.
Der Gebrauch der Funktion ist nun denkbar einfach. An der Stelle, an der der Text nachher in der entsprechenden Sprache stehen soll, einfach die Funktion display_text("title"); aufrufen.
Wichtig ist nur, das der Aufruf für das Lesen eines Artikels wie folgt aussieht:
skript.php?lang=de&id=1

Wie Sie sehen kann man leicht eine mehrsprachige Webseite mit Datenbankanbindung aufbauen, man muss nur logisch an das Problem herangehen.
Dieses Beispiel ist nur eine einfache und schnelle Lösung des Problems, sie ist aber sehr effizient.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: