suit: viele if-else vs. viel Schreibarbeit

Beitrag lesen

Wenn du den Zweck deines Vorhabens nicht verschwiegen hättest, ...
Sorry

Geht's ein Konfigurationsfile für eine Lokalisierung?
Jupp

Wie wäre es mit einem Array?

$lang_config = array(  
  'de' => array(  
    'string1' => 'wert1',  
    'string2' => 'wert2',  
    'string3' => 'wert3'  
  ),  
  'en' => array(  
    'string1' => 'value1',  
    'string2' => 'value2',  
    'string3' => 'value3'  
  )  
);

Darauf zugreifen kannst du auf verschiedene Arten

Die einfachste Variante ist folgende:

$lang = 'de';  
echo $lang_config[$lang]['string'];

Eine Alternative ist, dass du dir je nach gewählter Sprache das betreffende Array in ein anderes kopierst:

$lang = 'de';  
$lang_values = $lang_config[$lang];  
echo $lang_values['string'];

Die Deluxe-Variante ist eine Funktion mit Fallback-Mechanismus - da kommst du aber um die Verzweigung nicht herum.

Du prüfst ob in deinem Array der gewünschte Schlüssel in der gewünschten Sprache existiet, wenn nicht, dann versuchst du es mit der nächsten usw bis letztendlich die Defaultsprache ausgliefert wird.

Ein Aufruf der Funktion könnte dabei so aussehen:

get_language('wert1', 'de');

Allgemein ist es ratsam, wenn du auch die obengenannten gleich in so eine Funktion kapselst, damit du diese ggf. später erweitern kannst.

Das praktische daran ist, dass du dir das Array z.B. auch aus einem XML-File oder einer CSV-Datei bauen kannst welches von einem Übersetzer wesentlich einfacher bearbeitet werden kann als eine PHP-Variablenwüste bzw. was dann von deiner Seite keine Aufwand erfordert.