- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]第六章:struts2国际化
第六章:Struts 2国际化
本章内容
Struts2国际化的实现原理
国际化资源文件
Locale
ResourceBundle
I18nInterceptor
简单的struts2国际化实现过程的讲解
国际化资源文件的优先级
手动选择显示语言
国际化Internationalization
国际化Internationalization是使程序在不做任何修改的情况下,就可以在不同的国家或地区和不同的语言环境下,按照当地的语言和格式习惯显示字符。例如,一个数字123456.78,在法国它的书写格式是123 456,78,在德国是123.456,78,而在美国则是123,456.78.
国际化又被称为I18N,因为国际化的英文是Internationalization,它以I开头,以N结尾,中间有18个字母。
一个国际化的程序,当它运行在本地机器时,需要根据本地机器的语言和地区设置显示相应的字符,这个过程就叫做本地化(Localization),通常简称为:L10N。
在JAVA中编写国际化程序主要通过两个类来完成:
java.util.Locale类和java.util.ResourceBundle抽象类。
Locale类用天提供本地信息,通常称它为语言环境。不同的语言,不同的国家和地区采用不同的Locale对象来表示。
ResourceBundle类称为资源包,包含了特定于语言环境的资源对象。当程序需要一个特定于语言环境的资源时(如字符串资源),程序可以从适合当前用户语言环境的资源包中加载它。采用这种方式,可以编写独立于用户语言环境的程序代码,而与特定语言环境相关的信息则通过资源包来提供。
Locale类
Java.util.Locale类的常用构造方法如下:
public Locale(String language)
public Locale(String language,String country)
其中language表示语言,它的取值是由ISO-639定义的小写的、两个字母组成的语言代码。
其中country表示国家或地区,它的取值由ISO-639定义的大写的、两个字母组成的代码
左表列出了常用的ISO-639语言代码。右表列出了常用的ISO-3166国家和地区代码
举例
例如:应用于中国的Locale为:
Locale locale = new Locale(“zh”,”CN”);
例如:应用于美国的Locale为:
Locale locale = new Locale(“en”,”US”);
例如:应用于英国的Locale为:
Locale locale = new Locale(“en”,”GB”);
资源包(一)
最理想的实现国际化的方法是将要显示的字符内容从程序中分离,然后统一存储到一个资源包中,当显示时,从资源包中取出和平Locale对象相一致的字符内容。在Java中, 这种资源包是由类来实现的,这个类必须要扩展java.util.ResourceBundle.
在编写国际化程序时, 要为不同的国家地区和语言编写不同的资源类,这些资源类同属一个资源系列,共享同一个基名(base name).不同语言所对应的资源类的名称为基名加上ISO-639标准的语言代码,而应用于某个特定国家或地区的资源类的名称,则是在基名和语言代码后加上ISO-3166标准的同家或地区代码。
例如:有一个资源包系列的基名是MyResource,那么说中文的所有国家或地区共享的资源属于MyResource_zh类,中国台湾的特定资源则属于MyResource_zh_TW类。一个资源包系列可以有一个默认的资源包, 它的名字就是基名,当请求的资源包不存在时,将使用默认的资源包。
要获取某个资源包,可以调用java.util.ResourceBundle类中的静态方法getBundle(),如下:
public static final ResourceBundle getBundle(String baseName)
根据基名得到资源包,使用系统缺省的Locale对象。
public static final ResourceBundle getBundle(String baseName,Locale locale)
根据基名和Locale对象得到资源名。
资源包(二)
利用getBundle()方法可以得到对应于某个Locale对象的资源包,然后就可以利用ResourceBundle类的getString()方法得到相应语言版本的字符串。
public final String getString(String key)
从资源包中根据关键字得到字符串。
例如:
Locale locale = new Locale(“
您可能关注的文档
最近下载
- 《酒店客户关系管理 》课件——项目四 酒店客户关系建立与维护.pptx VIP
- 监控报价清单表-监控报价模板.xlsx VIP
- 1.1 什么是美术作品 课件高中美术湘美版(2019)美术鉴赏.pptx
- 《酒店客户关系管理 》课件——项目二 酒店客户关系管理主体.pptx VIP
- 船舶驾驶员实用英语口语.doc VIP
- 《酒店客户关系管理 》课件——项目一 酒店客户关系管理导论.pptx VIP
- 船舶驾驶员实用英语口语5.docx VIP
- 《酒店客户关系管理 》课件——项目八 酒店客户关系数字化运营.pptx VIP
- 食材配送应急预案处理流程及响应时间.docx VIP
- 保安服务 投标方案(技术标 ).doc
文档评论(0)