[PHP] Umlaute und gettext

kip

kip

Grünschnabel
Hallo,

ich habe ein PHP-Projekt mit Smarty und gettext-Plugin realisiert. Die Strings in den Smarty-Templates sind in deutscher Sprache verfasst. Nun soll das Projekt auch auf englisch verfügbar gemacht werden. Ich habe mir also die entsprechende po-Datei generiert, die englische Übersetzung dafür gemacht usw ...

Es funktioniert soweit auch. Alle Texte des Projekts in denen keine Umlaute vorkommen werden ins englische Übersetzt. Sobald aber ein Umlaut in der msgid ist, wird die Übersetzung einfach ignoriert => also wohl nicht gefunden ...

Die po Datei habe ich als utf-8 gespeichert und msgfmt bringt mir auch keinen Fehler ... die Smarty-Templates sind in ISO-8859-15 gespeichert und der HTML Content-Type steht auch auf ISO-8859-15 ...

Um es nochmal zu verdeutlichen:

gettext("Das ist ein Test"); <-- wird übersetzt
gettext("Das ist ein Test mit Umlauten wie ä, ö, ü"); <-- wird nicht übersetzt

Dabei ist das ganze ein PHP/Gettext Problem ... habs auch mal ohne Smarty-Template versucht ...

kann mir da wer helfen? bin langsam am verzweifeln ...

viele grüsse,
dennis
 
Hallo dennis,

ich habe genau das gleiche Problem wie du. Sobald in einem String ein Umlaut ist, wird der ganze String nicht übersetzt.
Es ist ja mittlerweile schon etwas her, hast du vielleicht eine Lösung gefunden? Für eine Antwort wäre ich Dir sehr dankbar! :hilfe2:

Gruß Christian
 
hallo :)

ja, mittlerweile läuft die sache .. aber ich kann dir nicht wirklich sagen warum ;).

Ich habe die .po Datei nun in eine iso-8859-15 datei gewandelt und im php script folgenden code:

Code:
	$gtdom = "messages";
	bindtextdomain($gtdom, $_SYSTEM['unix']."/locale/");
	bind_textdomain_codeset($gtdom, 'ISO-8859-15');
	textdomain($gtdom);

und so funktioniert das ganze ... woran es aber genau lag weiß ich leider auch nicht.
 
kip schrieb:
hallo :)

ja, mittlerweile läuft die sache .. aber ich kann dir nicht wirklich sagen warum ;).

Ich habe die .po Datei nun in eine iso-8859-15 datei gewandelt und im php script folgenden code:

Code:
	$gtdom = "messages";
	bindtextdomain($gtdom, $_SYSTEM['unix']."/locale/");
	bind_textdomain_codeset($gtdom, 'ISO-8859-15');
	textdomain($gtdom);

und so funktioniert das ganze ... woran es aber genau lag weiß ich leider auch nicht.

hallo!

ich hab momentan genau das gleiche problem und komme nicht zu einer lösung! ich hab wie beschrieben ebenfalls den zeichensatz auf iso-8859-15 umgestellt...jedoch ohne erfolg.

weiss darüber jemand mehr?

mfg
 
Zurück
Oben