il8n标签用于进行国际化语言的转换作业,同时提供日期与数值等数据类型的格式转换标签。相关标签如下:
①国际化设置
▶setLocale :设置所使用的语言文化区域
▶requestEncoding:指定编码方式
②消息
▶bundle:指定所要使用的资源文件名称
▶setBundle:设置预设的资源文件
▶message:取得资源文件的内容
③数字、日期格式
▶timeZone:转换时区格式
▶setTimeZone:存储时区信息
▶formatNumber:格式化数值
▶parseNumber:解析特定数值格式
▶formatDate:格式化日期
▶parseDate:解析特定日期格式
要使用 il8n标签库,必须先使用taglib指令引入它,其语法格式为:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
一、国际化设置标签
1.1、<fmt:setLocale>标签
该标签用来设置用户的语言地区。语法如下:
<fmt:setLocale value="{II|II-CC}" variant="variant" scope="{page|request|session|application}"/>
value属性是必须的,代表所要指定的区域代号。value值可以由II两个小写字母表示,如zh,或者有II-CC组成的
语言-国家代码表示,如zh-CN(中文-中国)。
默认情况下,il8n标记依据浏览器的设定来确定本地属性值。使用<fmt:setLocale>标记会覆盖浏览器本地属性设置。
1.2、<fmt:requestEncoding>标签
该标签用来设置字符串编码。网页只有经过正确的编码,进行请求响应的过程中,传递的参数内容才能正确显示。<fmt:requestEncoding>标签的具体作用和request内置对象的setCharacterEncoding()方法的功能完全相同。语法如下:
<fmt:requestEncoding value="charsetName"/>
value属性代表所要指定的编码方式字符串,如果没有指定,则它会自动寻找合适的编码方式。默认的是ISO-8859-1的字符,需要显式指定字符集编码。
二、消息标签库
作用:获取系统设定的语言资源,使Web应用支持国际化。
国际化网页示意图:
当浏览器提出网页浏览请求时,网页根据浏览器所属的区域语系,取得其相关的资源文件,正确的显示符合此语系的网页内容。
2.1、<fmt:bundle>标签
该标签主要用来取得资源文件的内容,将其显示在网页上。语法:
<fmt:bundle basename="basename" prefix="prefix">
...
</fmt:bundle>
注:basename属性设置要使用资源的名称,不包含文件本身的扩展名,
当basename属性为null、空或者无法找到资源时,在网页上会产生???<key>???的错误信息。
prefix指定<fmt:bundle>标签当中key值的预设前缀。
2.2、<fmt:setBundle>标签
该标签设置默认的资源文件,指定资源不存在时,直接套用默认的资源文件。语法:
<fmt:setBundle basename="basename" var="varName" scope="page/..."/>
当basename属性为null、空或者无法找到资源时,在网页上会产生???<key>???的错误信息。
var表示指定变量的名称,还可以存储所要读取资源的资源文件内容,scope表示var的范围。
basename设定要使用的资源文件,若没有设定var时,那么设定好的资源文件会成为默认的资源文件。在同一页面或同一属性范围内<fmt:message>都可以直接使用此资源文件。相反,若设定var时,那么会将资源文件存储到varName中,当使用<fmt:message>时,必须使用bundle这个属性来指定。如:
<fmt:setBundle basename="MyResource" var="myResource" scope="session"/>
<fmt:message key="str" bundle="${myResource}">
如果没有指定var,只需写成:
<fmt:setBundle basename="MyResource" scope="session"/>
<>fmt:message key="str"/>
2.3、<fmt:message>标签
该标签主要用于从指定的资源中把指定的关键字获取出来。语法(key属性必须有):
①无本体内容:
<fmt:message key="messagekey" bundle="resourceBundle" var="varName" scope="page/..." />
②包含指定信息参数的本体内容:
<fmt:message key="messagekey" bundle="resourceBundle" var="varName" scope="page/..." >
<fmt:param />
</fmt:message>
③包含指定选择性信息参数与key值的本体内容:
<fmt:message key="messagekey" bundle="resourceBundle" var="varName" scope="page/..." >
索引
可选的<fmt:param />
</fmt:message>
key表示索引,bundle表示使用的数据来源,var用来存储国际化信息,scope表示var的范围。
三、数字日期格式化
3.1、设置是时区
<fmt:timeZone value="timeZone">
...
</fmt:timeZone>
针对标签当中的本体内容进行格式化,value代表使用的时区。
<fmt:timeZone value="timeZone" var="varName" scope="page/..."/>
将时区的设置信息存储在指定的变量里面。
3.2、格式化数字
<fmt:formatNumber>标签将指定的数值格式化,用来表现货币或是百分比等其他特定的数值状态。
3.3、格式化日期
<fmt:formatDate>标签以指定的时区格式化显示日期对象。