在使用 GNU Autotools 的项目中,是否有启动 xgettext 的任务?

发布于 2024-08-06 20:14:56 字数 1008 浏览 8 评论 0原文

摘要:

我有一个使用 GNU Autotools 的项目。我有一个罐子文件。我需要更新它。有没有一个神奇的“make”任务为我运行 xgettext(我很懒?)

详细版本:

嗨,

我正在尝试使用 GNU autotools 和 gettext 设置一个项目。

我试图遵循“惰性”路径(即只编写configure.ac、Makefile.am 等,并让工具尽可能为我生成其余部分)。

我在我的包上使用过一次 gettextize ,所以我创建了一个 package.pot 文件,并派生了一个 fr.po 文件(我正在尝试翻译成法语)。

我从未设法翻译我的代码,但我发现这可能是因为代码不在正确的位置。翻译后的字符串位于 lib 而不是 main 中,并且文档非常不清楚在这种情况下我必须做什么。如果我的 main 调用 lib 中的函数,并且 lib 中的函数正在使用 _()。在这种情况下我应该使用 dgettext 的 gettext 吗?我的库只是出于组织目的而放在这里,因此我可以使用相同的域(整个应用程序只有一个 package.pot 文件)。

因此,为了尝试更简单的方法,我将字符串移至主字符串(目前它实际上只是一个 hello world)。所以我至少需要更新 package.pot 文件,以意识到字符串位置发生了变化,需要吗?在这种情况下,我会手动使用 xgettext (痛苦地将所有有趣的 cpp 文件的列表传递给它,当我有多个文件时,这将是一件痛苦的事情),或者是否有一个“做任何”任务,我需要可以跑吗?

这可能看起来很愚蠢,但我一直没能找到它。

另外,有关查找为什么我的代码未翻译的任何帮助(http://www.gnu.org/software/gettext/FAQ.html#integrating_noop)欢迎!

谢谢

PH

Summary :

I have a project using GNU Autotools. I have a pot file. I need to update it. Is there a magical "make" task that run xgettext for me (I'm lazy ?)

Verbose version :

Hi

I am trying to setup a project using GNU autotools and gettext.

I'm trying to follow the 'lazy' path (that is, only writing configure.ac, Makefile.am, and such, and let tools generate the rest for me as much as possible).

I used gettextize once on my package, so I got a package.pot file created, and I derived a fr.po file (I'm trying to translate in french).

I never managed to get my code translated, but I figured out it might be because the code was not in the proper place. The translated string is in a lib instead of a main, and the documentation is quite unclear about what I must do in this case. If my main call a function in a lib, and the function from the lib is using _(). Should I use gettext of dgettext in this case ? My lib is just here for organisation purpose, so I'm okay with using the same domain (only one package.pot file for the whole app).

So, to try something simpler, I moved my string to the main (it's really just a hello world, for the moment). So I need to update the package.pot file, at least, to realize that the string position changed, need I ? In this case, would I use xgettext manually (painfully passing it the list of all interesting cpp files, which will be a pain in the ass when I have more than one file), or is there a 'make whatever' task somewhere that I can run ?

This may look stupid, but I've not been able to find it.

Also, any help on finding why my code is not translated, (anything not in http://www.gnu.org/software/gettext/FAQ.html#integrating_noop) is welcome !

Thanks

PH

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

铁憨憨 2024-08-13 20:14:56

好吧,事实证明:

  • 在 po/ 文件夹生成的 Makefile 中有一个 update-po 任务,它正是我想要的;
  • 此任务查找 POTFILES.in 文件中引用的文件,我忘记更新该文件。

所以这是一件愚蠢的事情。

Ok, it turns out that :

  • there is a update-po task in the generated Makefile of the po/ folder, that does just what I want ;
  • this tasks looks to file referenced in the POTFILES.in file, which I had forgotten to update.

So it was something stupid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文