您的位置:首页 > 运维架构 > 网站架构

如何实现网站的多语言版本?

2013-10-10 12:48 253 查看
如何实现网站的多语言版本?

版权声明:如有转载请求,请注明出处:http://blog.csdn.net/yzhz 
杨争  

 
       随着国际化的深入,越来越多的网站提供多语言版本给不同国家的用户。最近做的一个项目也涉及到这块,顺便做个总结。

一、通常实现方法有两种:

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"?>。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: