網頁多國語言實現


隨着國際化的深入,越來越多的網站提供多語言版本給不同國家的用戶。最近做的一個項目也涉及到這塊,順便做個總結。
一、通常實現方法有兩種:
1、采用多語言模板,通過程序渲染不同語言版本的模板。
比如:
簡體版: 文件名.zh_CN.后綴
繁體版: 文件名.zh_TW.后綴
英文版: 文件名.en_US后綴
優點:
(1) 不同語言版本有各自的模板,維護量大,但維護簡單。甚至不同版本的模板在顯示風格上都可以不同。
 
缺點:
(1) 同一商業邏輯的頁面,需要維護多套模板,有重復工作。
 
2、采用同一模板,利用ResourceBundle配置多語言resource文件,實現網頁上不同語言版本的顯示。
 
優點:
(1) 同一商業邏輯的頁面,只需要維護一套模板。
 
缺點:
(2) 模板的設計難度比較大,需要適應不同語言版本的需求。這個我們在實際工作中遇到過,有些顯示英文字符沒有問題的樣式,在顯示中文會出現問題,單個模板的維護難度比較大些。
 
 
二、我們先了解一下基礎知識,這些會在實際開發中會用到。
1、 java.util.Locale
System.out.println(Locale.getDefault().toString());
輸出: zh_CN 表示語言 _ 國家 / 地區
常用的Locale為
Locale.TRADITIONAL_CHINESE    zh_TW
Locale. SIMPLIFIED_CHINESE      zh_CN
Locale.US                        en_US
 
 
2、 字符集
我們常用的字符集:GBK, UTF-8, ISO8859-1。
 
 
三、網頁中如何實現多語言版本顯示?
1、 我們將網頁的輸出字符集采用UTF-8,即返回網頁的http頭為:
Content-Type: text/html;charset=UTF-8
這個就需要我們在返回網頁內容時候,調用以下語句設置網頁的字符集。
servletResponse.setCharacterEncoding("UTF-8")
 
2、 網頁GET/POST提交的時候采用UTF-8的方式。
(1) GET方式:
URL中的非ASCII采用UTF-8的方式編碼,比如
http://www.test.com/中國.html?keywords=中國
頁面顯示的鏈接為:
http://www.test.com/E4%B8%AD%E5%9B%BD.html?keywords=E4%B8%AD%E5%9B%BD
 
(2) POST方式:
如果網頁的輸出字符集為UTF-8,則POST提交的時候表單的數據也是采用UTF-8編碼的。
 
 
3、 在服務器端我們要設置服務器的字符集。
如果是jboss服務器的話,則需設置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、 在應用程序,在調用HttpServletRequest.getParameters(),需要調用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"?>。
 
關於編碼問題,可以參考我以前的一篇文章:《 URL編碼》。
最近做的多語言版本的項目: http://ir.alibaba.com/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM