Localization Fun

Um Webseiten zu internationalisieren, benötigt es mehr als nur die übersetzten Texte. Ich erkläre hier die Grundlagen die man benötigt um eine erfolgreiche Internationalisierung vorzunehmen.

Nehmen wir an wir haben unsere normale Seite. Natürlich sind hier durchaus mehr Texte denkbar.

1
2
echo "Herzlich Willkommen"."\n";
echo "Link zum Gästebuch";


Um nun mehrere Sprachen zu unterstützen passen wir zuerst unsere Seite an

1
2
echo $message["welcome"]."\n";
echo $message["link_guestbook"];

Da wir zu einer erfolgreichen Internationalisierung auch andere Sprachen brauchen hier ein Beispiel hierfür.

// lang_de.php - Deutsche Sprache
$message["welcome"] = "Herzlich Willkommen";
$message["link_guestbook"] = "Link zum Gästebuch";
// lang_en.php - english language
$message["welcome"] = "Welcome";
$message["link_guestbook"] = "Link to guestbook";

Nun müssen wir in unsere Seite noch eine Abfrage machen welche Sprache benutzt werden soll.

1
2
3
4
5
6
7
switch($_GET['lang'){
	default:
	case "de": include("lang_de.php"); break;
	case "en": include("lang_en.php"); break;
}
echo $message["welcome"]."\n";
echo $message["link_guestbook"];

Manchmal kann es jedoch sein, dass man auch in Funktionen die Sprachblöcke benutzen will. Um ein

global $message

in jeder Funktion zu vermeiden. Benutzen wir anstatt eines Arrays globale Konstanten. Wie auf den PHP-Seiten zu erlesen ist sollte man für Konstanten immer GROSSBUCHSTABEN verwenden. Auch sollte den Konstantennamen kein $ voran gestellt werden. So erhalten wir eine Sprachdatei die zum Beispiel so aussieht.

// lang_de.php - Deutsche Sprache
define("WELCOME",		"Herzlich Willkommen");
define("LINK_GUESTBOOK", 	"Link zum Gästebuch");

Nun müssen wir nurnoch unsere Seite anpassen.

1
2
3
4
5
6
7
switch($_GET['lang'){
	default:
	case "de": include("lang_de.php"); break;
	case "en": include("lang_en.php"); break;
}
echo WELCOME."\n";
echo LINK_GUESTBOOK;

Autor: Simon
Datum: Sunday, 6. July 2008 1:55
Trackback: Trackback-URL Themengebiet: PHP

Feed zum Beitrag: RSS 2.0 Diesen Artikel kommentieren

Kommentar abgeben