Je migre un projet d'autotools vers cmake. J'ai une question sur le support de gettext.Y at-il une fonction cmake pour mettre à jour les fichiers .pot?
Il y a un modules FindGettext.cmake existants qui offre une belle fonction:
GETTEXT_CREATE_TRANSLATIONS(foo.pot ALL fr.po de.po)
où vous fournissez un fichier pot et traduit po fil; la fonction prend soin de transformer les fichiers po en fichiers gmo, et ajoute les cibles d'installation appropriées pour s'assurer que les fichiers peuvent être trouvés lors de l'exécution. Tout va bien et bien.
Maintenant vient la question: comment mettez-vous à jour vos fichiers pot et vos fichiers po lorsque vous ajoutez de nouveaux messages? Pour cela, autotools génère une cible "update-po", qui (d'après ce que je comprends), lit un POTFILES.in avec les listes de tous les fichiers contenant des chaînes traduites, le mélange avec d'autres informations, et finit par appeler xgetext pour générer le po. Je pense que la tâche Makefile est celui lui correspondant qui contient quelque chose comme:
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
Alors, avant de réinventer la roue, est-il une fonction de CMake existante pour faire la même chose? Ou dois-je trouver l'exécutable xgettext, liste les fichiers, et le faire à la main? La version de makefile semble assez compliquée (bien qu'elle semble traiter beaucoup de cas); Je ne me dérangerait pas pas avoir à écrire l'équivalent CMake;)
Merci
PH
Bien que votre réponse puisse vous être utile, vous répondez à une question vieille de 7 ans. Veuillez vérifier les dates d'affichage des messages auxquels vous souhaitez répondre avant de les poster. –
Mais quel est le problème cette question a 7 ans? Les gens cherchent cette question (y compris moi) ang aller à cette page. Et ici, il n'y avait pas une telle information. Après avoir exploré cette question, j'ai fourni mes résultats ici pour les futurs chercheurs. – Ashark