我有一個目前全英文的網站。這是一個在線遊戲,所以它有一堆靜態文本的不同頁面,以及數據庫中的大量內容。如何處理動態網站本地化?
我試圖擴大更多的全球範圍內,並準備發佈一些本地化的網站。但是,我不確定如何設置這個最好的方法,以便它對我來說是最容易管理的,也是用戶最容易使用的。
我應該將翻譯的文本存儲在數據庫中,還是應該以完全不同的方式完成?如果它很重要,該網站是用PHP編寫的並使用MySQL。
我有一個目前全英文的網站。這是一個在線遊戲,所以它有一堆靜態文本的不同頁面,以及數據庫中的大量內容。如何處理動態網站本地化?
我試圖擴大更多的全球範圍內,並準備發佈一些本地化的網站。但是,我不確定如何設置這個最好的方法,以便它對我來說是最容易管理的,也是用戶最容易使用的。
我應該將翻譯的文本存儲在數據庫中,還是應該以完全不同的方式完成?如果它很重要,該網站是用PHP編寫的並使用MySQL。
在我的經驗,做手工所有翻譯可以是一個真正的噩夢支持! % - )
我認爲你必須將你的翻譯集中到儀表板命令站點,如導航菜單和所有其他用戶配置文件設置,以及網站周圍的按鈕等等!
通過包括到您的網頁做這個文件是這樣的:
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/
注:我建議你不使用自動識別系統,因爲它會導致非常惱人的體驗,特別是如果你從另一個國家觀看該網站!或者只是你想從中選擇,簡單讓用戶最終選擇! ;-)
使用自動識別進行自動填充註冊的目的! ;-)
希望對您有所幫助!
我建議使用集中存儲(這可能是一個MySQL數據庫表,其中有一列「語言」,它存儲翻譯的語言)。這也可以是XML文件,每種語言一個文件。
如果您正在尋找更多的可用文件格式,看看從Zend框架此文檔頁面:http://framework.zend.com/manual/en/zend.translate.adapter.html
對於翻譯我就可以創建一個自定義函數或自定義類,如果你不使用框架已包括翻譯。
另一種選擇是使用標準的PHP函數。只需查找「_()」函數即可。我還沒有與這些功能合作,只是發現他們,不知道他們工作得如何。
我建議使用gettext的框架集成(例如Zend)並以.po文件格式存儲。 .po格式具有編輯器,可以使翻譯工作公平。它也非常便攜(因此名稱),並可以隨你移動到其他遊戲中。
我們對Zend框架採用混合方法。頁面內容(WYSIWYG頁面)存儲在數據庫中(每種語言一個記錄,非本地化數據與本地化數據分離並存儲在鏈接的不同表格中),但字段標籤和標準錯誤/反饋消息存儲在XML中或gettext文件(每種語言一個文件)。
我們使用一種混合的方法:
對於數據庫,我們通常使用2個表格:1表示主要內容,其他表格翻譯,因此如果翻譯不可用,我們可以選擇做什麼:以原始語言顯示內容,或隱藏它。
對於XML,我們使用XLIFF格式,可以很容易地被很多框架和軟件