我正在將項目從autotools遷移到cmake。我有一個關於gettext支持的問題。是否有一個cmake函數來更新.pot文件?
有一個現有的FindGettext.cmake模塊提供了一個很好的功能:
GETTEXT_CREATE_TRANSLATIONS(foo.pot ALL fr.po de.po)
在那裏你提供一個鍋文件並翻譯PO FIL;該功能負責將po文件轉換爲gmo文件,並添加適當的安裝目標以確保可以在運行時找到文件。一切都很好,很好。
現在出現了這樣一個問題:當你添加新消息時,你如何更新你的鍋文件和你的po文件?
爲此,autotools會生成一個「update-po」目標,(據我所知),讀取一個POTFILES.in,其中包含所有包含翻譯後字符串的文件列表,並將其與其他信息混合並結束調用xgetext生成po。我認爲coresponding Makefile的任務是包含類似的一個:
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
所以,在我重新發明輪子,有一個現有的cmake的功能,做同樣的事情? 或者我必須找到xgettext可執行文件,列出這些文件並手動執行此操作? makefile版本看起來很複雜(儘管它似乎處理很多情況);我不會介意不不必編寫CMake的同等學歷;)
感謝
PH
雖然你的答案可能有幫助,但你正在回答一個7歲的問題。請在發佈之前查看您想要回復的消息的發佈日期。 – 2017-05-03 18:46:05
但問題是7歲的問題是什麼?人們正在搜索這個問題(包括我)ang轉到此頁面。在這裏沒有這樣的信息。在我探索完這個問題後,我在這裏爲未來的搜索者提供了結果。 – Ashark 2017-05-03 19:11:52