git - 如何在 git 中正确使用 gettext?
问题描述
我有一个我正在开发和分发的小应用程序;现在我想用 gettext 添加 i18n 支持。我看到 gettext 需要运行几个命令并生成各种文件(并在源代码中包含新字符串时更新它们)。
让 gettext 与典型的 git 工作流交互的常用方法是什么?我应该自己生成.pot
文件并将其包含在存储库中,还是应该在构建时由我的 Makefile 自动生成?.mo
文件呢?同样,我需要包含msgmerge
在我的构建脚本中,还是只需将其结果添加到版本控制文件中?
我正在使用 C++、一个手写的 Makefile(没有 automake)和 github,以防万一。
解决方案
这里涉及到三种类型的文件,而且都是生成的,至少是那种。
.pot
包含主消息目录的PO 模板文件。这在我知道的每个项目中都受到版本控制,尽管它是严格说生成的并且是多余的。.po
带有单独翻译的文件。它们有时会生成,有时不会。当您使用 合并新字符串时msgmerge
,它们会生成。但是当您的翻译人员发回新的翻译时,他们不会。您必须将它们置于版本控制之下,因为它们包含翻译。.mo
文件.po
编译成的文件。不要将它们置于版本控制之下,而是将它们与发布(源代码和二进制文件)一起发布。
更重要的是 Makefile 中的逻辑。上述文件均不应自动生成,只能按需生成。否则po/
,每当您编辑源文件时,您的目录都会变脏。
恕我直言,最好的做法是确保可以在不安装 gettext 工具(xgettext、msgmerge、msgfmt)的情况下构建 git clone。确保仅按需调用它们。
gettext libint-perl 的 Perl 绑定(免责声明:我是作者)包含一个带有完整 Makefile 的示例 po 目录:https ://github.com/gflohr/libintl-perl/tree/master/sample/simplecal/po 。您可能可以直接在您的项目中使用该 Makefile。您只需修改xgettext
所选编程语言的调用。
推荐阅读
- c# - 具有未知模型的asp.net核心Automapper
- android - 如何在 yyyy-MM-dd'T'HH:mm:ss-07:00 中格式化日期/时间
- excel - Outlook 模板使用 VBA 提取 Excel
- ruby-on-rails - 密码参数未包含在强参数中
- image - UWP 将图像转换为字符串
- php - 从数据库(mysql)中获取 html/php 中复选框的值
- python - 张量流范围问题
- mysql - 撤消 CTE(公用表表达式)
- elasticsearch - elasticsearch - 文档类型之间的查询
- react-native - 将属性声明为样式时,Eslint react/no-typos 规则会引发错误