为什么gettext没有db存储选项?

Jiv*_*ara 10 django web-applications gettext internationalization

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

我目前的怀疑是,gettext作为一个完善的软件包的可靠性/熟悉程度简直超过了开发数据库的优势所带来的好处.还有其他重要原因继续将翻译存储在文件系统中吗?

sor*_*rin 9

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

此外,已编译的gettext文件(.mo)已针对在内存中加载进行了优化,因此它们比纯文本文件(如未编译的.po文件)更合适.

您始终可以使用可能使用数据库后端的翻译平台进行翻译并将结果导出到文本文件.示例:Pootle,Narro,Launchpad Rosetta,Transifex(仅托管).

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

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

  • 你忘了考虑这个文件也可以加载到内存中.并且`.mo`文件特别好,因为它已经包含了哈希表,所以你甚至不必在加载它时对字符串进行哈希处理. (5认同)
  • "数据库总是比文件慢得多"[citation-needed] - 尤其是 对于内存表和IO忙盘,这往往是错误的. (3认同)