.po将 GNU gettext (可移植对象)文件编译为.mo(机器对象)的好处和主要原因是什么?
我看到很多程序.po直接读取/解析。
我没有使用 wordpress,但在他们的文档中它说:
https://codex.wordpress.org/I18n_for_WordPress_Developers
PO 文件被编译为二进制 MO 文件,可以在运行时更快地访问字符串
更快的访问速度是真的吗?PO 只能读取一次并缓存在某个哈希表中,MO 可能也是如此
有以下几个原因:
msgfmt --checkPO 文件执行多项重要检查,而不仅仅是语法检查。例如,如果您使用 printf 格式字符串,它将检查翻译中的 % 扩展是否与原始字符串匹配。如果不这样做,可能会导致运行时崩溃。根据(编程)语言的不同,还有更多的检查。/usr/share/locale/LOCALE/LC_MESSAGES/TEXTDOMAIN.mo,并且应采用 MO 格式,而不是 PO 格式。当然,这不适用于无数只实现 gettext API 子集的库。