2010-04-07 26 views
3

我正在努力升級我們的網站以使用不同的語言。最快的方式來存儲和檢索翻譯文本 - 數據庫或平面文件?

我的計劃是以多種語言存儲文本段落,並給每個段落一個標識符。


ID => '1'
簡短=> 'welcome_paragraph'
EN => '歡迎光臨我們的網站!'
de =>'Willkommen auf unserer Website!'

要求

  • 快速檢索隨時
  • 容易
  • 通過CMS編輯以添加新的語言

所以是這些信息存儲在一個數據庫表中的最佳解決方案?如果是的話,以下哪些是最好的表設置:

一個表,每種語言列和行的每一個簡短:

ID, brief, en, de, es 

兩個表,一個與breifs,一個帶翻譯:

ID, brief 

ID, language, translation 

在每一頁,我打算做....

回聲$頁面級>翻譯($語言,$短暫);

多次帶出文本的需要一塊....這將是緩慢的不斷的打電話與數據庫:每一頁上

SELECT translation FROM translations 
WHERE language = 'es' AND brief = 'welcome_paragraph' 
LIMIT 1 

多次?因此有沒有更好的方式來將它存儲爲flatfile?或者在更新上生成的包含大量翻譯的PHP文件?

$english = array(
'message1' => 'message1', 
'message2' => 'message2', 
'message3' => 'message3'); 


$german = array(
'message1' => 'Nachricht1', 
'message2' => 'Nachricht2', 
'message3' => 'Nachricht3'); 

就像在Zend Translate page 我沒有使用Zend翻譯在這個時候考慮的例子......我認爲有它成本?

+0

爲什麼'隨時產生'?你不希望翻譯在運行時改變,是嗎?爲什麼不只是在一個正常的靜態PHP包括? – bobince 2010-04-07 13:56:36

+0

「我現在不考慮在這個時候使用Zend翻譯......我認爲它有成本嗎?」如果你的意思是成本,如美元,不,沒有成本。 Zend框架是免費且開源的,在BSD許可下。這就像它得到的一樣自由。 – 2010-04-07 14:10:22

+0

我已經改變了「在飛行中」,應該更新,謝謝你指出這個問題。 – 2010-04-07 14:12:47

回答

3

http://php.net/manual/en/book.gettext.php的多語言網站

你可以看看WordPress的行動看的gettext的解決方案。

+0

我同意這是最好的解決方案。如果使用數據庫方式,則需要實施一些緩存操作,否則會浪費資源。 – 2010-04-07 14:03:23

相關問題