gettext - po文件编译成mo的好处

标签 gettext po mo

编译 GNU gettext 的好处和主要原因是什么 .po (可移植对象)文件到 .mo (机器对象)?

我看到很多程序在读取/解析 .po直接地。

我没有使用 wordpress,但在他们的文档上说:

https://codex.wordpress.org/I18n_for_WordPress_Developers

PO files are compiled to binary MO files, which give faster access to the strings at run-time



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

最佳答案

有几个原因:

  • 你应该总是用 msgfmt --check 编译 PO 文件它对 PO 文件执行多项重要检查,而不仅仅是语法检查。例如,如果您使用 printf 格式字符串,它将检查翻译中的 %-expansions 是否与原始字符串匹配。如果不这样做,可能会导致运行时崩溃。根据(编程)语言,还有更多检查。
  • 读取二进制 MO 文件通常比解析文本 PO 文件更快、更简单。
  • PO 文件通常包含不应用于生产的翻译条目,例如模糊或过时的条目。
  • 许多 PO 解析器有缺陷或不完整。
  • 它是 gettext API 的一部分。预计翻译将位于 /usr/share/locale/LOCALE/LC_MESSAGES/TEXTDOMAIN.mo 下并且它们应该是 MO 格式,而不是 PO 格式。当然,这不适用于仅实现 gettext API 子集的无数库。
  • 关于gettext - po文件编译成mo的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53743208/

    相关文章:

    python - 在 Python 中使用 beautifulsoup 抓取 IMDB;搜索结果然后输入链接然后获取年份

    gettext - 在 Weblate 中本地化 Markdown 文件的最佳方法是什么?

    php - Gettext 与上下文一起使用 (pgettext)

    php - 如何使用 Translate Toolkit 将 .po 转换为 PHP 数组(Zend Framework)?

    zend-framework - 有人可以分解本地化文件(.mo,.po)生成的工作方式吗?

    java - 如何让 xgettext 支持 i18n Java?

    localization - 查找 .po 文件中的差异

    localization - 使用 gettext 和 .po 文件时组合键和全文

    internationalization - 如何在 Mac 上将 .po 文件转换为 .mo 文件?