多語(yǔ)言網(wǎng)站實(shí)現(xiàn)方案
1,靜態(tài):就是為每種語(yǔ)言分別準(zhǔn)備一套頁(yè)面文件,要么通過(guò)文件后綴名來(lái)區(qū)分不同語(yǔ)言,要么通過(guò)子目錄來(lái)區(qū)分不同語(yǔ)言。
例如對(duì)于首頁(yè)文件index_en.htm提供英語(yǔ)界面,index_gb.htm提供簡(jiǎn)體中文界面,index_big.htm提供繁體中文界面,或者是 en/index.htm提供英語(yǔ)界面,gb/index.htm提供簡(jiǎn)體中文界面,big/index.htm提供繁體中文界面,一旦用戶選擇了需要的語(yǔ)言后,自動(dòng)跳轉(zhuǎn)到相應(yīng)的頁(yè)面,首頁(yè)以下其他鏈接也是按照同樣方式處理。從維護(hù)的角度來(lái)看,通過(guò)子目錄比通過(guò)文件后綴名來(lái)區(qū)分不同語(yǔ)言版本顯得要簡(jiǎn)單明了。
2,動(dòng)態(tài):站點(diǎn)內(nèi)所有頁(yè)面文件都是動(dòng)態(tài)頁(yè)面文件(PHP,ASP等)而不是靜態(tài)頁(yè)面文件,在需要輸出語(yǔ)言文字的地方統(tǒng)一采用語(yǔ)言變量來(lái)表示,這些語(yǔ)言變量可以根據(jù)用戶選擇不同的語(yǔ)言賦予不同的值,從而能夠?qū)崿F(xiàn)在不同的語(yǔ)言環(huán)境下輸出不同的文字。
例如:語(yǔ)言變量ln_name,當(dāng)用戶選擇的語(yǔ)言是英語(yǔ)時(shí)賦值為“Name”,當(dāng)用戶選擇的語(yǔ)言是簡(jiǎn)體中文時(shí)賦值為“姓名”,這樣就可以適應(yīng)不同語(yǔ)言時(shí)的輸出。
采用靜態(tài)方式的優(yōu)點(diǎn)是頁(yè)面直接輸出到客戶端,不需要在服務(wù)器上運(yùn)行,占用服務(wù)器的資源比較少,系統(tǒng)能夠支持的并發(fā)連接數(shù)較多,缺點(diǎn)是要為每種語(yǔ)言制作一套頁(yè)面文件,很多內(nèi)容即使是和語(yǔ)言無(wú)關(guān)的也要分不同語(yǔ)言來(lái)存儲(chǔ),因此占用的存儲(chǔ)空間較多。
采用動(dòng)態(tài)方式和靜態(tài)方式的優(yōu)缺點(diǎn)正好相反,它的優(yōu)點(diǎn)是動(dòng)態(tài)頁(yè)面文件只有一套,不同語(yǔ)言的文字使用語(yǔ)言變量來(lái)存儲(chǔ),和語(yǔ)言無(wú)關(guān)的內(nèi)容只存儲(chǔ)一份,占用的存儲(chǔ)空間較少,并且擴(kuò)展新語(yǔ)言比較容易,缺點(diǎn)需要在服務(wù)器上運(yùn)行,然后把結(jié)果輸入到客戶端,占用服務(wù)器的資源比較多,系統(tǒng)能夠支持的并發(fā)連接數(shù)較少。
動(dòng)態(tài)數(shù)據(jù)存貯涉及的一些技術(shù)問(wèn)題
由于現(xiàn)在網(wǎng)站上動(dòng)態(tài)應(yīng)用日益增多,相當(dāng)多的網(wǎng)站還會(huì)使用文件或者數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)應(yīng)用信息,因此如果文件或者數(shù)據(jù)庫(kù)中存儲(chǔ)的內(nèi)容與語(yǔ)言相關(guān)時(shí),還需要特別注意。對(duì)于存儲(chǔ)在數(shù)據(jù)庫(kù)中信息,可以采取以下幾種方式支持多語(yǔ)言:
1,在數(shù)據(jù)庫(kù)級(jí)別支持多語(yǔ)言:為每種語(yǔ)言建立獨(dú)立的數(shù)據(jù)庫(kù),不同語(yǔ)言的用戶操作不同的數(shù)據(jù)庫(kù)。
2,在表級(jí)別支持多語(yǔ)言:為每種語(yǔ)言建立獨(dú)立的表,不同語(yǔ)言的用戶操作不同的表,但是它們?cè)谕粋€(gè)數(shù)據(jù)庫(kù)中。
3,在字段級(jí)別支持多語(yǔ)言:在同一個(gè)表中為每種語(yǔ)言建立獨(dú)立的字段,不同語(yǔ)言的用戶操作不同的字段,它們?cè)谕粋€(gè)表中。
由于數(shù)據(jù)庫(kù)中有大量的信息(如標(biāo)志,編碼,數(shù)字等)是用于內(nèi)部處理使用的,與語(yǔ)言無(wú)關(guān)的,因此在數(shù)據(jù)庫(kù)級(jí)別支持多語(yǔ)言會(huì)導(dǎo)致空間的極大浪費(fèi),在字段級(jí)別支持多語(yǔ)言大的問(wèn)題是一旦需要支持新的語(yǔ)言,由于需要修改表結(jié)構(gòu),維護(hù)起來(lái)非常麻煩,可擴(kuò)展性不好。
相比之下,在表級(jí)別支持多語(yǔ)言比較好,因?yàn)椴⒉皇撬械谋矶夹枰С侄嗾Z(yǔ)言,對(duì)于與語(yǔ)言無(wú)關(guān)的表,不同語(yǔ)言的用戶共用一套,那些和語(yǔ)言相關(guān)的表根據(jù)支持語(yǔ)言的種類來(lái)建立,不同語(yǔ)言的用戶存取訪問(wèn)不同的表格。這樣使得維護(hù)簡(jiǎn)單,節(jié)省了存儲(chǔ)空間,即使是擴(kuò)展起來(lái)也比較方便,只要把需要支持多語(yǔ)言的表,多建立一套即可。
還需要注意的問(wèn)題是:有些表中某些字段是不同語(yǔ)言版本的表共享的(例如庫(kù)存量),由于各種語(yǔ)言的表之間的相對(duì)獨(dú)立性,使得數(shù)據(jù)共享有些困難。解決的方法有兩個(gè):
1,不同語(yǔ)言的表的共享字段同步:也就是說(shuō),只要修改了其中一個(gè)表的共享字段,其他語(yǔ)言表中該字段也作相應(yīng)改變,實(shí)際上當(dāng)不同語(yǔ)言的用戶同時(shí)訪問(wèn)時(shí)處理還是比較麻煩的,并且擴(kuò)充新語(yǔ)言時(shí)修改工作比較大。
2,增加一個(gè)新的表:把所有語(yǔ)言共享的字段(例如貨物編號(hào),產(chǎn)地編碼等)全部放在這個(gè)表,支持多語(yǔ)言的表只存放與各種語(yǔ)言相關(guān)的字段。不同語(yǔ)言的用戶在使用數(shù)據(jù)庫(kù)時(shí),需要操作兩個(gè)數(shù)據(jù)表。
比較而言,第二種方法比較簡(jiǎn)單,并且效率比較高,維護(hù)也比較方便。
應(yīng)用字符集的選擇
一個(gè)定位于不同語(yǔ)言國(guó)家的企業(yè)網(wǎng)站勢(shì)必需要提供多種語(yǔ)言版本的產(chǎn)品和銷售信息來(lái)滿足其世界各地使用不同語(yǔ)言的客戶和合作伙伴,其中包括法語(yǔ)、德語(yǔ)、意大利語(yǔ)、葡萄牙語(yǔ)、西班牙語(yǔ)、阿拉伯語(yǔ)等等。但有一個(gè)問(wèn)題卻極易被網(wǎng)站設(shè)計(jì)者們所忽略。這就是網(wǎng)站的字符集設(shè)置問(wèn)題。
一般我們使用的是簡(jiǎn)體中文(GB2312)字符集,而對(duì)多語(yǔ)言網(wǎng)站來(lái)說(shuō),中文字符集卻可能會(huì)使你辛辛苦苦的努力功虧一簣。原因很簡(jiǎn)單:就是這個(gè)毫不起眼的小小字符集在作怪。
計(jì)算機(jī)應(yīng)用領(lǐng)域中存在著幾十種互不相同的字符集,而不同語(yǔ)言客戶在瀏覽不同語(yǔ)言網(wǎng)頁(yè)時(shí),往往會(huì)因?yàn)橄嗷ラg所使用字符集無(wú)法兼容而出現(xiàn)亂碼情況。我們?cè)跒g覽國(guó)外一些網(wǎng)站時(shí),往往也會(huì)出現(xiàn)為了能正常地看到網(wǎng)站上的信息而不得不在各種字符集之間來(lái)回切換的情況。
試想一下:如果一個(gè)網(wǎng)站提供了中,英,法,德等多種語(yǔ)言版本的內(nèi)容,內(nèi)容全之又全,設(shè)計(jì)美侖美奐。我們?cè)谥形木幋a環(huán)境下瀏覽這些非中文版本的頁(yè)面覺(jué)得非常完美,現(xiàn)在一個(gè)法國(guó)客戶對(duì)你的產(chǎn)品發(fā)生了興趣,當(dāng)他進(jìn)到法語(yǔ)版面一看—亂碼多多,甚至可能整個(gè)版面都一塌里糊涂。你的網(wǎng)站再下大工夫又有什么意義呢?
所以對(duì)提供了多語(yǔ)言版本的網(wǎng)站來(lái)說(shuō),Unicode字符集應(yīng)該是最理想的選擇。它是一種雙字節(jié)編碼機(jī)制的字符集,不管是東方文字還是西方文字,在 Unicode中一律用兩個(gè)字節(jié)來(lái)表示,因而至少可以定義65536個(gè)不同的字符,幾乎可以涵蓋世界上目前所有通用的語(yǔ)言的每一種字符。所以在設(shè)計(jì)和開(kāi)發(fā)多語(yǔ)言網(wǎng)站時(shí),一定要注意先把非中文頁(yè)面的字符集定義為“utf-8”格式。
這一步非常重要,原因在于若等頁(yè)面做好之后再更改字符集設(shè)置,可說(shuō)是一件非常非常吃力不討好的工作,有時(shí)候甚至可能需要從頭再來(lái),重新輸入網(wǎng)站的文字內(nèi)容。
HTML中的META標(biāo)簽:
<META HTTP-EQUIV=“Content-Type” CONTENT=“text/html; CHARSET=字符集">
不寫,根據(jù)瀏覽器默認(rèn)字符集顯示
charset=gb2312 簡(jiǎn)體中文
charset=big5 繁體中文
charset=EUC_KR 韓語(yǔ)
charset=Shift_JIS 或 EUC_JP 日語(yǔ)
charset= KOI8-R / Windows-1251 俄語(yǔ)
charset=iso-8859-1 西歐語(yǔ)系(荷蘭語(yǔ),英語(yǔ),法語(yǔ),德語(yǔ),意大利語(yǔ),挪威語(yǔ),葡萄牙語(yǔ),瑞士語(yǔ).等十八種語(yǔ)言)charset=iso-8859-2 中歐語(yǔ)系
charset=iso-8859-5 斯拉夫語(yǔ)系(保加利亞語(yǔ),Byelorussian語(yǔ),馬其頓語(yǔ),俄語(yǔ),塞爾維亞語(yǔ),烏克蘭語(yǔ)等)
charset=uft-8 unicode多語(yǔ)言
PHP與腳本引擎頁(yè)碼的概念
由于我們傳統(tǒng)使用的內(nèi)碼像Big5,GB2312與unicode并不是一一對(duì)應(yīng),故兩者之間的轉(zhuǎn)換要靠codepage(頁(yè)碼)來(lái)實(shí)現(xiàn)
不寫,根據(jù)服務(wù)器端解析引擎默認(rèn)代碼頁(yè)自動(dòng)解析并返回瀏覽器。
如果制作的網(wǎng)頁(yè)腳本與WEB服務(wù)端的默認(rèn)代碼頁(yè)不同,則必須指明代碼頁(yè):
codepage=936 簡(jiǎn)體中文GBK
codepage=950 繁體中文BIG5
codepage=437 美國(guó)/加拿大英語(yǔ)
codepage=932 日文
codepage=949 韓文
codepage=866 俄文
codepage=65001 unicode UFT-8
本文來(lái)源于成都網(wǎng)站建設(shè)公司與成都網(wǎng)站設(shè)計(jì)制作公司-創(chuàng)新互聯(lián)成都公司!
網(wǎng)頁(yè)名稱:多語(yǔ)言網(wǎng)站開(kāi)發(fā)技術(shù)分析
分享網(wǎng)址:http://jinyejixie.com/news30/323230.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷、搜索引擎優(yōu)化、網(wǎng)站導(dǎo)航、軟件開(kāi)發(fā)、品牌網(wǎng)站制作、做網(wǎng)站
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)