2010-05-25 32 views
6

我有一個目前全英文的網站。這是一個在線遊戲,所以它有一堆靜態文本的不同頁面,以及數據庫中的大量內容。如何處理動態網站本地化?

我試圖擴大更多的全球範圍內,並準備發佈一些本地化的網站。但是,我不確定如何設置這個最好的方法,以便它對我來說是最容易管理的,也是用戶最容易使用的。

我應該將翻譯的文本存儲在數據庫中,還是應該以完全不同的方式完成?如果它很重要,該網站是用PHP編寫的並使用MySQL。

回答

1

在我的經驗,做手工所有翻譯可以是一個真正的噩夢支持! % - )

我認爲你必須將你的翻譯集中到儀表板命令站點,如導航菜單和所有其他用戶配置文件設置,以及網站周圍的按鈕等等!

通過包括到您的網頁做這個文件是這樣的:

include "./includes/languages/english.php"; 

在一個名爲EX:把english.php這樣的前

define('LAN_USER_LOGIN' , 'User Logged In'); 
define('LAN_USER_LOGOUT' , 'User Logged Out'); 
..... 

等 italian.php,西班牙.php,french.php等...並且在每個文件中都有相同的已定義變量,但翻譯完畢!

然後你可以讓用戶從國家列表中選擇!許多方式做這btw!

一種方式可以通過使用會話

// if the user haven't selected a language before!! 
if (empty($_SESSION['language'])) { 
$_SESSION['language'] = "EN"; 
} else { 
$_SESSION['language'] = YOUR_LANG ; 
} 

所有其他內容我推薦使用的工具,如

http://code.google.com/intl/it-IT/apis/ajaxlanguage/


注:我建議你不使用自動識別系統,因爲它會導致非常惱人的體驗,特別是如果你從另一個國家觀看該網站!或者只是你想從中選擇,簡單讓用戶最終選擇! ;-)

使用自動識別進行自動填充註冊的目的! ;-)

希望對您有所幫助!

1

我建議使用集中存儲(這可能是一個MySQL數據庫表,其中有一列「語言」,它存儲翻譯的語言)。這也可以是XML文件,每種語言一個文件。

如果您正在尋找更多的可用文件格式,看看從Zend框架此文檔頁面:http://framework.zend.com/manual/en/zend.translate.adapter.html

對於翻譯我就可以創建一個自定義函數或自定義類,如果你不使用框架已包括翻譯。

另一種選擇是使用標準的PHP函數。只需查找「_()」函數即可。我還沒有與這些功能合作,只是發現他們,不知道他們工作得如何。

1

我建議使用gettext的框架集成(例如Zend)並以.po文件格式存儲。 .po格式具有編輯器,可以使翻譯工作公平。它也非常便攜(因此名稱),並可以隨你移動到其他遊戲中。

1

我們對Zend框架採用混合方法。頁面內容(WYSIWYG頁面)存儲在數據庫中(每種語言一個記錄,非本地化數據與本地化數據分離並存儲在鏈接的不同表格中),但字段標籤和標準錯誤/反饋消息存儲在XML中或gettext文件(每種語言一個文件)。

1

我們使用一種混合的方法:

  • 數據庫的CMS的網頁翻譯
  • XML的字/句子翻譯(靜態文本,標籤,錯誤信息等)

對於數據庫,我們通常使用2個表格:1表示主要內容,其他表格翻譯,因此如果翻譯不可用,我們可以選擇做什麼:以原始語言顯示內容,或隱藏它。

對於XML,我們使用XLIFF格式,可以很容易地被很多框架和軟件