Estoy migrando un proyecto de autotools a cmake. Tengo una pregunta sobre el soporte de gettext.¿Hay una función cmake para actualizar los archivos .pot?
hay una módulos FindGettext.cmake existentes, que proporcionen una buena función:
GETTEXT_CREATE_TRANSLATIONS(foo.pot ALL fr.po de.po)
en que proporciona un archivo de olla y traducida fil po; la función se ocupa de convertir los archivos po en archivos gmo y agrega los objetivos de instalación adecuados para garantizar que los archivos se puedan encontrar en tiempo de ejecución. Todo bien y bien.
Ahora viene la pregunta: ¿cómo se actualizan sus archivos pot y po archivos cuando se agregan nuevos mensajes?
Para esto, autotools generaría un objetivo "update-po", que (por lo que entiendo), lee un POTFILES.in con las listas de todos los archivos que contienen cadenas traducidas, lo mezcla con otra información, y termina llamando a xgetext para generar el po. Creo que la tarea Makefile coresponding es la que contiene algo como:
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
Por lo tanto, antes de que reinventar la rueda, es que hay una función cmake existente para hacer lo mismo? ¿O tengo que encontrar el ejecutable xgettext, enumerar los archivos y hacer esto a mano? La versión makefile parece bastante complicada (aunque parece manejar muchos casos); No me importaría no tener que escribir el cmake equivalente;)
Gracias
PH
Si bien su respuesta puede ser útil, está respondiendo una pregunta de hace 7 años. Verifique las fechas de publicación de los mensajes que desea responder antes de publicarlos. –
Pero, ¿cuál es el problema que esa pregunta tiene 7 años? Las personas están buscando esta pregunta (incluyéndome a mí) y ve a esta página. Y aquí no había tal información. Después de haber explorado esta pregunta, proporcioné mis resultados aquí para futuros buscadores. – Ashark