lixx: setlocale und gettext

Beitrag lesen

Hallo Leute!

Ich beschäftige mich gerade mit setlocale und gettext für die Internationaliesierung. Jetzt wird in der Doku diese funktion hoch gelobt. Nur habe ich meine Schwierigkeiten damit.

Zum kompilieren der mo- und po-Dateien verwende ich die PEAR-Klasse "File_Gettext". Das funzt soweit super. Gedacht ist, dass bei einer Änderung einer Sprachdatei die mo- und po-Dateien neu kompiliert werden.

Mein PHP-Code sieht in etwa so aus:
----------------------------
$this->currentLanguage = 'de_DE';

putenv('LANGUAGE='.$this->currentLanguage);
putenv('LANG='.$this->currentLanguage);

bind_textdomain_codeset($this->localeDomain, $this->localeCharSet);
bindtextdomain($this->localeDomain, $this->localePath);

setlocale(LC_MESSAGES, $this->currentLanguage);

textdomain($this->localeDomain);

echo gettext('header').NL;
echo gettext('title').NL.NL;
----------------------------

Die po-Datei sieht in etwa so aus:
----------------------------
msgid ""
msgstr ""
"Project-Id-Version: xxx\n"
"Report-Msgid-Bugs-To: system\n"
"POT-Creation-Date: 2009-06-06T17:05:18+0200\n"
"PO-Revision-Date: 2009-06-06T17:05:18+0200\n"
"Last-Translator: by system\n"
"Language-Team: system\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

msgid "title"
msgstr "Titel"

msgid "header"
msgstr "Headline"
----------------------------

Nun habe ich das Problem, dass gettext() nicht immer wunschgemäß den String ausgibt. Mal wird er angezeigt, mal wird nur die msgid angezeigt – also je nach Luftdruck. Dass der String mal angezeigt wird, sagt mir, dass die mo-Datei korrekt ist.

Aber mach ich da was falsch, oder woran liegt das?

lg lixx