![]() | Übersetzungen |
| Zurück | Das Makefile.am Howto | Weiter |
Um Deine Applikation übersetzbar zu machen must Du in Deinen Sourcen i18n() um jeden englischen String setzen, der für den Benutzer sichtbar wird. Du must auch ein messages Ziel im Makefile.am in deinem Verzeichnis oberster Ebene definieren. Jede Nacht läuft ein Skript und sucht alle messages Ziele zusammen, um die .pot-Dateien zu erzeugen, welche in den kde-i18n Modulen aufgehen. Übersetzer können dann .po Dateien erstellen, welche die Übersetzungen der Meldungen enthalten.
Für Applikationen ausserhalb des SVN starte
make -f admin/Makefile.common package-messagesum die .pot Dateien zu erzeugen und wechsle in das Verzeichnis po, führe dort
make mergeaus, um die Meldungen zusammenzumischen (neue .pot Datei mit alter .po Datei). WICHTIG: Du benötigst ein gepatchtes gettext, erhältlich über ftp.kde.org, um eine korrekte Unterstützung textabhängiger Übersetzungen und Plural-Behandlung zu erhalten.
Lass uns nun auf das messages Ziel zurückkommen. Es sollte einfach xgettext über die Quellen aufrufen, welche i18n-Anweisungen enthalten - was nicht qleich _SOURCES ist, da _SOURCES .ui und .skel Dateien enthalten kann, mit denen xgettext nichts anfangen kann. Das ist auch der Grund, warum Du stattdessen üblicherweise etwas wie *.cpp und *.h verwendest (stelle sicher, dass Du Unterverzeichnisse mit einbeziehst, wenn es welche gibt). In einem einfachen Fall sieht also ein messages Ziel so aus:
messages: (Tabulator!)$(XGETTEXT) *.cpp *.h -o $(podir)/mypotfile.pot
Beachte: die zweite Zeile muss mit einem Tabulator beginnen, da es Teil der Makefile-Syntax ist (was natürlich für jede weitere Zeile auch gilt).
Beachte auch: Der Name der .pot Datei muss einzigartig innerhalb KDE sein,verwende daher besser einen Applikationsnamen oder Modulnamen als Prefix, wie z.B. kofficefilters.pot.
mypotfile ist der Name Deiner führenden KInstance (für eine Applikation ist es das erste an KAboutData übergebene Argument, und für Komponenten wie Parts und Plugins, ist es der Name der KInstanz, welche Du erzeugst).
Wenn Du Qt-Designer UI-Dateien, .rc-Dateien (XML-UI) oder .kcfg-Dateien hast, verwende:
messages: rc.cppund das Skript wird rc.cpp Dateien aus den ui- und rc-Dateien im aktuellen Verzeichnis erstellen. Wenn Du .ui, -.rc oder *.kcfg Daeien in Unterverzeichnissen hast, musst Du etwas wie
$(EXTRACTRC) */*.rc >> rc.cppdem messages Ziel vor dem xgettext Aufruf hinzufügen.
Ein weiterer Spezialfall ist eine "tips" Datei. Das ist eine XML-Datei, die Tips beinhaltet, welche dem Anwender gezeigt werden. In diesem Fall verwende etwas in dieser Art:
messages: perl ./preparetips > tips.cc $(XGETTEXT) *.cpp *.h tips.cc -o $(podir)/mypotfile.pit rm -f tips.cc
Du kannst das Skript preparetips z.B. unter kdebase/ktip finden. (Es ist offensichtlich, dass der Name der temporären Datei tipps.cc keine Rolle spielt.)
Der letzte Punkt ist die Kompilation und Installation der .po Dateien. Innerhalb i18n beinhalten die Makefile.am Dateien
KDE_LANG = languageund
POFILES = AUTO, um zu erreichen, dass alle .po Dateien in das Sprachverzeichnis installiert werden.
Wenn Du eine eigenständige Applikation veröffentlichst, und möchtest dessen eigenen .po Dateien installieren, hast Du üblicherweise ein Unterverzeichnis po, und sagst im Makefile.am einfach
POFILES = AUTO. In dem Fall werden die .po Dateien abhängig von ihrem Namen als $(PACKAGE).mo installiert (z.B. de.po nach de/LC_MESSAGES/$(PACKAGE) und fr.po nach fr/LC_MESSAGES/$(PACKAGE).mo).
| Zurück | Zum Anfang | Weiter |
| Dokumentation | Nach oben | Reines Qt-Programm |