【问题标题】:Localization via database or flat file?通过数据库或平面文件进行本地化?
【发布时间】:2011-08-02 05:50:13
【问题描述】:

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

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

在我看来,如果标签在数据库中,加载的数据就会更少(我只能请求单个页面所需的标签),并且可以更轻松地构建用于翻译的管理工具。但是,似乎许多应用程序和框架为此目的使用平面文件(例如 phpMyAdmin、CakePHP 等)

【问题讨论】:

    标签: php database localization internationalization application-design


    【解决方案1】:

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

    如果您不想在每次显示某些内容时都加载所有本地化字符串,您始终可以选择将它们放入不同的文件中。例如,随处显示的字符串的“全局”文件,以及特定于您所在页面/部分的本地化文件。

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

    【讨论】:

      【解决方案2】:

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

      • 每次要更改翻译时,您都需要将数据插入/更新到数据库中——这比使用平面文件更难。
      • 你需要大量的选择来构建一个完全翻译的页面——这对性能不太好(意味着你必须设置一些缓存机制)


      出于好奇,为什么不看看其他的东西——目标是翻译的东西?

      在这里,我正在考虑Gettext,它被广泛使用——PHP 有一个Gettext 扩展(我应该添加其他可用的类——例如在 Zend 框架中).

      【讨论】:

      • 加载平面文件的方法非常简单,我没有看到任何第三方解决方案的好处。
      • 关于gettext,我认为现有工具是一个优势(从未使用过,但我知道有一些)
      猜你喜欢
      • 2016-06-22
      • 2010-11-06
      • 2019-05-30
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2011-01-22
      相关资源
      最近更新 更多