Suchen / SearchNavigation |
Versuch über eine Translate FunktionBeim Gestalten von Web-Seiten, die in mehreren Sprachen laufen müssen, gibt es ein Übersetzungsproblem. Beliebt ist eine Funktion namens t, die ähnliche Argumente nimmt wie sprintf. Die Funktion nimmt eine Locale-Datei und liefert ggf einen übersetzten String für die Darstellung auf der Web-Seite zurück. Dies ist ein Versuch, wie man so eine Funktion einigermaßen Grammatik-verträglich macht (Plurale) und zweitens performant hält. Mit der Technik, aus einer Tab-Text-Datei zuerst einen fertigen PHP-Hash zu erzeugen (als PHP Code oder als serialisierten Hash), bin ich ganz glücklich. Die Technik z.B. in WebCalendar, die Text-Datei bei jedem Aufruf zu parsen, wird schnell zu langsam, besonders, wenn die Details zur Grammatik dazu kommen. Der Abschnitt zum Parsen eines Acccept_Language headers spart wahrscheinlich das Lesen von RFCs. Am wenigsten glücklich bin ich mit der Technik, Sätze mit mehreren Variablen grammatisch korrekt zu übersetzen. Im Idealfall würde sich die t Funktion aus Sicht des Code-Schreibers genau wie sprintf benutzen lassen. Der Rest sollte komplett in der Config-Datei realisiert werde können, sowohl die Reihenfolge der Satzteile als auch die sprachlichen Spezialitäten wie ein Dualis. Davon ist die Lösung noch weit entfernt, mir ist bisher keine wirklich befriedigende Strategie eingefallen. Für Sätze mit einzelnen Variablen tut die Funktion genau, was ich will.
|