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:
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.