3

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

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

在我看来,如果标签在数据库中是较少的数据加载(我只能要求所需要的单页标签),并可以更轻松地构建管理工具的翻译。然而,似乎许多应用程序和框架,在那里使用纯文本文件用于这一目的(如phpMyAdmin的,CakePHP的,等等)

回答

4

加载数据方式比从数据库加载速度更快。你只需要在你的数据和应用程序之间进行多层抽象。如果您对应用程序进行性能分析,您会发现数据库访问通常是最慢的操作之一。

如果你不希望每次显示一些时间来加载所有的本地化字符串,你总是有选择把他们在型动物文件。例如,一个用于显示字符串的“全局”文件无处不在,以及特定于您所在页面/部分的本地化文件。

这就是说,与有关性能什么,不要把我的话,而是你自己MESURE它。也许在你的特殊情况下,对于你的特殊应用,数据库可以做得很好。

1

数据库,您可以选择只记录你感兴趣的......
但是:

  • 您每次需要更改翻译时都需要插入/更新数据到数据库 - 这比使用平面文件更困难。
  • 你需要大量的选择,打造一个完全翻译的页面 - 这是不是演出相当不错(和意味着你必须把一些缓存mecanism到位)


出于好奇,为什么不看看别的东西 - 目标是翻译的东西?

在这里,我想Gettext,它被广泛应用于 - 并有一个Gettext扩展库(我要补充还有其他的课程 - 在Zend框架,例如)。从文件

+0

加载平面文件的方法非常简单,我没有看到任何第三方解决方案的好处。 – pmm 2011-04-09 21:34:04

+0

关于gettext,我想现有的工具是一个优势*(从来没有使用过这些,但我知道有一些)* – 2011-04-09 21:36:57