Logbuch
12
Dez 08

Cache von gettext mit PHP ohne Webserver-Neustart umgehen

php, gettext, cache, flush, apache, webserver, without restart, ohne neustart

Für internationalisierte Websites setze ich sehr oft "gettext" ein. Es bietet viele und sehr oft einfache Mögligkeiten für den Benutzer, um mehrsprachige Angebote zu realiseren.

Im Web-Bereich bedeutet das oft, es werden PHP und gettext bzw. das gettext-Modul eingesetzt. Dabei ist nun oft das Problem, wenn bestehende Übersetzungen geändert werden, befinden sich die "alten" Übersetzungen im Cache von gettext und es ist ein Restart des Webservers (in meinem Fall Apache) notwendig, um diese online zu bringen. Bei einem Hoster ist das aber oft nicht in der Sekunde der Übersetzung möglich, sondern erst beim nächsten Log-Rotate. Wenn die neue Sprachversion aber gleich verfügbar sein soll, gibt es folgendes Mittel (für PHP).

Einfach vor der textdomain()-Anweisung, diesen Befehl einfügen:

textdomain(textdomain(NULL));

Damit wird der Cache zumindest übergangen. Performance-Tests habe ich dem Fall noch keine gemacht, aber die Übersetzungsbüros, die im CMS ihre Arbeit geleistet haben, sehen zumindest die Änderungen

Es gibt zwar gegenteilige Meinungen, aber bei mir hat das noch jedesmal zuverlässig funktioniert.

Permalink

2 Kommentare

Kommentieren

Kommentar abgeben

Bitte füllen Sie alle Felder aus.

Kommentar abgeben


(wird nicht veröffentlicht)


Kommentare

masmrlar

25.06.2009 10:33

Großartig! Danke, den Hint habe ich schon länger gesucht.

.mabe

24.07.2009 11:00

Eine andere Möglichkeit ist natürlich das MO-File zu versionieren und nach jedem die Domäne entsprechend zu tauschen.

Also zum Beispiel:
das MO-File in messages20090724.mo umzubennen und dann die Domäne entsprechend im php-File anzugeben: textdomain("messages20090724");

© 2008 - .mabe