Ich migriere ein Projekt von Autotools zu cmake. Ich habe eine Frage zur Gettext-Unterstützung.Gibt es eine Cmake-Funktion, um .pot-Dateien zu aktualisieren?
Es gibt eine bestehende FindGettext.cmake Module, die eine nette Funktion bietet:
GETTEXT_CREATE_TRANSLATIONS(foo.pot ALL fr.po de.po)
wo man einen Topf Datei und übersetzt po fil liefern; Die Funktion kümmert sich darum, die po-Dateien in gmo-Dateien umzuwandeln und fügt die richtigen Installationsziele hinzu, um sicherzustellen, dass die Dateien zur Laufzeit gefunden werden können. Alles gut und gut.
Jetzt kommt die Frage: Wie aktualisierst du deine Pot-Dateien und po-Dateien, wenn du neue Nachrichten hinzufügst?
Dafür würde autotools ein "update-po" Ziel generieren, das (von dem, was ich verstehe), liest eine POTFILES.in mit den Listen aller Dateien mit übersetzten Zeichenfolgen, mischt es mit anderen Informationen und endet Aufruf von xgetext, um den po zu generieren. Ich denke, die coresponding Makefile Aufgabe der ist, wie etwas enthält:
case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--msgid-bugs-address="$$msgid_bugs_address" \
;; \
*) \
$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
--add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
--files-from=$(srcdir)/POTFILES.in \
--copyright-holder='$(COPYRIGHT_HOLDER)' \
--package-name="$${package_gnu}ube" \
--package-version='0.4.0-dev' \
--msgid-bugs-address="$$msgid_bugs_address" \
;; \
esac
Also, bevor ich das Rad neu erfinden, gibt es eine bestehende Cmake Funktion die gleiche Sache zu tun? Oder muss ich die ausführbare Xgettext finden, listet die Dateien auf, und tun dies manuell? Die Makefile-Version scheint ziemlich kompliziert zu sein (obwohl sie viele Fälle zu behandeln scheint); Ich habe nichts dagegen nicht mit der Cmake äquivalent zu schreiben;)
Dank
PH
Während Ihre Antwort hilfreich sein kann, beantworten Sie eine 7-jährige Frage. Bitte überprüfen Sie die Buchungsdaten der Nachrichten, die Sie vor dem Buchen beantworten möchten. –
Aber was ist das Problem, dass Frage 7 Jahre alt ist? Leute suchen diese Frage (einschließlich mich) ang gehen zu dieser Seite. Und hier gab es keine solche Information. Nachdem ich diese Frage untersucht hatte, stellte ich meine Ergebnisse hier für zukünftige Suchende zur Verfügung. – Ashark