随着国际化的深入,越来越多的网站提供多语言版本给不同国家的用户。最近做的一个项目也涉及到这块,顺便做个总结。
一、通常实现方法有两种:
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"?>。
分享到:
相关推荐
VC实现多语言程序版本VC实现多语言程序版本VC实现多语言程序版本VC实现多语言程序版本VC实现多语言程序版本VC实现多语言程序版本VC实现多语言程序版本VC实现多语言程序版本
为《使用C# 完美实现多语言版本Windows应用程序》所附源代码,以便更好的学习C#窗体程序多语言版本的制作。 本源代码可以任何方式免费使用,但转载请注明出处 另:代码中仅处理资源,没有本地格式信息的处理,有这...
VC在一个工程中实现多语言版本
c#使用资源文件(App_GlobalResources)实现多语言版本控制,里面包含示例代码。
VC INI文件实现多语言版本 :http://blog.csdn.net/greless/article/details/73107266
VC在一个工程中实现多语言版本.rar
资源库的切换实现,把自己的资源编译成一个dll,在exe中通过调用AfxSetResourceHandle的方式来切换当前资源从而实现语言的切换 1.实现简单 2.对于不同语言,可以修改相应资源适应界面,不会出现界面显示不完整的问题
在网上找了一些PropertyGrid的文章,也有可以实现多语言版本的,但是那种方法使PropertyGrid无法传值,没有实际意义。这个demo可以将CategoryName、PropertyName、PropertyDescription设置多国语言。并且不会出现...
在WPF应用程序中搭建多语言支持(Multilingual Support)是我最近在做的一件事,对于不使用英语的人士而言,此举提高了程序的可用性。实现起来要完成以下目标: 一个版本容纳多种语言. 这就意味着不要创建单独的英语...
多语言版本实现,内容比较详细,可以用来参考。
如何实现Javascipt代码中的内容翻译为多语言版本?有两种方法,第一种方法较简单易行,把Javascipt当作资源文件,使用JSON对象存储需要翻译为多语言的内容。
在做ecshop项目时,会碰到多语言版本的问题,本代码简单实现多语言切换功能。
多语言版本的制作不单是实现映像的多语言,还要实现安装界面的多语言。所谓安装界面的多语言,是指选择某种语言后,进去之后,安装界面以及安装版本名称等都是某种语言。这里面要提到的是如果只是2种语言,那么版本...
用控件仅一条指令实现界面换肤和多语言版本(YFSkins)
集合多种实现方案,实现各种控件的版本,绝对物超所值,倾力打造,外加说明书
网络游戏-一种在网络论坛中实现多语言版本数据自动同步的方法.zip
本文是XechWic开发团队关于低版本Delphi(主要是Delphi7)下应用程序支持Unicode实现多国语言版本开发的完整的解决方案
双击exe可看到程序演示。 此文件夹下的 setting.ini 控制启动exe的版本。修改里面的语言为 English或者Chinese,可选择初始化语言界面 ...此外多语言界面有3种方法: DLL ini rc,感兴趣的可以都试试
多语言网站版本切换模板
Visual Studio 对于.NET 程序的本地化提供了完整的支持,本文介绍实现多语言版本本地化程序的简单步骤.