28. November 2006, 07:20, by Silvan Mühlemann

Mehrsprachigkeit auf tilllate.com

Languages“wie löst ihr das mit den Sprachen?”, fragt mich Otti, ein Webtuesday Besucher.

Das tilllate-Framework unterstützt eine praktisch unbegrenzte Anzahl von Sprachen. Momentan sind wir bei sieben Sprachen: Deutsch, Französich, Englisch, Italienisch, Spanisch, Türkisch und Bulgarisch.

Die Textbausteine, welche wir auf der Seite sehen sind in einer Tabelle gespeichert. Pro Sprache hat diese Tabelle eine Spalte. Jeder Sprachbaustein ist mit einer ID versehen. So hat der Baustein “Fotoreport” die ID “243”. Wenn ich nun das Wort “Fotoreport” brauche, schreibe ich folgenden Code:

Das System gibt mit dann das Wort “Fotoreport” in der Sprache der gerade aktuellen Session des Besuchers aus.

Zugegeben: Wir hätten besser mit lesbaren Keywords gearbeitet (im Stil von gettext) anstatt mit Integerzahlen. Die Lesbarkeit des Codes wäre deutlich höher. Aber im Nachhinein ist man immer schlauer.

Den Baustein hatten wir damals über eine SQL-Abfrage geholt. Dies sorgt aber für Dutzende von teuren Queries pro Seitenaufruf.

Der nächste Entwicklungsschritt war das generieren von Include-Files aus der Datenbank:

Damit sparen wir uns die vielen Abfragen. Inzwischen sind wir bei 6000 Textbausteinen angelangt. Bei jedem Aufruf 6000 Zeilen PHP-Code einlesen, wovon nur wenige Prozent gebraucht wird? Eine bessere Lösung musste her:

“Shared Memory” heisst sie: Auf jedem Server haben wir ein Speichersegment mit den Sprachbausteinen in allen Spachen gefüllt. Mit den PHP-Funktion shm_get_var() holt uns die txt()-Funktion dann jeder gewünschte Baustein. Sehr billig, denn ohne Diskzugriffe.

Filed under: tilllate.com,Web Development

1 Comment

  1. Ist der nächste Schritt i18n? Die .mo Files werden vom Apache selbst gecached und man lagert den Teil seiner Anwendung quasi aus auf OS-Ebene?

    Comment by Göks — 24. March 2007 @ 13:18

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

© 2017 tilllate Schweiz AG - Powered by WordPress