将po文件编译为Mo的好处

时间:2018-12-12 12:37:53

标签: gettext po mo

将GNU gettext .po(便携式对象)文件编译为.mo(机器对象)的好处和主要原因是什么?

我看到许多程序直接读取/解析.po

我没有使用wordpress,但在他们的文档中显示:

https://codex.wordpress.org/I18n_for_WordPress_Developers

  

PO文件被编译为二进制MO文件,从而可以在运行时更快地访问字符串

更快的访问是否正确? PO只能读取一次并缓存在某个哈希表中,MO可能也是如此

1 个答案:

答案 0 :(得分:1)

有几个原因:

  1. 您应始终使用msgfmt --check编译PO文件,该文件对PO文件执行多项重要检查,而不仅仅是语法检查。例如,如果您使用的是printf格式的字符串,它将检查转换中的%扩展名是否与原始字符串匹配。否则,可能会导致运行时崩溃。还有很多检查,具体取决于(编程)语言。
  2. 读取二进制MO文件通常比解析文本PO文件更快,更简单。
  3. PO文件通常具有不应用于生产的翻译条目,例如模糊或过时的条目。
  4. 许多PO解析器有错误或不完整。
  5. 它是gettext API的一部分。翻译应位于/usr/share/locale/LOCALE/LC_MESSAGES/TEXTDOMAIN.mo下,并且应采用MO格式,而不是PO格式。当然,这不适用于仅实现gettext API子集的无数库。
相关问题