今天在学习java的国际化实现的相关配置,到网上搜索了一下,用spring框架和jstl配合来实现java国际化功能的方法比较常用,就决定就先用这个调试通过了。在百度上一通搜索,得到一些零零碎碎的资料,自己边整合边摸索,最后终于解决,心里当然是十分的开心了,为了给自己留一个解决方法的备份,也让遇到同样问题的人少走一些弯路,现将实现步骤纪录如下:
- 搭建好tomcat服务器,并且加入spring的相关lib。实现此步骤的参考文章很多,我的环境是以前搭建好的,就直接那来用了。
- 下载jstl需要的包jstl.jar和standard.jar,并且放入WEB-INF/lib目录下。下载地址为http://www.apache.org/dist/jakarta/taglibs/standard/binaries/,我下载的文件为jakarta-taglibs-standard-1.1.2.zip,解压之后在lib目录下可以找到上述两个包,相应拷贝即可。
- 修改web.xml,注册国际化需要的tag标签。在web.xml文件中加入如下的标签注册信息<taglib>
<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
<taglib-location>/WEB-INF/tld/jstl/fmt.tld</taglib-location>
</taglib> 顺便提示一下,上述上一段话,我开始忘记加了,结果试了半天都出不来。我们用rar软件打开jstl.jar文件,以此进入目录javax/servlet/jsp/jstl/,可以看到tlv、sql、fmt和core四个文件夹,突然发现上述的<taglib-uri>http://java.sun.com/jstl/fmt</taglib-uri>
中的fmt与四个文件夹中的一个同名,如果要使用另外三个标签库,也可以相应的配置。这里国际化只用到fmt标签库,所以这里只导入这一个。
在web.xml文件中加入国际化资源文件的配置,如下:
<context-param>
<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
<param-value>message</param-value>
</context-param>注意message为资源文件的名称。在此我的资源文件为message_zh_CN.properties和message_en_US.properties。
- 创建资源文件message_zh_CN.properties和message_en_US.properties,这里只做英文和中文的示例,如果还需要支持其他的语言,只需要增加相应的资源文件即可,具体的后缀可以通过ie浏览器看到,如何看?“Internet选项”--“语言...”--“添加”,应该看到了,就是那个语言列表中的后缀。
中文的资源message_zh_CN.properties的内容为:
name = /u5f20/u4e09
sex = /u7537
country = /u4e2d/u56fd看起来很奇怪是吧,我一开始也觉得奇怪,怎么放了这么写乱七八糟的东西,后来一查才知道,中文必须要用ascii码的方式来记录,麻烦。头大了,这不是要写死我,哪记得住?不过庆幸的是,jdk自带了一个转码工具native2ascii,专门将本地文件转换为ascii码来表示。我们在C盘根目录下新建一个message_zh_CN_src.properties文件,存放内容如下:
name = 张三
sex = 男
country = 中国然后cmd,打开命令行窗口,敲入:native2ascii -encoding gbk C:/messages_zh_CN_src.properties C:/messages_zh_CN.properties,这样messages_zh_CN.properties文件就存放的是转码后的内容了,还比较简单。
英文资源message_en_US.properties不需要转码,内容就很简单,我这里的内容为:
name = zhangsan
sex = male
country = china上述两个文件均放置在WEB-INF/classes目录下。
-
编写测试页面message.jsp,内容如下: <%@ page language="java" contentType="text/html;charset=GBK"%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><!--导入注册的标签库-->
<fmt:message key="name"/><!--name为properties文件中的key值-> -
启动tomcat。如果配置一切ok的话,启动成功,然后在地址栏中访问message.jsp页面。可以正常看到“张三”。在工具--Internet选项--语言...---添加...---英语(美国) [en-us],并将该选择项上移到 中文(中国) [zh-cn]的上方,重新刷新页面,可以看到zhangsa,国际化配置成功。
第一次用csdn的博客自己编辑的发文章,还不大熟练,排版不好,看来还要慢慢适应。