PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Seltsames gettext-Problem



SeeksTheMoon
19-09-2005, 22:16
Ich verwende in einer C++ Anwendung die gettext-Funktion um lokalisierten Text ausgeben zu können.
Ich habe eine deutsche und eine englische Übersetzung, aber die englische Übersetzung wird nicht angezeigt, wenn ich meine Umgebungsvariablen zum Testen umschalte.


setlocale (LC_ALL, "");
bindtextdomain("demoapp", "share/locale"));
textdomain("demoapp");
cout<<(gettext("demo_msgid")<<endl;


de/demoapp.po
msgid "demo_msg"
msgstr "deutsch"

en/demoapp.po
msgid "demo_msg"
msgstr "english"

demoapp.po gibt es als DE und EN Version, sie werden in share/locale/[DE|EN]/LC_MESSAGES/demoapp.mo abgelegt.
Warum wird die eine genutzt und die andere nicht? Hat jemand ne Ahnung?

anda_skoa
19-09-2005, 23:12
Vielleicht ist irgendeine der Locale Variablen noch nicht umgesetzt, bzw nicht auf "en" gesetzt

Ciao,
_

SeeksTheMoon
20-09-2005, 07:52
printenv sagt, ich habe nur LANG, LANGUAGE, LC_ALL in Verwendung. Bisher stand das auf de_DE.utf8, jetzt hab ich das auf en_GB gesetzt, was laut locale -a auch existiert.
Andere Programme wie der gcc zeigen nun englischen Text an.

Um es genau zu sagen, ich sehe in meinem Programm auch den deutschen Text wenn ich auf englisch umstelle. Wenn die Variablen ungültig sind (z.B. nur "en"), dann sehe ich nur die msgids.

anda_skoa
20-09-2005, 12:18
Wenn die Locale Settings nicht auf eine Sprache matchen, kommt immer der Default, denn woher sollte gettext sonst die Texte nehmen?

Aus diesem Grund verwenden alle mir bekannten Programme auch eine der natürlichen Sprachen, meistens Englisch, als Defaulttext.

Ciao,
_

SeeksTheMoon
20-09-2005, 15:11
ah, ich habe einen Fehler ganz woanders gefunden (unser buildsystem das aus der po die mo-Dateien macht hatte einen copy and paste Fehler :D)

Wenn ich jetzt LANGUAGE=en_irgendwas setze, dann wird der englische Text gezeigt.