2011-12-05 52 views
11

我需要翻譯我的網站在多種語言。我正在考慮使用稱爲語言的數據庫,並將翻譯放在那裏。在php或mysql中翻譯網站?

database : translation 
tables: language 
column: id, english, french, german, italian, spanish 

或我在想一個PHP的解決方案,如:

english.php 
french.php 
german.php 
italian.php 
spanish.php 

所以只需包括您需要的文件。

現在,我可以看到兩者的優點和缺點,我想知道的是什麼是行業中的標準來做這樣的事情?

+0

創建每個頁面更容易更優雅:en.php,fr.php ...更好的是,每次查詢數據庫 – amrfaissal

+0

您能告訴我爲什麼嗎? – Adam

+0

我只是覺得這個網站可以維護!如果你需要改變一個詞的翻譯,你需要去數據庫並改變它!假設中國人喜歡你的網站,他們需要翻譯以獲得更好的體驗,你需要去數據庫並再次改變,這是不恰當的。 – amrfaissal

回答

12

您可以使用gettext,此功能提出了今年功能,而不是「標準」,但足夠快。

第二種選擇是使用大數組的PHP文件(真的很大,對於每個字符串),這是最常見的解決方案。

對數據庫內容(這裏的大問題,不要忘了),如果所有的內容必須有翻譯,每種語言一列,否則使用語言的標誌數據庫每一行。

+2

+1關於gettext最好的事情之一是有許多優秀的翻譯工具可以用適當的格式創建文件,並且如果您將來需要專業翻譯,也可以輕鬆提交多個在線服務。 –

2

沒有行業標準。我已經看到(並實施了)使用平面文件,XML,PHP代碼,數據庫和gettext文件來存儲本地化字符串的解決方案。這是什麼更適合

我去到PHP的方法是簡單地包含字符串數組,例如

en.php

return array (
    'How are you?' => 'How are you?', 
    'Goodbye' => 'Goodbye', 
); 

de.php

return array (
    'How are you?' => 'Wie gehts?', 
    'Goodbye' => 'Auf wiedersehen', 
); 

此文件可以以合理的粒度集成到應用程序中(可以有許多這樣的文件,例如一個對於每個組件)和控制(如果沒有找到字符串,您可以輕鬆地回退到任何其他語言),而且它也非常方便,無需特殊工具即可進行修改。

我最喜歡的PHP框架(Yii)和我曾經開發的一個巨大的開源項目(Moodle)也使用這種方法。

+0

我已經成功地使用不同的語言中的數組,我發現它是最容易在我現有的項目實施(相當大的)。還要記住,只能加載你需要在啓動陣列的所有他們的,而不是加載它們,然後選擇一個,我發現它是快了很多的方式。 – Luke

2

這兩種解決方案中的任何一個對我來說似乎都很棒。從長遠來看,您應該考慮解決方案。

如果您選擇使用不同於您認爲是俄語或中文的其他語言翻譯您的網站,該怎麼辦?在第一種情況下,您必須添加越來越多的列,第二種情況下您必須創建越來越多的文件。另一個缺點是,如果你翻譯一個意大利文和西班牙文但還沒有法文的頁面?

我認爲一件好事是擁有基於數據庫的解決方案和主要語言。現在你可以做這樣的事情:

  • 創建一個表'頁面'(ID,標題,...),在那裏你將存儲頁面的主要語言,你會得到的信息翻譯頁面太
  • 創建表「翻譯」(idsource,idtranslation,語言)
  • 每次檢查可用的翻譯,並給那些用戶
+0

一個好的解決方案,但你的解釋可能是有點不清楚的人誰沒有做足夠的工作與數據庫。 – RonLugge

0

在數據庫本地化中,您有四個主要策略。每個都有特別的優點和缺點。從長遠來看,我肯定會推薦克隆。你可以看到在下面的鏈接的四種方法:

http://www.sisulizer.com/localization/software/server-desktop-database.shtml

在那裏,你要確保實現兩種主要的觀點是。首先,確保你正在整合某種形式的翻譯記憶。你的語言供應商應該指導你如何做到這一點,並可能爲你做。

第二,你的目標每增加語言,你的數據將得到至少2倍更復雜。隨着您的前進,請記住這一點。不僅是你的數據,但你的文件集,管理等

希望有所幫助。如果您還有其他問題,請告訴我。 Russell