0

我没有看到编译步骤增加了任何价值。

4

3 回答 3

5

快速阅读.mo文件,很明显:

  • 它是机器可读的表示
  • 它是一个哈希表

给定 gettext 的功能,在运行时通过键查找字符串,这种查找有效实现是合理的。

此外,gettext 的性能影响需要忽略不计;否则,对于说英语的黑客(来自所有国家,我们都说英语,编程语言是英语),与国际社会打交道的兴趣会更低。

使 .mo 文件成为已处理的表示是很好的,因为

  • 该格式非常适合快速查找(哈希表)
  • 该格式在应用程序启动时几乎不需要处理(自定义表示二进制)
于 2009-09-10T22:43:41.943 回答
1

因为 Python 中的 gettext 模块遵循 GNU gettext 标准,该标准要求人们使用 PO 文件进行翻译,而应用程序在运行时使用 MO 文件。当您使用 gettext 模块时,您实际上是在使用 GNUTranslations 类,这表明它是 GNU gettext 的实现。

但是您可以提供自己的 Translations 类并从 PO 文件加载翻译,这并没有什么特别之处。在标准 Python 发行版中甚至还有一些 PO 文件阅读器的实现,请参见 Tools 目录中的脚本 msgfmt.py。

于 2010-01-07T16:02:54.953 回答
0

我认为编译是 .po -> .mo

.po 文件中的字母 PO 表示可移植对象,以区别于 .mo 文件,其中 MO 代表机器对象。

MO 文件旨在由程序读取,并且本质上是二进制文件。一些系统已经提供了用于创建和处理 MO 文件的工具,作为系统附带的本地语言支持的一部分,但是这些 MO 文件的格式通常因系统而异,并且不可移植。

GNU `gettext' 实用程序 - 1.4 文件传送翻译

于 2009-09-10T20:02:00.993 回答