<?php
// _NUR_ Sprache der Meldungen auf Deutsch setzen
setlocale(LC_MESSAGES, 'de_DE');
// Ort der Uebersetzungstabellen angeben
bindtextdomain("test", "./locale");
textdomain("test");
// Uebersetzung wird nun aus ./locale/de_DE/LC_MESSAGES/test.mo geholt
// Zu uebersetzender Teil
echo _("Hello world");
echo "
";
echo gettext("Goodbye");
?>
Versucht man das Ganze allerdings unter Windows, kann man sich schwarz suchen, warum es nicht funktioniert. Des Rätsels Lösung: Unter Windows ist beim bindtextdomain-Aufruf ein abschließender "/" erforderlich. Dies ist nirgends dokumentiert, lediglich in einem Foreneintrag war dieser "/" vorhanden.
Ich habe diese Erkenntnis -- nebenbei bemerkt -- auch in diesen PHP-Wiki eingetragen.
Interessant ist übrigens auch, dass es ohne "/" am Ende auch geht, wenn man bei setlocale() "de_de" anstatt "de_DE" schreibt. Woher dies kommt, ist mir allerdings völlig schleierhaft...
Für GNU Gettext verwendende C-Programme ist (zumindest in der Cygwin-Umgebung) der abschließende "/" nicht erforderlich.
Keine Kommentare:
Kommentar veröffentlichen