|
隨著國際化的深入,越來越多的網(wǎng)站提供多語言版本給不同國家的用戶。最近做的一個項目也涉及到這塊,順便做個總結(jié)。
一、通常實現(xiàn)方法有兩種:
1、采用多語言模板,通過程序渲染不同語言版本的模板。
比如:
簡體版: 文件名.zh_CN.后綴
繁體版: 文件名.zh_TW.后綴
英文版: 文件名.en_US后綴
優(yōu)點:
(1) 不同語言版本有各自的模板,維護量大,但維護簡單。甚至不同版本的模板在顯示風(fēng)格上都可以不同。
缺點:
(1) 同一商業(yè)邏輯的頁面,需要維護多套模板,有重復(fù)工作。
2、采用同一模板,利用ResourceBundle配置多語言resource文件,實現(xiàn)網(wǎng)頁上不同語言版本的顯示。
優(yōu)點:
(1) 同一商業(yè)邏輯的頁面,只需要維護一套模板。
缺點:
(2) 模板的設(shè)計難度比較大,需要適應(yīng)不同語言版本的需求。這個我們在實際工作中遇到過,有些顯示英文字符沒有問題的樣式,在顯示中文會出現(xiàn)問題,單個模板的維護難度比較大些。
二、我們先了解一下基礎(chǔ)知識,這些會在實際開發(fā)中會用到。
1、 java.util.Locale
System.out.println(Locale.getDefault().toString());
輸出:zh_CN 表示語言_國家/地區(qū)
常用的Locale為
Locale.TRADITIONAL_CHINESE zh_TW
Locale. SIMPLIFIED_CHINESE zh_CN
Locale.US en_US
2、 字符集
我們常用的字符集:GBK, UTF-8, ISO8859-1。
三、網(wǎng)頁中如何實現(xiàn)多語言版本顯示?
1、 我們將網(wǎng)頁的輸出字符集采用UTF-8,即返回網(wǎng)頁的http頭為:
Content-Type: text/html;charset=UTF-8
這個就需要我們在返回網(wǎng)頁內(nèi)容時候,調(diào)用以下語句設(shè)置網(wǎng)頁的字符集。
servletResponse.setCharacterEncoding("UTF-8") 2、 網(wǎng)頁GET/POST提交的時候采用UTF-8的方式。
(1) GET方式:
URL中的非ASCII采用UTF-8的方式編碼,比如
http://www./中國.html?keywords=中國
頁面顯示的鏈接為:
http://www./E4%B8%AD%E5%9B%BD.html?keywords=E4%B8%AD%E5%9B%BD
(2) POST方式:
如果網(wǎng)頁的輸出字符集為UTF-8,則POST提交的時候表單的數(shù)據(jù)也是采用UTF-8編碼的。
3、 在服務(wù)器端我們要設(shè)置服務(wù)器的字符集。
如果是jboss服務(wù)器的話,則需設(shè)置tomcat的server.xml
${jboss-home}\server\default\deploy\jbossweb-tomcat55.sar\server.xml
<Connector port="80" address="${jboss.bind.address}"
maxThreads="250" strategy="ms" maxHttpHeaderSize="8192"
emptySessionPath="true"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8" useBodyEncodingForURI="true" />
4、 在應(yīng)用程序,在調(diào)用HttpServletRequest.getParameters(),需要調(diào)用HttpServletRequest.setCharacterEncoding("UTF-8");
5、 采用第一種方案:采用多語言模板。我們可以定義:
Index_zh_CN.html
Index_zh_TW.html
Index_en_US.html
我們可以通過不同的URL,或者用戶的IP等信息,選擇不同的模板進行渲染。
6、 采用第二種方案:采用單一模板。通過不同語言版本的配置文件獲得不同的多語言版本字符串。
java.util.ResourceBundle提供的properties文件本身并很好的支持非ASCII的字符集,我們建議用戶采用XMLResourceBundle,采用xml文件的方式定義配置文件。Xml文件本身可以很好的描述自己的編碼格式。
<?xml version="1.0" encoding="UTF-8"?>。
|
|
|