Hallo liebe PHP-Programmierer!
In dem mehrsprachigen Skript, das ich gerade programmiere, werden die Sprachstrings in einer MySQL-Datenbank gespeichert. Die Titel für die Menüeinträge werden nach folgendem Muster gespeichert: 'menu.menueintrag', wobei 'menueintrag' durch Bezeichnungen wie 'help', 'home', 'login' etc. ersetzt wird.
Mittels PHP wird nun festgelegt, welche Sprache an den Klienten gesendet werden. Dabei werden dann alle Strings in einem Array an Smarty weitergegeben. Das sieht wie folgt aus: $lang enthält als Index den Titel des Sprachstrings (z.B. 'login_error'), während der Wert der Sprachstring selbst ist (z.B. 'Fehler beim Einloggen!').
In Smarty kann man dann diese Strings mit '{$lang.titel}' aufrufen, wobei 'titel' beispielweise durch 'login_error' ersetzt wird. Dadurch wird dann die Fehlermeldung ('Fehler beim Einloggen!') angezeigt. Das Problem ist aber jetzt, dass der Titel der Menüeinträge selbst schon einen Punkt beinhaltet und Smarty dadurch glaubt, dass es ein untergeordneter Array ist.
Beispiel:
{$lang.menu.home}
In PHP würde das, was ich will, so ausschauen: $lang['menu.home']. Aber wie kann man Arrays mit einem Punkt im Schlüssel in Smarty verwenden?
Bzw. ist das überhaupt möglich? Wenn nicht, dann bleibt mir nichts anderes übrig als das Skript umzuprogrammieren, aber das wäre ziemlich umständlich.
Bitte helft mir, mein Problem zu lösen!
In dem mehrsprachigen Skript, das ich gerade programmiere, werden die Sprachstrings in einer MySQL-Datenbank gespeichert. Die Titel für die Menüeinträge werden nach folgendem Muster gespeichert: 'menu.menueintrag', wobei 'menueintrag' durch Bezeichnungen wie 'help', 'home', 'login' etc. ersetzt wird.
Mittels PHP wird nun festgelegt, welche Sprache an den Klienten gesendet werden. Dabei werden dann alle Strings in einem Array an Smarty weitergegeben. Das sieht wie folgt aus: $lang enthält als Index den Titel des Sprachstrings (z.B. 'login_error'), während der Wert der Sprachstring selbst ist (z.B. 'Fehler beim Einloggen!').
In Smarty kann man dann diese Strings mit '{$lang.titel}' aufrufen, wobei 'titel' beispielweise durch 'login_error' ersetzt wird. Dadurch wird dann die Fehlermeldung ('Fehler beim Einloggen!') angezeigt. Das Problem ist aber jetzt, dass der Titel der Menüeinträge selbst schon einen Punkt beinhaltet und Smarty dadurch glaubt, dass es ein untergeordneter Array ist.
Beispiel:
{$lang.menu.home}
In PHP würde das, was ich will, so ausschauen: $lang['menu.home']. Aber wie kann man Arrays mit einem Punkt im Schlüssel in Smarty verwenden?
Bzw. ist das überhaupt möglich? Wenn nicht, dann bleibt mir nichts anderes übrig als das Skript umzuprogrammieren, aber das wäre ziemlich umständlich.
Bitte helft mir, mein Problem zu lösen!
Kommentar