JSTL国际化标签库.docx
- 文档编号:920098
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:17
- 大小:540.56KB
JSTL国际化标签库.docx
《JSTL国际化标签库.docx》由会员分享,可在线阅读,更多相关《JSTL国际化标签库.docx(17页珍藏版)》请在冰点文库上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSTL 国际化 标签
![提示](https://static.bingdoc.com/images/bang_tan.gif)