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

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

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_CHINESEzh_TW

Locale. SIMPLIFIED_CHINESEzh_CN

Locale.USen_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

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编码》。

java多语言网页_网页多国语言实现相关推荐

  1. oracle支持几国语言,明白ORACLE的多国语言设置

    wlgyhnj(冷风0) 明白ORACLE的多国语言设置,ORACLE多国语言设置是为了支持世界范围的语言与字符集,一般对语言提示,货币形式,排序方式和CHAR,VARCHAR2,CLOB,LONG字 ...

  2. hbuilderx制作简单网页_网页制作的基本步骤是怎样的?制作简单网页的具体操作有哪些呢?...

    网页制作的基本步骤是怎样的?制作简单网页的具体操作有哪些呢?如果是详细的网页制作,设计和制作一样关键.有可能是网页设计制作新手对简单网页制作设计的具体操作不太清楚.更别说设计详细的网页了.下面一起来看 ...

  3. 2c语言程序设计_大学生学C语言的理由是什么

    不止一个学生问到我:"老师,为什么我们的应用程序设计要学C语言而不是别的?C语言不是已经过时了吗?如果现在要写一个Windows程序,用VB或Dephi开发多快呀,用C行吗? 这个问题三言两 ...

  4. 为什么说python是最好的语言!学校_为什么说python语言是最好的选择?老男孩教育...

    python是一门广受喜欢的编程语言,现在很多人都想要学习python,也有部分人非常疑惑为何python会这么受欢迎呢?老男孩教育为大家简单的介绍一下吧. 为什么说python语言是最好的选择? 自 ...

  5. cs架构用什么语言开发_学了C语言,能开发什么项目?

    直至今天还有人在喊着C语言都过时的语言了,还有什么值得去学的,看现在的python,JAVA等语言现在用起来多简单,谁还去学习老掉牙的C语言,事实真的是这样的吗?小编作为专门下载了这两种语言的底层源码 ...

  6. html如何支持多国语言,[MVC]建置多国语言系统之路

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 分享以ASP.NET MVC 3一步一步建置一个多国语言系统的方式 1.从Resource File开始 2.利用Str ...

  7. html多国语言配置方法,jquery多国语言切换特效

    这是一款实现多国语言切换的jquery特效.在这个示例中,通过简单的js代码,实现包括中文和英文在内的7种不同国家语言的切换效果. 使用方法 在页面中引入jquery和style.css. HTML结 ...

  8. 网页制作和java有关系么_网页设计注意问题

    网页设计注意问题 引导语:网页设计时应考虑哪些方面的问题,包括网站功能和以及访问者需要什么.你的整个设计都应该围绕这些方面来进行.以下是小编整理的网页设计注意问题,欢迎参考阅读! 1.页面内容要新颖 ...

  9. 写一个网页,支持10国语言便捷切换

    要创建一个支持10种语言便捷切换的网页,可以使用以下步骤: 为每种语言创建一个独立的HTML文件,文件名可以使用对应的语言代码表示(如"en.html"表示英文版). 在主页面上添 ...

最新文章

  1. dedecms 漏洞_织梦dedecms文档内容页自动关联tag标签加入内链的方法_dedecms_CMS教程...
  2. R语言NaN函数实战(计数、替换、删除)
  3. angularjs全栈开发知乎_为什么你要去尝试全栈开发?
  4. 2019年湘潭大学程序设计竞赛(重现赛)F.Truthman or Fakeman(并查集)
  5. 转-用qemu-nbd实现mount虚拟硬盘到Host上的功能
  6. 转:谷歌离线地图基础
  7. Shell中case判断结构的用法笔记
  8. 解析邮件归档技术 保护企业邮件安全(三)
  9. mbed试玩—高速开发MCU应用(基于FRDM-KL25Z)
  10. opencv 像素操作
  11. Linux不讲武德——开机无法进入登录界面 卡在进度条就不动了
  12. C结构中包含自己的嵌套定义
  13. 从程序员到项目经理(二十八):该死的结果导向(只看结果,不问过程到底行不行?)
  14. Github骚操作绑定中国+86手机号码实现两步验证
  15. 无线分组网关系统解决方案(GGSN、PDSN)
  16. Adapterdemo
  17. HTML概述+HTML核心(HTML知识点总结)
  18. 两种电子配线架的原理比较
  19. 路由器与三层交换机的区别
  20. 高端人才必看,生意人必读

热门文章

  1. gridview的sort_GridView实现自动排序带上下箭头
  2. stardict安装与优化详解
  3. JAVA计算机毕业设计在线玩具租赁系统Mybatis+源码+数据库+lw文档+系统+调试部署
  4. 用python爬取高考网历年高考分数线将数据放入MySQL并绘制图表
  5. 产品样机展示客户不满意?试试用Visualize这样做!
  6. Hprose 是轻量级跨语言跨平台的面向对象的高性能远程动态通讯中间件
  7. PR/AE 超级变速插件Twixtor Pro 7.5.4汉化版WIN版中文使用教程
  8. jeesite下载excel模板
  9. comsol6.1软件下载+安装教程
  10. 批发供应系统批发订货发货管理系统开发功能