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.