1. 程式人生 > >網站設計--多語言網站實現方案

網站設計--多語言網站實現方案

多語言網站實現方案

  1,靜態:就是為每種語言分別準備一套頁面檔案,要麼通過檔案字尾名來區分不同語言,要麼通過子目錄來區分不同語言。

  例如對於首頁檔案index_en.htm提供英語介面,index_gb.htm提供簡體中文介面,index_big.htm提供繁體中文介面,或者是 en/index.htm提供英語介面,gb/index.htm提供簡體中文介面,big/index.htm提供繁體中文介面,一旦使用者選擇了需要的語言後,自動跳轉到相應的頁面,首頁以下其他連結也是按照同樣方式處理。從維護的角度來看,通過子目錄比通過檔案字尾名來區分不同語言版本顯得要簡單明瞭。

  2,動態:站點內所有頁面檔案都是動態頁面檔案(PHP,ASP等)而不是靜態頁面檔案,在需要輸出語言文字的地方統一採用語言變數來表示,這些語言變數可以根據使用者選擇不同的語言賦予不同的值,從而能夠實現在不同的語言環境下輸出不同的文字。

  例如:語言變數ln_name,當用戶選擇的語言是英語時賦值為“Name”,當用戶選擇的語言是簡體中文時賦值為“姓名”,這樣就可以適應不同語言時的輸出。

  採用靜態方式的優點是頁面直接輸出到客戶端,不需要在伺服器上執行,佔用伺服器的資源比較少,系統能夠支援的併發連線數較多,缺點是要為每種語言製作一套頁面檔案,很多內容即使是和語言無關的也要分不同語言來儲存,因此佔用的儲存空間較多。

  採用動態方式和靜態方式的優缺點正好相反,它的優點是動態頁面檔案只有一套,不同語言的文字使用語言變數來儲存,和語言無關的內容只儲存一份,佔用的儲存空間較少,並且擴充套件新語言比較容易,缺點需要在伺服器上執行,然後把結果輸入到客戶端,佔用伺服器的資源比較多,系統能夠支援的併發連線數較少。

  動態資料存貯涉及的一些技術問題

  由於現在網站上動態應用日益增多,相當多的網站還會使用檔案或者資料庫來儲存應用資訊,因此如果檔案或者資料庫中儲存的內容與語言相關時,還需要特別注意。對於儲存在資料庫中資訊,可以採取以下幾種方式支援多語言:

  1,在資料庫級別支援多語言:為每種語言建立獨立的資料庫,不同語言的使用者操作不同的資料庫。

  2,在表級別支援多語言:為每種語言建立獨立的表,不同語言的使用者操作不同的表,但是它們在同一個資料庫中。

  3,在欄位級別支援多語言:在同一個表中為每種語言建立獨立的欄位,不同語言的使用者操作不同的欄位,它們在同一個表中。

  由於資料庫中有大量的資訊(如標誌,編碼,數字等)是用於內部處理使用的,與語言無關的,因此在資料庫級別支援多語言會導致空間的極大浪費,在欄位級別支援多語言最大的問題是一旦需要支援新的語言,由於需要修改表結構,維護起來非常麻煩,可擴充套件性不好。

  相比之下,在表級別支援多語言比較好,因為並不是所有的表都需要支援多語言,對於與語言無關的表,不同語言的使用者共用一套,那些和語言相關的表根據支援語言的種類來建立,不同語言的使用者存取訪問不同的表格。這樣使得維護簡單,節省了儲存空間,即使是擴充套件起來也比較方便,只要把需要支援多語言的表,多建立一套即可。

  還需要注意的問題是:有些表中某些欄位是不同語言版本的表共享的(例如庫存量),由於各種語言的表之間的相對獨立性,使得資料共享有些困難。解決的方法有兩個:

  1,不同語言的表的共享欄位同步:也就是說,只要修改了其中一個表的共享欄位,其他語言表中該欄位也作相應改變,實際上當不同語言的使用者同時訪問時處理還是比較麻煩的,並且擴充新語言時修改工作比較大。

  2,增加一個新的表:把所有語言共享的欄位(例如貨物編號,產地編碼等)全部放在這個表,支援多語言的表只存放與各種語言相關的欄位。不同語言的使用者在使用資料庫時,需要操作兩個資料表。

  比較而言,第二種方法比較簡單,並且效率比較高,維護也比較方便。

  應用字符集的選擇

  一個定位於不同語言國家的企業網站勢必需要提供多種語言版本的產品和銷售資訊來滿足其世界各地使用不同語言的客戶和合作夥伴,其中包括法語、德語、義大利語、葡萄牙語、西班牙語、阿拉伯語等等。但有一個問題卻極易被網站設計者們所忽略。這就是網站的字符集設定問題。

  一般我們使用的是簡體中文(GB2312)字符集,而對多語言網站來說,中文字符集卻可能會使你辛辛苦苦的努力功虧一簣。原因很簡單:就是這個毫不起眼的小小字符集在作怪。

  計算機應用領域中存在著幾十種互不相同的字符集,而不同語言客戶在瀏覽不同語言網頁時,往往會因為相互間所使用字符集無法相容而出現亂碼情況。我們在瀏覽國外一些網站時,往往也會出現為了能正常地看到網站上的資訊而不得不在各種字符集之間來回切換的情況。

  試想一下:如果一個網站提供了中,英,法,德等多種語言版本的內容,內容全之又全,設計美侖美奐。我們在中文編碼環境下瀏覽這些非中文版本的頁面覺得非常完美,現在一個法國客戶對你的產品發生了興趣,當他進到法語版面一看—亂碼多多,甚至可能整個版面都一塌裡糊塗。你的網站再下大工夫又有什麼意義呢?

  所以對提供了多語言版本的網站來說,Unicode字符集應該是最理想的選擇。它是一種雙位元組編碼機制的字符集,不管是東方文字還是西方文字,在 Unicode中一律用兩個位元組來表示,因而至少可以定義65536個不同的字元,幾乎可以涵蓋世界上目前所有通用的語言的每一種字元。所以在設計和開發多語言網站時,一定要注意先把非中文頁面的字符集定義為“utf-8”格式。

  這一步非常重要,原因在於若等頁面做好之後再更改字符集設定,可說是一件非常非常吃力不討好的工作,有時候甚至可能需要從頭再來,重新輸入網站的文字內容。

  HTML中的META標籤:

  <META HTTP-EQUIV=“Content-Type” CONTENT=“text/html; CHARSET=字符集">

  不寫,根據瀏覽器預設字符集顯示

  charset=gb2312 簡體中文

  charset=big5 繁體中文

  charset=EUC_KR 韓語

  charset=Shift_JIS 或 EUC_JP 日語

  charset= KOI8-R / Windows-1251 俄語

  charset=iso-8859-1 西歐語系(荷蘭語,英語,法語,德語,義大利語,挪威語,葡萄牙語,瑞士語.等十八種語言)charset=iso-8859-2 中歐語系

  charset=iso-8859-5 斯拉夫語系(保加利亞語,Byelorussian語,馬其頓語,俄語,塞爾維亞語,烏克蘭語等)

  charset=uft-8 unicode多語言

  PHP與指令碼引擎頁碼的概念

  由於我們傳統使用的內碼像Big5,GB2312與unicode並不是一一對應,故兩者之間的轉換要靠codepage(頁碼)來實現

長按圖片識別圖中二維碼(或搜尋微信公眾號FrontEndStory)關注“前端那些事兒”,帶你瞭解最新的前端技術。