不同的 gettext 文件格式有何用途?
我开始尝试翻译 C 程序中一些最常用的文本条目 使用 gettext,但是当深入研究这个时我得到了一些 对所有不同的文件格式有点困惑 因为功能似乎有一些重叠?
我想了解不同格式
.po
.pot
.mo
.gmo
- (我的其他格式已排除?)
并了解
- 正常的工作流程是什么?
- 该文件格式包含什么内容?
- 通常使用哪些工具?
- 哪些“相反”方向的转换是可能的 (1)?
(1) 我知道 msgunfmt 可以从 .mo 转换为 .po,但由于 .mo 是 最终的结束格式我认为这不是一个无损的过程。即如果 我从 hello1.mo 转换为 hello2.po,然后从 hello2.po 转换 对于 hello3.mo,我假设 hello1.mo 和 hello3.mo 将包含 相同的语言字符串,但有一些元信息 中途会迷路吧?
I started trying to translate a few of the most used text entries in a C program
using gettext, but when digging into this I got a little
bit confused about all the different file formats
since there seems to be some overlap in functionality?
I would like get an overview of the different formats
.po
.pot
.mo
.gmo
- (other formats I have excluded?)
and learn
- What is the normal workflow?
- What does this file format contain?
- What tools are typically used?
- What "opposite" direction conversions are possible (1)?
(1)
I know that msgunfmt can convert from .mo to .po, but since .mo is the
final end format I assume this is not a lossless process. I.e. if
I convert from hello1.mo to hello2.po and then convert from hello2.po
to hello3.mo, I assume that hello1.mo and hello3.mo will contain
identical language strings but that some meta information
will be lost along the way, right?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我可能是错的,但是:
.pot - 人类可读的 gettext 模板文件 - 这是你要给翻译者(人?)的。
.po - 基于 POT 的人类可读 gettext 翻译文件 - 这就是翻译器返回给您的内容。
.mo - PHP 在进行实际翻译时使用的机器可读代码(字节码?)。这种格式就是您要提供给 php.ini 的格式。它是大多数程序都能理解的通用格式,但它可能不支持所有 gnu gettext 功能。这就是转基因生物发挥作用的地方。
.gmo - 当已知这些文件使用 GNU 格式时,以 .gmo 结尾的文件实际上是 MO 文件。
您可以使用 poedit 来处理 .pot -> .po-> .mo
更多信息
PS话虽如此 - 只有程序员将 PO 或 XML 等格式称为人类可读的格式。
另外 - 你可能不需要将 .mo 转换为 .po...好吧..至少这对我来说似乎不是一个常见的场景:)
I could be wrong but:
.pot - human readable gettext template file - this what you would give to translator (person?).
.po - human readable gettext translated file based on POT - this is what translator gives you back.
.mo - machine readable code (bytecode?) to be used by PHP when doing actual translation. This format is what you would feed to php. It's a generic format understood by most programs but it might not support all gnu gettext features. This is where gmo comes in place.
.gmo - files ending with .gmo are really MO files, when it is known that these files use the GNU format.
You can use poedit to handle .pot -> .po -> .mo
more info
P.S. with that being said - only programmers would call formats like PO or XML a human-readable.
also - you probably won't need to convert .mo to .po...well..At least this doesn't seem like a common scenario to me :)