django - 为什么gettext没有数据库存储选项?

标签 django web-applications internationalization gettext

我正在使用Django在基于Web的应用程序上执行一些i18n,它使用gettext作为其i18n基础。似乎应该将翻译存储在数据库中,这并不难,但是文件系统上的po文件仍在使用中,这似乎是一个显而易见的想法。为什么是这样?

我目前的怀疑是,开发getdb作为后备的软件包,其可靠性/熟悉程度根本无法胜过开发db backaged的好处。还有其他重要原因可以继续将翻译存储在文件系统上吗?

最佳答案

性能是主要原因。 Gettext没有使用数据库,因为数据库总是比文件慢得多。字典的加载时间非常重要,因此几乎每个人都为此使用文件。

此外,已编译的gettext文件(.mo)已优化为加载到内存中,因此,它们比纯文本文件(如未编译的.po文件)更合适。

您可以始终使用翻译平台(可能使用数据库后端)来进行的翻译并将结果导出到文本文件。示例:PootleNarroLaunchpad RosettaTransifex (hosted only)

不要将您的应用程序语言文件与本地化数据库混淆。您的应用程序应使用快速加载的基于文件的词典,并且本地化系统可能必须使用数据库,并且在逻辑上能够将数据导出到文件中。

顺便说一句,使用gettext可能是您可能对本地化做出的最佳技术决策。我从未见过任何商业解决方案或内部开发能够在功能,工具甚至支持上与之竞争的解决方案。

关于django - 为什么gettext没有数据库存储选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437105/

相关文章:

MySQL 和 Filemaker Pro?

python - 向 django-cms 添加自定义占位符

javascript - 如何检测拉动刷新

rest - 本地 IP 地址的 HTTPS

javascript - 使用动态文本和输入进行字符串翻译

Grails:从 i18n 消息属性获取消息的首选方法

javascript - Django jquery ajax 图片上传

python - 如何限制员工用户在 Django 管理页面中只能看到他们的信息?

django - 如何将分页应用于 Django 中的过滤查询集

php - Kohana 3 中的 i18n 和错误消息