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