Kalle_B: Mehrere htm-Dateien zu einem Programm - multilingual

Hallöle,

möchte gerne wissen, wie und wo ihr Texte und vor allem Fehlermeldungen ablegt.

Ich habe Programmlogik und Anzeige streng getrennt. Jedes Programm kommt paarweise daher, bestehend aus einer .php- und einer .htm- Datei.

PHP erzeugt ein zweidimensionales, assoziatives Array mit ganz unterschiedlich aufgebauten Zeilen, das zum Programmende an eine Routine übergeben wird. Die holt sich die angeforderte HTM Sprachdatei (deutsch, englisch, ...), durchläuft pro Array- Zeile den mit Super- Tags markierten Bereich in der htm- Datei, ersetzt die Platzhalter und gibt das Ergebnis zeilenweise mit echo aus.

Prinzip:
Einmal den HTM- Kopf durchlaufen, beliebig oft die Positionen einer Liste, einmal den Fuss.

Das klappt wunderbar, auch mit mehreren Listen auf einer Seite:
http://www.aktivferien.de/v2/af000.php

Die htm- Datei kann man vollkommen getrennt entwickeln, lediglich die Namen der Platzhalter korrespondieren mit dem php- Programm. Eine tolle Sache. Die Mehrsprachigkeit ist nur ein Abfallprodukt:
http://www.aktivferien.de/v2/af000_de.htm

Aber jetzt mein Problem:

Da der PHP- Teil "sprachlos" ist, muss ich alle möglichen Fehlermeldungen in die HTM- Datei packen. Momentan werden sie allesamt zum Client geschickt, die ungültigen mit class=nodisplay jedoch nicht angezeigt.

Die Lösung ist "unsauber". Aber wie macht man das?

Wenn ich pro Fehlermeldung einen Super- Tag durchlaufen würde, müsste ich in der PHP- Datei die Reihenfolge der Meldungen festlegen. Das ist wieder eine Einschränkung der Layout- Freiheit im HTM- Bereich.

Hier ist so ein Negativ- Beispiel mit sämtlichen Fehler- und Warnmeldungen. Ja, auch alle möglichen Submit- Buttons sind sichtbar. Natürlich gibt es im Echtbetrieb niemals die Wahl zwischen NEU und LÖSCHEN. Entweder gibt's den Satz oder nicht:
http://www.aktivferien.de/v2/af131_de.htm

Lieben Gruß, Kalle

  1. Hallo Kalle,

    Die htm- Datei kann man vollkommen getrennt entwickeln, lediglich die Namen der Platzhalter korrespondieren mit dem php- Programm.

    Dieses Prinzip nennt sich Templates. Es ist auch nicht unbedingt nötig, das jedesmal selber zu entwickeln. Es gibt bereits viele freie Lösungen, die teilweise eine erstaunliche Funktionsvielfalt besitzen.

    Da der PHP- Teil "sprachlos" ist, muss ich alle möglichen Fehlermeldungen in die HTM- Datei packen. Momentan werden sie allesamt zum Client geschickt, die ungültigen mit class=nodisplay jedoch nicht angezeigt.

    Die Lösung ist "unsauber". Aber wie macht man das?

    Wie du schon erkannt hast, reicht es nicht, die Programmlogik von der Ausgabe zu trennen, sondern es ist oft ebenso wünschenswert, Inhalt und Form der Ausgabe zu trennen.

    Das würde dann so aussehen, indem du eine Sprachdatei hast, in der nur einzelnen Feldern (Variablen in PHP, z.B.) der gewünschte Text zugewiesen wird. In der Template-Datei stehen dann nur noch die HTML-Anweisungen und die entsprechenden Platzhalter. Dein PHP-Programm ersetzt diese dann entsprechend.

    Diese Vorgehensweise hat auch den Vorteil, dass sich der Übersetzer nicht mit dem HTML-Code herumschlagen muss, und auch keine (unbeabsichtigten) Fehler einbauen kann.

    Schöne Grüße,

    Johannes

    --
    WM-Tippspiel: http://zeller-johannes.de/wmtipp/
    ie:% fl:( br:< va:| ls:[ fo:) rl:) n4:? ss:| de:] js:| ch:} sh:) mo:| zu:)
    1. Hallo Johannes,

      Dieses Prinzip nennt sich Templates. Es ist auch nicht unbedingt nötig, das jedesmal selber zu entwickeln. Es gibt bereits viele freie Lösungen, die teilweise eine erstaunliche Funktionsvielfalt besitzen.

      Hmm, hatte mich da mal kurz eingelesen, aber dann doch Abstand genommen, der Funktionsumfang war mir zu unübersichtlich, musste mich erstmal auf MySQL konzentrieren. Werde mich aber damit nochmal beschäftigen müssen.

      Das würde dann so aussehen, indem du eine Sprachdatei hast, in der nur einzelnen Feldern (Variablen in PHP, z.B.) der gewünschte Text zugewiesen wird. In der Template-Datei stehen dann nur noch die HTML-Anweisungen und die entsprechenden Platzhalter. Dein PHP-Programm ersetzt diese dann entsprechend.

      Diese Vorgehensweise hat auch den Vorteil, dass sich der Übersetzer nicht mit dem HTML-Code herumschlagen muss, und auch keine (unbeabsichtigten) Fehler einbauen kann.

      Also eine dritte Datei nach PHP und HTM. Das Argument mit dem "Übersetzer" überzeugt mich.

      LG Kalle