git - git如何正确使用gettext?

标签 git makefile internationalization gettext

我开发了一个小型应用程序并正在分发;现在我想用 gettext 添加 i18n 支持。我看到 gettext 需要运行多个命令并生成各种文件(并在源代码中包含新字符串时更新它们)。

让 gettext 与典型的 git 工作流程交互的常用方法是什么?我应该自己生成我的 .pot 文件并将其包含在存储库中,还是应该在构建时由我的 Makefile 自动生成? .mo 文件呢?同样,我是否需要在构建脚本中包含 msgmerge,还是只将其结果添加到版本控制文件中?

我正在使用 C++、一个手写的 Makefile(没有 automake)和 github,以备不时之需。

最佳答案

这里涉及到三种类型的文件,而且都是生成的,至少是种。

  1. 包含主消息目录的 .pot PO 模板文件。这在我知道的每个项目中都处于版本控制之下,尽管它严格来说是生成的并且是多余的。

  2. 带有单独翻译的.po 文件。它们有时会生成,有时不会。当您使用 msgmerge merge 新字符串时,它们会生成。但是,当您的译员发回新译文时,他们却不是。您必须将它们置于版本控制之下,因为它们包含翻译。

  3. .po 文件编译成的.mo 文件。不要将它们置于版本控制之下,而是将它们与版本(源代码和二进制文件)一起发布。

更重要的是 Makefile 中的逻辑。上面提到的文件都不应自动生成,而只能按需生成。否则,无论何时编辑源文件,您的 po/ 目录都会变脏。

恕我直言,最好的做法是确保可以在没有安装 gettext 工具(xgettext、msgmerge、msgfmt)的情况下构建 git clone。确保它们仅按需调用。

gettext libint-perl 的 Perl 绑定(bind)(免责声明:我是作者)包含一个示例 po 目录和一个完整的 Makefile:https://github.com/gflohr/libintl-perl/tree/master/sample/simplecal/po .您可以直接在您的项目中使用该 Makefile。您只需为您选择的编程语言修改 xgettext 调用。

关于git - git如何正确使用gettext?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658622/

相关文章:

git - 处理以 GIT 结尾的行

git - Jenkins 实例丢失

file - WinAVR 和 native Windows 控制台应用程序

java - I18n 和日历 - 日历系统可以保留为公历吗?

postgresql - 当文本为希伯来语时无法构造 PostgreSQL 数组文字

git 获取之前的修订号

git - Jenkins 卡在 "Fetching upstream changes from origin"

linux - 如何配置 makefile?

c++ - Makefile、递归编译和静态库

.net - CurrentCulture、InvariantCulture、CurrentUICulture 和 InstalledUICulture 之间的区别