Soll eine Webanwendung erfolgreich sein muss sie Heute vor allem Global Funktionieren sprich jeder auf der Welt soll sie Verstehen. Hierfür gibt es natürlich wie immer viele Wege.
Am einfachsten ist es alle Sprachvariablen in ein Array zu schreiben auf das man dann zugreift z.B gibt man dann einfach echo $lang['download_success'] aus um den Benutzer in seiner Sprach mitzuteilen das ein Download erfolgreich war usw. Jeder der so schon mal gearbeitet hat wird schnell feststellen das dieses System ein entschiedenen Nachteil hat. Will man dem Benutzer jetzt beispielsweise begrüßen mit Meldungen wie “Hallo Name, schön das du wieder da bist” taucht ein erstes Problem auf wie bekomme ich den Namen in den String die wohl einfachste aber zugleich umständlichste Methode wäre es die Sprachvariable in zwei Teile zu zerlegen. Sprich
$lang[welcome_1] = „Hallo“;
$lang[welcome_2]= „, schön das du wieder da bist“;
Echo $lang[welcome_1] . $sUsername . $lang[welcome_2];
Das ist eine Lösung die bei größeren Projekten total versagt da sie meiner Meinung nach vieeel zu umständlich ist. Viel Sinnvoller ist es doch in die Sprachstrings Variablen reinzuschreiben und diese dann zu ersetzen. Das sähe dann z.B. so aus:
$lang[welcome] = „Hallo %name%, schön das du wieder da bist“;
Echo str_replace(‚%name‘ , $sUsername , $lang[‚welcome‘];
Vom Grundsatz her ist das schon mal ganz gut aber immer noch nicht sehr produktiv.
Ich habe das Problem letztlich so gelöst:
Die Sprachvariablen stehen in einer INI-Datei nach dem Schema
Name_der_Variable=“Hallo ich bin der Sprach String %s <- das ist eine Variable in der Sprachvariable“
Der Konstruktor der Klasse lädt die Sprachvariablen in ein assoziatives Array. Um auf eine Variable zuzugreifen habe ich die Methode lang($name , $values… ) definiert. $name ist der Name der Sprachvariable $values… sind die Werte mit denen die Variablen in den Sprachstrings ersetzt werden sollen (vgl. printf ).
Teil 2 folgt noch.