为什么 Python gettext 模块需要编译步骤(.po -> .mo)?
我没有看到编译步骤增加任何价值。
I don't see that the compilation step is adding any value.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我没有看到编译步骤增加任何价值。
I don't see that the compilation step is adding any value.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
快速阅读
.mo
文件,很明显:给定 gettext 函数,可以在运行时按键查找字符串 ,该查找的高效实现是合理的。
此外,gettext 对性能的影响必须可以忽略不计;否则,对于讲英语的黑客来说,与国际社会友好相处的兴趣会更低(来自所有国家,我们都说英语,编程语言都是英语)。
使 .mo 文件成为已处理的表示形式很好,因为
Reading just quickly about
.mo
files, it is clear that:Given gettext's function, to lookup strings by keys at runtime, it is reasonable for this lookup to be implemented efficiently.
Also, it is needed for gettext's performance impact to be negligible; else interest to play nice with the international community would be even lower for english-speaking hackers (from all countries, we all speak english, programming languages are in english).
Making the .mo file an already processed representation is good since
因为Python中的gettext模块遵循GNU gettext标准,该标准要求人们使用PO文件进行翻译,并在运行时使用MO文件供应用程序使用。当您使用 gettext 模块时,您实际上正在使用 GNUTranslations 类,该类的名称表明它是 GNU gettext 的实现。
但是你可以提供自己的 Translations 类并从 PO 文件加载翻译,这没有什么特别的。标准 Python 发行版中甚至还有一些 PO 文件阅读器的实现,请参阅 Tools 目录中的脚本 msgfmt.py。
Because gettext module in Python follows GNU gettext standards which required to use PO files for do translations by people, and MO files for using by application in runtime. When you're using gettext module you're actually using GNUTranslations class, which name suggests it's implementation of GNU gettext.
But you can provide your own Translations class and load translations from PO files, there is nothing special about it. There is even some implementation of PO files reader in standard Python distribution, see script msgfmt.py in Tools directory.
我认为编译是 .po -> .mo
GNU `gettext' 实用程序 - 1.4 文件传送翻译
I think that the compilation is .po -> .mo
GNU `gettext' utilities - 1.4 Files Conveying Translations