转自:http://xa-zbl.javaeye.com/blog/249385
国际化(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 为资源文件中定义的属性
这样就完成了一个最基本的国际化配置。
分享到:
相关推荐
在JavaServer Pages (JSP) 开发中,fmt标签库是实现国际化(I18N)和格式化数据的关键工具。fmt标签库提供了12个标签,分为两大类:国际化核心标签和格式化标签。这些标签使得开发者能够在JSP页面中轻松地处理多语言...
JSTL(JavaServer Pages Standard Tag Library)是用于增强JSP页面功能的一组标签库,其中fmt标签库是专门用来处理日期、数字格式化以及国际化问题的。本文将详细介绍如何使用JSTL fmt标签来实现国际化。 首先,...
`fmt` 标签库主要包含两大类标签:国际化核心标签和格式化标签。 1. **国际化核心标签**: - `<fmt:setLocale>`:用于设置当前的地域设置。 - `<fmt:bundle>` 和 `<fmt:setBundle>`:用于绑定资源文件。 - `<fmt...
fmt标签库主要分为两个大类:国际化核心标签和格式化标签。国际化核心标签主要用于设置和管理本地化环境,而格式化标签则用于日期、时间、数字的格式化和解析。 1. **国际化核心标签** - `<fmt:setLocale>`:这个...
### FMT 国际化格式标签库实践 #### 一、引言 在现代Web开发中,为了提供更好的用户体验和适应全球化的需求,国际化(Internationalization)与本地化(Localization)成为了不可或缺的一部分。Java Server Pages ...
`fmt`标签是JavaServer Pages (JSP)中Jakarta Tag Library (JSTL)的一部分,主要用于...在处理国际化和本地化的应用中,`fmt`标签更是不可或缺的工具,因为它能根据用户所在的地区自动调整格式,提供更友好的用户体验。
它支持类型安全、自定义类型输出、国际化等特性。 6. **Python中的`fmt`** Python使用`str.format()`方法进行格式化输出,语法更直观,如`"{:.2f}".format(3.14159)`将输出`3.14`。此外,Python3.6引入的f-string...
### FMT标签在Struts开发中的应用:提升程序员效率与代码质量 在Java Web开发领域,Struts框架作为MVC架构的典范,一直备受开发者青睐。然而,在处理国际化(I18N)与格式化输出时,Struts的原生支持显得较为基础,...
JSTL标签提供了对国际化(I18N)的支持,它可以根据发出请求的客户端地域的不同来显示不同的语言。同时还提供了格式化数据和日期的方法。实现这些功能需要I18N格式标签库(I18N-capable formation tags liberary)。...
5. **JSTL国际化(i18n)**: JSTL提供了一组标签来处理国际化和本地化,如`<fmt:message>`用于获取资源包中的消息,`<fmt:setLocale>`设置当前用户区域,`<fmt:formatDate>`格式化日期。 6. **JSTL EL表达式**: JSTL...
6. **JSTL的fmt标签**:除了Spring的标签,还可以利用JSTL的`fmt:bundle`和`fmt:message`标签,它们同样可以从资源文件中提取文本。`fmt:formatNumber`和`fmt:formatDate`等标签可用于格式化数字和日期,以适应不同...
JavaWeb新版教程. JSON和Ajax请求&i18n国际化n-使用JSTL标签库fmt实现国际化.avi
Java 实现国际化是一种重要的软件开发技术,特别是在构建多语言支持的应用程序时。国际化(i18n)使得软件能够适应不同国家和地区的语言环境,包括中文和英文。在这个主题中,我们将深入探讨如何使用Java和JSP进行...
- JSP中使用`<fmt:message>`标签显示国际化的消息。 4. **简单程序实现**: - 创建Action类,实现业务逻辑,可能需要继承自`org.apache.struts.action.Action`。 - 编写ActionForm,对应用户输入的数据,并进行...
JSTL提供了`fmt`标签库,专门用于处理国际化。例如,`<fmt:setLocale>`用于设置页面的区域设置,`<fmt:message>`标签用于从资源包中获取并显示本地化文本。 5. **在JSP中实现国际化步骤** - 创建资源包文件,如`...
总之,JSP的国际化实现涉及创建资源文件,配置Web应用支持多种语言,以及在JSP页面中使用`fmt`标签库来引用资源文件。通过这个简单的案例,开发者可以理解并实践Web应用的国际化,从而为全球用户提供更好的服务。
7. **JSTL(JavaServer Pages Standard Tag Library)**:在上述示例中,我们使用了JSTL的`fmt`标签库,它是JSP中处理国际化和本地化问题的标准库,提供了诸如设置locale、获取资源文件、格式化日期和数字等功能。...
JSTL提供了丰富的标签来处理各种常见的Web应用程序需求,如条件判断、循环、国际化等。本文将详细介绍JSTL中的核心标签:、、、、、、、、、以及与之相关的<fmt>标签库。 #### 1. 标签用于根据表达式的值执行或跳...
在Struts1中实现国际化(i18n)是提高应用程序可扩展性和适应不同语言环境的重要手段。下面将详细解释如何在Struts1中进行国际化实践,并结合给出的实例进行解析。 一、国际化(i18n)基础 国际化是指软件设计时...