Sto migrando un progetto da autotools a cmake. Ho una domanda sul supporto gettext.Esiste una funzione cmake per aggiornare i file .pot?
C'è un moduli FindGettext.cmake esistente che fornisce una bella funzione:
GETTEXT_CREATE_TRANSLATIONS(foo.pot ALL fr.po de.po)
in cui si fornisce un file pentola e tradotto fil Po; la funzione si occupa di trasformare i file po in file OGM e aggiungere i target di installazione corretti per assicurarsi che i file possano essere trovati in fase di runtime. Tutto bene e bene.
Ora arriva la domanda: come aggiorni i tuoi file pot e i tuoi file po quando aggiungi nuovi messaggi?
Per questo, gli autotools generano un target "update-po", che (da quello che ho capito), legge un POTFILES.in con gli elenchi di tutti i file contenenti stringhe tradotte, lo mescola con altre informazioni e finisce chiamare xgetext per generare il po. Credo che il compito coresponding Makefile è quello che contiene qualcosa come:
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
Quindi, prima di reinventare la ruota, c'è una funzione CMake esistente per fare la stessa cosa? O devo trovare l'eseguibile xgettext, elenca i file e farlo a mano? La versione makefile sembra abbastanza complicata (anche se sembra che gestisca molti casi); Non mi dispiacerebbe non dover scrivere il cmake equivalente;)
Grazie
PH
Mentre la risposta potrebbe essere utile, si sta rispondendo a una domanda di 7 anni. Si prega di verificare le date di invio dei messaggi a cui si desidera rispondere prima di postare. –
Ma qual è il problema che la domanda ha 7 anni? Le persone stanno cercando questa domanda (me compreso) e vanno su questa pagina. E qui non c'erano tali informazioni. Dopo aver esaminato questa domanda, ho fornito i miei risultati qui per i futuri ricercatori. – Ashark