JSP国际化配置

原创 2016年08月31日 15:58:01

国际化(Internationalization,又称il8n),是越来越多的应用软件必须面临的问题,Java语言采用Unicode编码,并且提供了强大的类库支持国际化编程。采用Java语言编程,可以方便地实现应用软件界面语言的国际化。


 国际化编程常用类:使用Java语言进行国际化编程,经常要用到Locale类及ResourceBundl e类,它们都在包java.util中.
1.Locale类
Locale类包含对主要地理区域的地域化特征的封装。通过设定Locale,我们可以为特定的国家或地区提供符合当地文化习惯的语言、表达格式等。一个Locale代码 可由语言代码和地区代码组合而成。常用的两种Locale代码如下:

 语言代码  地区代码  Locale代码  说明
 en  US  en_US  美国英语
 zh  CN  zh_CN  简体中文

 

2.ResoureeBundle类
ResourceBundle类是一个抽象类,需要通过getBundle(String baseName,Locale locale)方法加载扩展名为properties的资源文件。资源文件的名称由一个基本名称和Locale代码组成,而基本名称则可以在Java程序 中调用getBundle(StringbaseName,Locale locale)方法时传人参数指定。例如,我们在程序中指定基本名称为messages,Locale代码为zh_CN, 则对应的资源文件应为messages_zh_CN.properties

3、接下来我们可以用下面的代码来取得国际化配置:

Locale locale=new Locale("zh","CN");
ResourceBundle messages = ResourceBundle.getBundle("messages",locale);
String title = messages.getString("title");
上面的代码就是加载了messages_zh_CN.properties 的资源文件,读取了资源文件中的title的值。

 

I18N formatting 标签库就是用于在 JSP 页面中做国际化的动作。在该标签库中的标签一共有 12 个,被分为了两类,分别是: 
国 际化核心标签: <fmt:setLocale>、<fmt:bundle>、<fmt:setBundle>、<fmt:message>、<fmt:param>、<fmt:requestEncoding>
格 式化标签: <fmt:timeZone>、<fmt:setTimeZone> 、<fmt:formatNumber> 、<fmt:parseNumber>、<fmt:formatDate>、<fmt:parseDate>

1、<fmt:setLocale>标签 :
<fmt:setLocale> 标签用于设置 Locale 环境。有两个属性:

属性

描述

value

Locale 环境的指定,可以是 java.util.Locale 或 String类型的实例

scope

Locale 环境变量的作用范围(可选)

 
<fmt:setLocale value="zh_CN"/> 表示设置本地环境为简体中文。

 

2、<fmt:bundle> 、<fmt:setBundle> 标签 :
这两组标签用于资源配置文件的绑定,唯一不同的是 <fmt:bundle> 标签将资源配置文件绑定于它标签体中的显示, <fmt:setBundle> 标签则允许将资源配置文件保存为一个变量,在之后的工作

可以根据该变量来进行。有3个属性:

属性

描述

basename

资源配置文件的指定,只需要指定文件名而无须扩展名,二组标签共有的属性

var

<fmt:setBundle> 独有的属性,用于保存资源配置文件为一个变量

scope

变量的作用范围

 

<fmt:setLocale value="zh_CN"/> 
<fmt:setBundle basename="applicationMessage" var="applicationBundle"/> 
该示例将会查找一个名为 applicationMessage_zh_CN.properties 的资源配置文件,来作为显示的 Resource 绑定。

3、<fmt:message> 标签 :
用于信息显示的标签,将显示资源配置文件中定义的信息。有四个属性:

属性

描述

key

资源配置文件的“键”指定

bundle

若使用 <fmt:setBundle> 保存了资源配置文件,该属性就可以从保存的资源配置文件中进行查找

var

将显示信息保存为一个变量

scope

变量的作用范围

 

<fmt:setBundle basename="applicationMessage" var="applicationBundle"/>

<fmt:bundle basename="applicationAllMessage"> 
         <fmt:message key="userName" /> 
         <fmt:message key="passWord" bundle="${applicationBundle}"/> 
</fmt:bundle>

该示例使用了两种资源配置文件的绑定的做法,“ applicationMessage ”资源配置文件利用 <fmt:setBundle> 标签被赋于了变量“ applicationBundle ”,而作为 <fmt:bundle> 标签定义的“

applicationAllMessage ”资源配置文件作用于其标签体内的显示。

第一个 <fmt:message> 标签将使用“ applicationAllMessage ”资源配置文件中“键”为“ userName ”的信息显示。

第二个 <fmt:message> 标签虽然被定义在 <fmt:bundle> 标签体内,但是它使用了 bundle 属性,因此将指定之前由 <fmt:setBundle> 标签保存的“ applicationMessage ”资源配置文件,该“键”为“ passWord ”的信息显示。

4、<fmt:param> 标签:
<fmt:param> 标签应该位于 <fmt:message> 标签内,将为该消息标签提供参数值。它只有一个属性 value 。 
<fmt:param> 标签有两种使用版本,一种是直接将参数值写在 value 属性中,另一种是将参数值写在标签体内。


5、<fmt:requestEncoding> 标签:
用于为请求设置字符编码。它只有一个属性 value ,在该属性中可以定义字符编码。 <fmt:timeZone>、<fmt:setTimeZone> 标签 :
这 两组标签都用于设定一个时区。唯一不同的是 <fmt:timeZone> 标签将使得在其标签体内的工作可以使用该时区设置, <fmt:setBundle> 标签则允许将时区设置保存为一个变量,在之后的工作可以根据该变量来进行。有3个属性:

 

属性

描述

value

时区的设置

var

<fmt:setTimeZone> 独有的属性,用于保存时区为一个变量

scope

变量的作用范围

 

6 、<fmt:formatNumber>标签 :用于格式化数字。

 

属性

描述

value

格式化的数字,该数值可以是 String 类型或 java.lang.Number类型的实例

type

格式化的类型

pattern

格式化模式

var

结果保存变量

scope

变量的作用范围

maxIntegerDigits

指定格式化结果的最大值

minIntegerDigits

指定格式化结果的最小值

maxFractionDigits

指定格式化结果的最大值,带小数

minFractionDigits

指定格式化结果的最小值,带小数

 

<fmt:formatNumber>标签对应 java.util.NumberFormat 类, type 属性的可能值包括 currency (货币)、 number (数字)和 percent (百分比)。

<fmt:formatNumber value="1000.888" type="currency" var="money"/>

该结果将被保存在“ money ”变量中,将根据 Locale 环境显示当地的货币格式。


7、<fmt:parseNumber> 标签 :
用于解析一个数字,并将结果作为 java.lang.Number 类的实例返回。 <fmt:parseNumber> 标签看起来和 <fmt:formatNumber> 标签的作用正好相反。

 

属性

描述

value

将被解析的字符串

type

解析格式化的类型

pattern

解析格式化模式

var

结果保存变量,类型为 java.lang.Number

scope

变量的作用范围

parseLocale

以本地化的形式来解析字符串,该属性的内容应为 String 或 java.util.Locale类型的实例

 

<fmt:parseNumber value="15%" type="percent" var="num"/> 解析之后的结果为“ 0.15 ”。


8 、<fmt:formatDate> 标签:用于格式化日期。

 

属性

描述

value

格式化的日期,该属性的内容应该是 java.util.Date 类型的实例

type

格式化的类型

pattern

格式化模式

var

结果保存变量

scope

变量的作用范围

timeZone

指定格式化日期的时区

 

<fmt:formatDate> 标签与 <fmt:timeZone> 、 <fmt:setTimeZone> 两组标签的关系密切。若没有���定 timeZone属性, 也可以通过 <fmt:timeZone> 、 <fmt:setTimeZone> 两组标签设定的时区来格式化最后的结果。

9、 <fmt:parseDate> 标签 
<fmt:parseDate> 标签用于解析一个日期,并将结果作为 java.lang.Date 类型的实例返回。 <fmt:parseDate> 标签看起来和<fmt:formatDate> 标签的作用正好相反。

 

属性

描述

value

将被解析的字符串

type

解析格式化的类型

pattern

解析格式化模式

var

结果保存变量,类型为 java.lang.Date

scope

变量的作用范围

parseLocale

以本地化的形式来解析字符串,该属性的内容为 String 或 java.util.Locale类型的实例

timeZone

指定解析格式化日期的时区

 

<fmt:parseNumber> 和 <fmt:parseDate> 两组标签都实现解析字符串为一个具体对象实例的工作,因此,这两组解析标签对 var 属性的字符串参数要求非常严格。就 JSP 页面的表示层前段来说,处理这种解析本不属于份内之事,因此 <fmt:parseNumber> 和 <fmt:parseDate> 两组标签应该尽量少用,替代工作的地方应该在服务器端表示层的后段,比如在 Servlet 中。

 

上面简单的介绍了JAVA国际化配置,以及JSP的i18n标签库。这个章节,将展示如何在Spring 中配置国际化配置。

1、首先我们要准备资源文件,messages.properties ,作为默认的资源文件,另外准备了3个版本的资源文件:messages_en_US.properties messages_zh_CN.properties  messages_zh_TW.properties。放在class-path也就是/WEB-INF/classes里  。

注意:中文的资源,需要将文字转化为下,可以使用native2ascii.exe 工具,在JDK的bin目录下,带有这个工具。

2、web.xml 加入代码用来定义messages文件

 <context-param>
  <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
  <param-value>messages</param-value>
 </context-param>

3、建立个新的JSP页面:

加入标签库:<%@ taglib uri="http://java.sun.com/jstl/fmt " prefix="fmt" %>

然后设置 国际化配置语言:<fmt:setLocale value="zh_CN"/>  这样就会加载 messages_zh_CN.properties 的资源文件。

在用引用的国际化的属性的时候 使用 <fmt:message key="title"/> 就可以了,其中的title 为资源文件中定义的属性

这样就完成了一个最基本的国际化配置。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

JSP国际化配置

转自:http://xa-zbl.javaeye.com/blog/249385 国际化(Internationalization,又称il8n),是越来越多的应用软件必须面临的问题,Java语言采用...

JSTL标签和I18N

JSTL简介: lJSTL(Java Standard Tag Library) –Java标准标签库。 lSUN公司制定的一套标准标签库的规范。 lJSTL标签库,是由一些Java类组成的。 JST...

在JSP中实现国际化

工作中有个Java Web项目需要将英文版翻译出中文版,其中主要使用了大量的JSP页面进行显示,所以遇到JSP的国际化的问题,我今天做了一些调研,已经通过技术分析并形成方案,现总结如下: 对...
  • alanzyy
  • alanzyy
  • 2013年02月21日 17:59
  • 1713

struts2中jsp页面国际化

这里我要声明,我用的工具是eclipse ee 版本的                struts2要想实现国际化, 第一步:要在src目录下添加三个properties文件,名字分别是message...

深入分析JavaWeb -- 国际化(i18n)

一、国际化开发概述  软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的、符合来访者阅读习惯的页面或数据。      国际化(interna...

java项目国际化

利用maven生成了appfuse web 的ssh框架里面生成了一堆东西,调查了下 jstl 国际化         javax.servlet.jsp.jstl.fmt.local...

Struts2的国际化文件配置样式以及中文字体设置

我来填坑划水来了,这次讲的是我在工程中通过在国际化文件中来设置样式,这样页面调用国际化的话,不用在页面控制字体样式。 那国际化文件文件怎么设置字体样式呢,其实很简单就是用HTML实例(虽然我还没找到资...

java web 项目实现手动中英文切换

java国际化实现思路     Java程序的国际化思路是将程序中的标签、提示信息等放在资源文件中,程序需要支持国家/语言环境,则必须提供对应的资源文件。资源文件是key-value对,每个资源文件中...
  • ldybing
  • ldybing
  • 2016年08月16日 12:17
  • 4604

Struts2的国际化、配置全局资源与输出国际化信息、国际化—JSP中直接访问某个资源文件

Struts2的国际化、配置全局资源与输出国际化信息、国际化—JSP中直接访问某个资源文件 准备资源文件,资源文件的命名格式如下: baseName_language_country.prop...

JAVA_WEB Struts2学习:使用验证框架进行校验JSP页面元素 反编译工具的配置 Strtuts2 国际化学习

使用验证框架进行校验JSP页面元素: 创建验证文件:ActionName-validation.xml 使用验证框架,编写验证规则 反编译工具的配置:可以看jar包里写的类的源代码。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JSP国际化配置
举报原因:
原因补充:

(最多只允许输入30个字)