JSTL国际化标签库.docx

上传人:b****1 文档编号:920098 上传时间:2023-04-30 格式:DOCX 页数:17 大小:540.56KB
下载 相关 举报
JSTL国际化标签库.docx_第1页
第1页 / 共17页
JSTL国际化标签库.docx_第2页
第2页 / 共17页
JSTL国际化标签库.docx_第3页
第3页 / 共17页
JSTL国际化标签库.docx_第4页
第4页 / 共17页
JSTL国际化标签库.docx_第5页
第5页 / 共17页
JSTL国际化标签库.docx_第6页
第6页 / 共17页
JSTL国际化标签库.docx_第7页
第7页 / 共17页
JSTL国际化标签库.docx_第8页
第8页 / 共17页
JSTL国际化标签库.docx_第9页
第9页 / 共17页
JSTL国际化标签库.docx_第10页
第10页 / 共17页
JSTL国际化标签库.docx_第11页
第11页 / 共17页
JSTL国际化标签库.docx_第12页
第12页 / 共17页
JSTL国际化标签库.docx_第13页
第13页 / 共17页
JSTL国际化标签库.docx_第14页
第14页 / 共17页
JSTL国际化标签库.docx_第15页
第15页 / 共17页
JSTL国际化标签库.docx_第16页
第16页 / 共17页
JSTL国际化标签库.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

JSTL国际化标签库.docx

《JSTL国际化标签库.docx》由会员分享,可在线阅读,更多相关《JSTL国际化标签库.docx(17页珍藏版)》请在冰点文库上搜索。

JSTL国际化标签库.docx

JSTL国际化标签库

主要内容:

国际化介绍

JSTL国际化标签分类

国际化的web应用

一、国际化介绍

1.国际化:

目前开发的软件通常要求能够针对客户所在的地区和国家,显示符合该地区和国家语言习惯的页面信息.例如英国客户看到的页面信息应该英文,货币显示单位英镑.

2.国际化的实现标准:

页面的固定信息的国际化:

页面的标题,导航,菜单,按钮等信息的要根据地区和国家显示相应的语言

页面的动态信息的国际化:

货币,时间,能够按照客户地区和国家显示当地的货币单位,和时区时间.

I18N(internationalization):

从i到n中间18个字母,所以称为I18n.

二、JSTL国际化标签分类

三、国际化的web应用

1.Local设置

标签语法:

setLocalevalue="语言国家"/>

说明:

该标签用来设置当前页面的语言,value属性可以设置为语言,或语言_国家

举例:

setLocalevalue="en"/>

setLocalevalue="en_US"/>//设置语言国家语言和国家之间可以用–或_都可以

注意:

如果不明确locale或者value=””则默认使用当前浏览器设置.

2.固定信息国际化

1)把所有固定信息写入资源文件中.针对每一种语言创建对应的资源文件.所有创建的资源文件都必须有一个相同的基本名称如:

myProperties

针对每中语言和国家附加响应信息:

myProperties_语言_国家.properties

myProperties_语言.properties

myProperties.properties(默认的资源文件,整个资源包中只有一个,当根据语言国家找不到相应资源文件时,默认使用此文件)

例如:

myProperteis_zh_CN.properties

myProperteis_en_US.properties

要在响应语言的资源文件中把固定信息以”key=value”的形式定义下来,在页面中通过key在资源文件中找到value显示,所有资源文件中的key必须一致

资源文件都以ASCII编码,对于非ASCII码的内容,如中文,需要转码.

整个项目结构:

通常将这样一组资源文件,叫做资源文件包.

2)使用JSTL标签显示固定信息

1.

bundle>标签:

用来绑定资源文件

语法:

bundlebasename=”资源文件名”>

标签体的内容展示,以绑定资源文件名为准

bundle>

举例:

说明:

如果出现?

?

userName?

?

情况,一般baseName或者key设定错误.

Prefix:

表示设定资源文件中key的前缀部分(即key中相同的内容),注意“.“不要漏掉.否则出现乱码?

?

userName?

2.

setBunlde>标签:

用来绑定资源文件,可应用到message标签

语法格式:

setBundlebasename=”资源文件名”var=”变量名”scope=”变量范围”/>

说明:

当web项目中有多套资源包的时候,可以通过setBundle标签来绑定不同资源包,在同一个页面中可以使用不同的资源包

如果不设定var,则默认此绑定在当前页面有效

举例1:

3.

message>标签:

根据指定的key,在资源文件中查找并显示value值

语法:

messagekey=”资源文件中的信息key”bundle=”资源绑定”var=”存储信息”scope=”变量作用于”>

举例1:

根据key获取value并显示

举例2:

根据key获取value存入变量

4.

param>标签:

从资源文件中获取信息是,可以动态的设置其中的部分内容.

语法格式:

paramvalue="">

param>

或者

param>标签体

param>

举例:

3.动态信息国际化:

针对日期,数字等信息的格式化设置

1)

timeZone>:

制定时区

timeZone是时区的ID,例如:

America/Los_Angeles,GMT-8等。

如果value的值为空或null,则默认为GMT时区。

2)

setTimeZone>:

指定时区

举例:

3)

formatNumber>:

根据指定时区,格式化数字

语法:

formatNumbervalue=“numericValue”[type=“{number|currency|percent}”]

[pattern=“customPattern”]

[currencyCode=“currencyCode”]

[currencySymbol=“currencySymbol”]

[groupingUsed=“{true|false}”]

[maxIntegerDigits=“maxIntegerDigits”]

[minIntegerDigits=“minIntegerDigits”]

[maxFractionDigits=“maxFractionDigits”]

[minFractionDigits=“minFractionDigits”]

[var=“varName”]

[scope=“{page|request|session|application}”]/>

 

语法2:

本体为欲格式化的内容

formatNumber[type=“{number|currency|percent}”]

[pattern=“customPattern”]

[currencyCode=“currencyCode”]

[currencySymbol=“currencySymbol”]

[groupingUsed=“{true|false}”]

[maxIntegerDigits=“maxIntegerDigits”]

[minIntegerDigits=“minIntegerDigits”]

[maxFractionDigits=“maxFractionDigits”]

[minFractionDigits=“minFractionDigits”]

[var=“varName”]

[scope=“{page|request|session|application}”]>

欲格式化的数字

formatNumber>

 

formatNumber>的属性

说明:

如果type属性为percent或number,那么您就可以使用其它几个格式化数字属性。

maxIntegerDigits属性和minIntegerDigits属性允许您指定整数的长度。

若实际数字超过了maxIntegerDigits所指定的最大值,则数字将会被截断。

有一些属性允许您指定小数点后的位数。

minFractionalDigits属性和maxFractionalDigits属性允许您指定小数点后的位数。

若实际的数字超出了所指定的范围,则这个数字会被截断。

数字分组可以用来在每三个数字中插入一个逗号。

groupingIsUsed属性用来指定是否使用数字分组。

当与minIntegerDigits属性一同使用时,就必须要很小心地来获取预期的结果了。

您或许会使用pattern属性。

这个属性可以让您在对数字编码时包含指定的字符。

接下来的表格中列出了这些字符。

举例:

4)

parseNumber>:

把字符串形式的数字,日期,货币转换为数字

语法:

语法1:

没有本体的内容

parseNumbervalue=“numbericValue”

[type=“{number|currency|percent}”]

[pattern=“customPattern”]

[parseLocale=“parseLocale”]

[integerOnly=“{true|false}”]

[var=“varName”]

[scope=“{page|request|session|application}”]/>

 

语法2:

有本体的内容

parseNumber[type=“{number|currency|percent}”]

[pattern=“customPattern”]

[parseLocale=“parseLocale”]

[integerOnly=“{true|false}”]

[var=“varName”]

[scope=“{page|request|session|application}”]>

待转换为字符串的字符串

parseNumber>

parseNumbe>的属性

举例:

5)

formatDate>:

根据指定时区,格式化日期

语法:

formatDatevalue=“date”

[type=“{time|date|both}”]

[dateStyle=“{default|short|medium|long|full}”]

[timeStyle=“{default|short|medium|long|full}”]

[pattern=“customPattern”]

[timeZone=“timeZone”]

[var=“varName”]

[scope=“{page|request……}”]/>

说明:

timeZone指定时区,如果没有指定,默认使用本地属性中的时区。

举例:

6)

parseDate>:

把字符串形式的日期,转换为日期对象

语法:

parseDatevalue=“dateString”

[type=“{time|date|both}”]

[dateStyle=“{default|short|medium|long|full}”]

[timeStyle=“{default|short|medium|long|full}”]

[patter=“customPattern”]

[timeZone=“timeZone”][parseLocale=“parseLocale”]

[var=“varName”]

[scope=“{page|request……}”]/>

Patter模式使用的字符形式

d 月中的某一天。

一位数的日期没有前导零。

  

dd 月中的某一天。

一位数的日期有一个前导零。

  

ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。

  

dddd 周中某天的完整名称,在 DayNames 中定义。

  

M 月份数字。

一位数的月份没有前导零。

  

MM 月份数字。

一位数的月份有一个前导零。

  

MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。

  

MMMM 月份的完整名称,在 MonthNames 中定义。

  

y 不包含纪元的年份。

如果不包含纪元的年份小于 10,则显示不具有前导零的年份。

  

yy 不包含纪元的年份。

如果不包含纪元的年份小于 10,则显示具有前导零的年份。

  

yyyy 包括纪元的四位数的年份。

  

gg 时期或纪元。

如果要设置格式的日期不具有关联的时期或纪元字符串,则忽略该模式。

  

h 12 小时制的小时。

一位数的小时数没有前导零。

  

hh 12 小时制的小时。

一位数的小时数有前导零。

  

H 24 小时制的小时。

一位数的小时数没有前导零。

  

HH 24 小时制的小时。

一位数的小时数有前导零。

  

m 分钟。

一位数的分钟数没有前导零。

  

mm 分钟。

一位数的分钟数有一个前导零。

  

s 秒。

一位数的秒数没有前导零。

  

举例:

应用程序中实现国际化

 数值,货币,时间,日期等数据由于可能在程序运行时动态产生,所以无法像文字一样简单地将它们从应用程序中分离出来,而是需要特殊处理。

Java中提供了解决这些问题的API类(位于java.util包和java.text包中)

1.Locale类

Locale实例对象代表一个特定的地理,政治、文化区域。

  一个Locale对象本身不会验证它代表的语言和国家地区信息是否正确,只是向本地敏感的类提供国家地区信息,与国际化相关的格式化和解析任务由本地敏感的类去完成。

(若JDK中的某个类在运行时需要根据Locale对象来调整其功能,这个类就称为本地敏感类)

2.DateFormat类(日期格式化)

  DateFormat类可以将一个日期/时间对象格式化为表示某个国家地区的日期/时间字符串。

  DateFormat类除了可按国家地区格式化输出日期外,它还定义了一些用于描述日期/时间的显示模式的int型的常量,包括FULL,LONG,MEDIUM,DEFAULT,SHORT,实例化DateFormat对象时,可以使用这些常量,控制日期/时间的显示长度。

1)实例化DateFormat类

  实例化DateFormat类有九种方式,以下三种为带参形式,下面列出的三种方式也可以分别不带参,或只带显示样式的参数。

  getDateInstance(intstyle,LocaleaLocale):

以指定的日期显示模式和本地信息来获得DateFormat实例对象,该实例对象不处理时间值部分。

  getTimeInstance(intstyle,LocaleaLocale):

以指定的时间显示模式和本地信息来获得DateFormat实例对象,该实例对象不处理日期值部分。

  getDateTimeInstance(intdateStyle,inttimeStyle,LocaleaLocale):

以单独指定的日期显示模式、时间显示模式和本地信息来获得DateFormat实例对象。

2)DateFormat对象的方法    

format:

将date对象格式化为符合某个本地环境习惯的字符串。

  parse:

将字符串解析为日期/时间对象

  注意:

parse和format完全相反,一个是把date时间转化为相应地区和国家的显示样式,一个是把相应地区的时间日期转化成date对象,

该方法在使用时,解析的时间或日期要符合指定的国家、地区格式,否则会抛异常。

DateFormat对象通常不是线程安全的,每个线程都应该创建自己的DateFormat 实例对象

3.NumberFormat

NumberFormat类可以将一个数值格式化为符合某个国家地区习惯的数值字符串,也可以将符合某个国家地区习惯的数值字符串解析为对应的数值

  NumberFormat类的方法:

    format方法:

将一个数值格式化为符合某个国家地区习惯的数值字符串

    parse方法:

将符合某个国家地区习惯的数值字符串解析为对应的数值。

  实例化NumberFormat类时,可以使用locale对象作为参数,也可以不使用,下面列出的是使用参数的。

1.getNumberInstance(Localelocale):

以参数locale对象所标识的本地信息来获得具有多种用途的NumberFormat实例对象

2.getIntegerInstance(Localelocale):

以参数locale对象所标识的本地信息来获得处理整数的NumberFormat实例对象

3.getCurrencyInstance(Localelocale):

以参数locale对象所标识的本地信息来获得处理货币的NumberFormat实例对象

4.getPercentInstance(Localelocale):

以参数locale对象所标识的本地信息来获得处理百分比数值的NumberFormat实例对象

4.MessageFormat(文本格式化)

  如果一个字符串中包含了多个与国际化相关的数据,可以使用MessageFormat类对这些数据进行批量处理。

  例如:

At12:

30pmonjul3,1998,ahurricancedestroyed99housesandcaused$1000000ofdamage

  以上字符串中包含了时间、数字、货币等多个与国际化相关的数据,对于这种字符串,可以使用MessageFormat类对其国际化相关的数据进行批量处理。

  MessageFormat类如何进行批量处理呢?

    1.MessageFormat类允许开发人员用占位符替换掉字符串中的敏感数据(即国际化相关的数据)。

    2.MessageFormat类在格式化输出包含占位符的文本时,messageFormat类可以接收一个参数数组,以替换文本中的每一个占位符。

模式字符串与占位符

模式字符串:

At{0}on{1},adestroyed{2}housesandcaused{3}ofdamage

  字符串中的{0}、{1}、{2}、{3}就是占位符

格式化模式字符串

  1、实例化MessageFormat对象,并装载相应的模式字符串。

  2、使用format(objectobj[])格式化输出模式字符串,参数数组中指定占位符相应的替换对象。

例如:

At12:

30pmonjul3,1998,ahurricancedestroyed99housesandcaused$1000000ofdamage

At{0}on{1},adestroyed{2}housesandcaused{3}ofdamage

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2