1. 程式人生 > >多語言網站(如何實現網站的多語言版本?)

多語言網站(如何實現網站的多語言版本?)

多語言網站,顧名思義就是能夠以多種語言(而不是單種語言)為使用者提供資訊服務,讓使用不同語言的使用者都能夠從同個網站獲得內容相同的資訊。多語言網站實現方案
1
,靜態:就是為每種語言分別準備一套頁面檔案,要麼通過檔案字尾名來區分不同語言,要麼通過子目錄來區分不同語言。例如對於首頁檔案index_en.htm提供英語介面,index_gb.htm提供簡體中文介面,index_big.htm提供繁體中文介面,或者是en/index.htm提供英語介面,gb/index.htm提供簡體中文介面,big/index.htm提供繁體中文介面,一旦使用者選擇了需要的語言後,自動跳轉到相應的頁面,首頁以下其他連結也是按照同樣方式處理。從維護的角度來看,通過子目錄比通過檔案字尾名來區分不同語言版本顯得要簡單明瞭。

2
,動態:站點內所有頁面檔案都是動態頁面檔案(PHPASP等)而不是靜態頁面檔案,在需要輸出語言文字的地方統一採用語言變數來表示,這些語言變數可以根據使用者選擇不同的語言賦予不同的值,從而能夠實現在不同的語言環境下輸出不同的文字。例如:語言變數ln_name,當用戶選擇的語言是英語時賦值為“Name”,當用戶選擇的語言是簡體中文時賦值為姓名,這樣就可以適應不同語言時的輸出。採用靜態方式的優點是頁面直接輸出到客戶端,不需要在伺服器上執行,佔用伺服器的資源比較少,系統能夠支援的併發連線數較多,缺點是要為每種語言製作一套頁面檔案,很多內容即使是和語言無關的也要分不同語言來儲存,因此佔用的儲存空間較多。
採用動態方式和靜態方式的優缺點正好相反,它的優點是動態頁面檔案只有一套,不同語言的文字使用語言變數來儲存,和語言無關的內容只儲存一份,佔用的儲存空間較少,並且擴充套件新語言比較容易,缺點需要在伺服器上執行,然後把結果輸入到客戶端,佔用伺服器的資源比較多,系統能夠支援的併發連線數較少。動態資料存貯涉及的一些技術問題由於現在網站上動態應用日益增多,相當多的網站還會使用檔案或者資料庫來儲存應用資訊,因此如果檔案或者資料庫中儲存的內容與語言相關時,還需要特別注意。對於儲存在資料庫中資訊,可以採取以下幾種方式支援多語言:
1
,在資料庫級別支援多語言:為每種語言建立獨立的資料庫,不同語言的使用者操作不同的資料庫。

2
,在表級別支援多語言:為每種語言建立獨立的表,不同語言的使用者操作不同的表,但是它們在同一個資料庫中。
3
,在欄位級別支援多語言:在同一個表中為每種語言建立獨立的欄位,不同語言的使用者操作不同的欄位,它們在同一個表中。由於資料庫中有大量的資訊(如標誌,編碼,數字等)是用於內部處理使用的,與語言無關的,因此在資料庫級別支援多語言會導致空間的極大浪費,在欄位級別支援多語言最大的問題是一旦需要支援新的語言,由於需要修改表結構,維護起來非常麻煩,可擴充套件性不好。相比之下,在表級別支援多語言比較好,因為並不是所有的表都需要支援多語言,對於與語言無關的表,不同語言的使用者共用一套,那些和語言相關的表根據支援語言的種類來建立,不同語言的使用者存取訪問不同的表格。這樣使得維護簡單,節省了儲存空間,即使是擴充套件起來也比較方便,只要把需要支援多語言的表,多建立一套即可。還需要注意的問題是:有些表中某些欄位是不同語言版本的表共享的(例如庫存量),由於各種語言的表之間的相對獨立性,使得資料共享有些困難。解決的方法有兩個:
1
,不同語言的表的共享欄位同步:也就是說,只要修改了其中一個表的共享欄位,其他語言表中該欄位也作相應改變,實際上當不同語言的使用者同時訪問時處理還是比較麻煩的,並且擴充新語言時修改工作比較大。
2
,增加一個新的表:把所有語言共享的欄位(例如貨物編號,產地編碼等)全部放在這個表,支援多語言的表只存放與各種語言相關的欄位。不同語言的使用者在使用資料庫時,需要操作兩個資料表。