過去在一家軟體外企工作時寫過一個小的web實驗性項目,其中一部分需求是用戶界面的多種語言(簡體中文、繁體中文、英語、朝鮮語、日語)支持,當時使用了模板技術來實現了該需求,並用Cookies保存了用戶的設置,但是用戶第一次登陸時(或者是將Cookies刪除了以後)仍然需要選擇語言種類,那麼能不能更方便用戶呢?能不能用程式來自動幫助選擇呢?
答案是肯定的,大家都在用google,你用中文系統打開google的首頁,打開的自然是中文首頁,而不會是其他語言。因為google會自動判斷使用者係統所使用的首選語言是什麼。
要怎麼樣才能做到像google一樣呢,其實很簡單,
在瀏覽器發給web伺服器的HTTP Headers Information 中包含了這樣一個資訊Accept-Language,這個資訊就是,瀏覽器中工具->gt;Internet選項->gt;常規下的語言, 它就是用來設定瀏覽器可接受的語言首選項的, 它可以是多種可接受語言的優先排序列。
下面我以asp為例簡單介紹一下「如何來自動判斷使用者語言」:
<%
Function RegExpTest(patrn, strng)
Dim regEx,Match,Matches'建立變數。
Set regEx = New RegExp'建立正規表示式。
regEx.Pattern = patrn'設定模式。
regEx.IgnoreCase = True'設定是否區分字元大小寫。
regEx.Global = True'設定全域可用性。
Set Matches = regEx.Execute(strng)'執行搜尋。
For Each Match in Matches'遍歷匹配集合。
RetStr = RetStr&Match.Value
Next
RegExpTest = RetStr
End Function
AL = Request.ServerVariables("HTTP_ACCEPT_LANGUAGE")'取得使用者瀏覽器可接受語言參數
LG = RegExpTest("^[az-]+",AL)'取得使用者瀏覽器可接受語言的首選項
select case LG
case "zh-cn"
response.write "中文(中國)"
case "zh-tw"
response.write "中文(台灣)"
case "zh-mo"
response.write "中文(澳門特別行政區)"
case "zh-hk"
response.write "中文(香港特別行政區)"
case "zh-sg"
response.write "中文(新加坡)"
case "en-us"
response.write "英文(美國)"
case "ja"
response.write "日文"
case "ko"
response.write "朝鮮語"
end select
%>