欢迎来到天天文库
浏览记录
ID:38602785
大小:416.00 KB
页数:36页
时间:2019-06-16
《《ruts2国际化》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章:Struts2国际化主讲:刘雷本章内容Struts2国际化的实现原理国际化资源文件LocaleResourceBundleI18nInterceptor简单的struts2国际化实现过程的讲解国际化资源文件的优先级手动选择显示语言国际化Internationalization国际化Internationalization是使程序在不做任何修改的情况下,就可以在不同的国家或地区和不同的语言环境下,按照当地的语言和格式习惯显示字符。例如,一个数字123456.78,在法国它的书写格式是123456,78,在德国是123.456,78,而在美国则是123,456.78.国际化又
2、被称为I18N,因为国际化的英文是Internationalization,它以I开头,以N结尾,中间有18个字母。一个国际化的程序,当它运行在本地机器时,需要根据本地机器的语言和地区设置显示相应的字符,这个过程就叫做本地化(Localization),通常简称为:L10N。在JAVA中编写国际化程序主要通过两个类来完成:java.util.Locale类和java.util.ResourceBundle抽象类。Locale类用天提供本地信息,通常称它为语言环境。不同的语言,不同的国家和地区采用不同的Locale对象来表示。ResourceBundle类称为资源包,包含了特定于语
3、言环境的资源对象。当程序需要一个特定于语言环境的资源时(如字符串资源),程序可以从适合当前用户语言环境的资源包中加载它。采用这种方式,可以编写独立于用户语言环境的程序代码,而与特定语言环境相关的信息则通过资源包来提供。Locale类Java.util.Locale类的常用构造方法如下:publicLocale(Stringlanguage)publicLocale(Stringlanguage,Stringcountry)其中language表示语言,它的取值是由ISO-639定义的小写的、两个字母组成的语言代码。其中country表示国家或地区,它的取值由ISO-639定义的大
4、写的、两个字母组成的代码左表列出了常用的ISO-639语言代码。右表列出了常用的ISO-3166国家和地区代码举例例如:应用于中国的Locale为:Localelocale=newLocale(“zh”,”CN”);例如:应用于美国的Locale为:Localelocale=newLocale(“en”,”US”);例如:应用于英国的Locale为:Localelocale=newLocale(“en”,”GB”);资源包(一)最理想的实现国际化的方法是将要显示的字符内容从程序中分离,然后统一存储到一个资源包中,当显示时,从资源包中取出和平Locale对象相一致的字符内容。在Ja
5、va中,这种资源包是由类来实现的,这个类必须要扩展java.util.ResourceBundle.在编写国际化程序时,要为不同的国家地区和语言编写不同的资源类,这些资源类同属一个资源系列,共享同一个基名(basename).不同语言所对应的资源类的名称为基名加上ISO-639标准的语言代码,而应用于某个特定国家或地区的资源类的名称,则是在基名和语言代码后加上ISO-3166标准的同家或地区代码。例如:有一个资源包系列的基名是MyResource,那么说中文的所有国家或地区共享的资源属于MyResource_zh类,中国台湾的特定资源则属于MyResource_zh_TW类。一个
6、资源包系列可以有一个默认的资源包,它的名字就是基名,当请求的资源包不存在时,将使用默认的资源包。要获取某个资源包,可以调用java.util.ResourceBundle类中的静态方法getBundle(),如下:publicstaticfinalResourceBundlegetBundle(StringbaseName)根据基名得到资源包,使用系统缺省的Locale对象。publicstaticfinalResourceBundlegetBundle(StringbaseName,Localelocale)根据基名和Locale对象得到资源名。资源包(二)利用getBundl
7、e()方法可以得到对应于某个Locale对象的资源包,然后就可以利用ResourceBundle类的getString()方法得到相应语言版本的字符串。publicfinalStringgetString(Stringkey)从资源包中根据关键字得到字符串。例如:Localelocale=newLocale(“zh”,”CN”);bundle=ResourceBundle.getBundle(“MyResource”,locale);Stringname=bundle.getSt
此文档下载收益归作者所有