[Smarty] Variablen mit einem Punkt im Titel

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Smarty] Variablen mit einem Punkt im Titel

    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!

  • #2
    Warum nutzt Du keine Funktion wie {lang}mein.sprach.variable{/lang}?
    MM Newmedia | MeinBlog

    Kommentar


    • #3
      Klingt nach einem guten Lösungsansatz!

      Dann werde ich mich einmal an die Arbeit machen. Ich habe zwar noch nie eine Funktion für Smarty geschrieben, habe aber einen ganz guten Link gefunden:

      WaxJelly Blog Archive How to write a custom Smarty function in php

      Dort wird beschrieben, wie man eine benutzerdefinierte Funktion für Smarty programmiert. Allerdings werden da nur so-genannte Standalone-Tags beschrieben. Um eine bessere Übersichtlichkeit zu erreichen, will ich aber einschließende Tags verwenden, eben halt so wie in deinem Beispiel.

      Wie kann ich im Code der Funktion auf den Text innerhalb {lang} und {/lang} verweisen?
      Zuletzt geändert von PHP-Master07; 30.10.2009, 15:55.

      Kommentar


      • #4
        Ich habe zwar länger nichts in Smarty gemacht, aber müsste {$lang["menu.home"]} nicht auch noch klappen?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar

        Lädt...
        X