Gettext默认语言错误
我正在使用 gettext 来处理我的 C++ 项目的翻译。我使用 xgettext 生成 .pot 文件,然后使用 msginit (en.po 和 es.po) 创建西班牙语和英语的 .po 文件。
问题是,虽然我系统上的区域设置设置为西班牙语,但自动填充的 .po
文件是 en.po
,它应该是 es.po
,因为在我的项目中所有字符串默认都是用西班牙语编写的。总而言之,en.po
中的内容应该是 es.po
中的内容,反之亦然。
有没有办法让 xgettext 和/或 msginit 西班牙语成为默认语言?
I'm using gettext to handle translations on a C++ project of mine. I generate the .pot file using xgettext and then I create .po files for spanish and english using msginit (en.po and es.po) .
The problem is that, although the locale on my system is set to spanish, the .po
file that gets automatically filled is en.po
, where it should be es.po
, because all strings are by default written in spanish in my project. All in all, the content from en.po
should be the one in es.po
and viceversa.
Is there a way of letting xgettext
and/or msginit
that spanish is the default language?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
长期以来,使用英语以外的其他语言作为项目的基本语言一直被认为会带来麻烦。如今,情况已不再如此。
在 msginit 0.19.8.1 中,当您运行
msginit -l en -i project.pot
时,会创建文件en.po
,但所有翻译都会使用其原始值进行初始化。显然msginit
假设英语是该项目的基本语言。但这很容易解决:只需在编辑器中打开en.po
并丢弃除第一个条目(PO 标头)之外的所有条目。调用
xgettext
时,您应该始终为其提供选项--from-code=utf-8
。除此之外,使用英语以外的其他基本语言没有问题。Using other languages than English as the base language of your project has been considered a recipe for trouble for a long time. This is no longer true today.
With msginit 0.19.8.1, when you run
msginit -l en -i project.pot
, the fileen.po
gets created but all translations are initialized with their original value. Obviouslymsginit
assumes that English is the base language of the project. But that can be easily fixed: Just open theen.po
in your editor and throw away all entries but the first one (the PO header).When invoking
xgettext
you should always give it the option--from-code=utf-8
. Other than that there are no problems to use another base language than English.