Php 通过数据库还是平面文件进行本地化?

Php 通过数据库还是平面文件进行本地化?,php,database,localization,internationalization,application-design,Php,Database,Localization,Internationalization,Application Design,对于多语言PHP应用程序,假设标签/短语将被翻译成多种语言。这些标签可以放在特定语言的文件中,例如每种语言一个文件,或者可以加载到数据库中,以便应用程序可以在需要时访问它们 问题是,从性能的角度来看,什么是更好的方法 对我来说,如果标签在数据库中,那么加载的数据就更少了,我只能请求单个页面所需的标签,并且可以更轻松地构建用于翻译的管理工具。然而,许多应用程序和框架似乎都使用平面文件来实现这一目的,例如phpMyAdmin、CakePHP等。数据库只允许您选择感兴趣的记录。。。 但是: 每次要更改

对于多语言PHP应用程序,假设标签/短语将被翻译成多种语言。这些标签可以放在特定语言的文件中,例如每种语言一个文件,或者可以加载到数据库中,以便应用程序可以在需要时访问它们

问题是,从性能的角度来看,什么是更好的方法


对我来说,如果标签在数据库中,那么加载的数据就更少了,我只能请求单个页面所需的标签,并且可以更轻松地构建用于翻译的管理工具。然而,许多应用程序和框架似乎都使用平面文件来实现这一目的,例如phpMyAdmin、CakePHP等。

数据库只允许您选择感兴趣的记录。。。 但是:

每次要更改翻译时,都需要将数据插入/更新到数据库中,这比使用平面文件更难。 要构建一个完全翻译的页面,您需要进行大量的选择,这对性能不是很好,这意味着您必须将一些缓存机制放在适当的位置 出于好奇,为什么不看一看其他东西——目标是什么


这里,我考虑的是,在Zend Framework中,它被广泛使用——我应该添加一个PHP扩展——还有其他可用的类。

从文件加载数据要比从数据库加载快得多。您只需在数据和应用程序之间削减许多抽象层。如果您分析应用程序的性能,您将看到数据库访问通常是最慢的操作之一

如果您不希望每次显示某个内容时都加载所有本地化字符串,那么您始终可以选择将它们放在不同的文件中。例如,到处显示字符串的全局文件,以及特定于您所在页面/分区的本地化文件


也就是说,与任何有关性能的事情一样,不要相信我的话,而是自己去测量。也许在您的特定环境中,使用您的特定应用程序,数据库会很好。

加载平面文件的方法非常简单,我看不到任何第三方解决方案的好处。关于gettext,我认为现有工具是一个优势,从未使用过这些工具,但我知道有一些优势