Problem: Umlaute aus .mo werden zu '?'

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Problem: Umlaute aus .mo werden zu '?'

Beitrag von jd » 20.07.2004 08:43:16

Ich habe meine ersten Gehversuche mit GNU gettext unternommen. Ich habe hierbei auf die GNU autotools verzichtet, und das Makefile von Hand erstellt. Leider habe ich ein zähes Problem, zu dem ich keine Lösung finde.

Wenn ich das Programm starte, werden zwar alle Texte in der richtigen Sprache angezeigt, aber bei dem deutschen Meldungen werden die Umlaute durch Fragezeichen ersetzt!

Das Programm selbst läuft unter Woody, und verwendet FLTK 1.0.11. Das Problem tritt aber auch bei normalen printf-Ausgabe auf der Konsole auf.


Im Makefile erstelle ich die Kataloge wie folgt. Die Übersetzung erfolgt mit poedit.

Code: Alles auswählen

.po.mo:
		$(MSGFMT) -o $@ $<


$(PACKAGE).pot:	$(POTFILES)
		xgettext --default-domain=$(PACKAGE) --keyword=_ $(POTFILES)
		mv $(PACKAGE).po $(PACKAGE).pot

Im Programm selbst sieht die Anbindung eigentlich ganz normal aus. Ich habe lediglich für die Testphase den Pfad auf eine lokales Verzeichnis zeigen lassen.

Code: Alles auswählen

#include <libintl.h>
#include <locale.h>

setlocale(LC_MESSAGES,"");
bindtextdomain(PACKAGE,"./locale");
textdomain(PACKAGE);
printf(_("set locales for %s\n"),PACKAGE);

Die Übersetzung arbeitet --wie auch der Rest-- mit 8-bit iso-8859-1 Zeichensätzen.

Code: Alles auswählen

"Content-Type: text/plain; charset=iso-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"

#: main.cxx:99
#, c-format
msgid "set locales for %s\n"
msgstr "setze locales für %s\n"
Woran kann das liegen? Hat jemand eine Idee?

Benutzeravatar
Dookie
Beiträge: 1104
Registriert: 17.02.2002 20:38:19
Wohnort: Salzburg
Kontaktdaten:

Beitrag von Dookie » 21.07.2004 14:32:51

Hi jd,

schau mal in welchem Codec die .mo vorliegen, normalerweise ist das Unicode.


Gruß

Dookie

Benutzeravatar
jd
Beiträge: 286
Registriert: 01.07.2003 12:02:33
Wohnort: D->Hessen->MKK

Beitrag von jd » 22.07.2004 08:07:45

Ich habe den Fehler gefunden. Ich muß setlocale(LC_ALL,"") statt setlocale(LC_MESSAGES,"") verwenden.

Antworten