《Struts国际化.ppt》由会员分享,可在线阅读,更多相关《Struts国际化.ppt(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Struts第十章Struts国际化1要实现功能要实现功能上节回顾上节回顾使用Struts2验证框架的所涉及的文件验证框架所使用的属性文件的名称扩展名Struts2的验证框架所使用的标记本节目标本节目标什么是国际化在STRUTS2中如何实现国际化什么是国际化什么是国际化(Internationalization)又被称为I18N是使程序在不做任何修改的情况下,就可以在不同的国家或地区和不同的语言环境,按照当地的语言和格式习惯显示字符。什么是本地化什么是本地化Localization又称为L10N一个国际化的程序,当它运行在本地机器上时,需要根据本地机器的语言和地区设置显示相应的字符国际化所涉及
2、的类国际化所涉及的类Java.util.Locale:用于提供本地信息,通常称为语言环境,不同的语言,不同的国家采用不同的 Locale对象来表示。Java.util.ResourceBundle:称为资源包,包含了特定于语言环境的资源对象,当程序需要一个特定于语言环境的资源时(如字符串资源),程序可以从适合当前用户语言环境资源包中加载它。Locale类 getDefault():getAvaliableLocales()getDisplayContry()getContry()getDisplayLanguage()getLanguage()P249页(孙鑫教程)页(孙鑫教程)不同的国家有不
3、同的国家码和语言码案例案例public class Test1public static void main(String args)Locale locales=Locale.getAvailableLocales();for(Locale locale:locales)System.out.println(locale.getDisplayCountry()+:+locale.getCountry();System.out.println(locale.getDisplayLanguage()+:+locale.getLanguage();注意:注意:国家码国家码语言码语言码中国中国CNz
4、h美国美国USen获取不同的属性文件信息显示获取不同的属性文件信息显示使用的类LocaleResourceBundlegetBundle(String baseName,Locale locale):获取指定的Locale对象获取资源文件的信息 getString(String key):将键所对应的值显示出来获取不同的属性文件信息显示获取不同的属性文件信息显示创建资源文件位置:在classes根目录下名称:baseName-language-contry后缀:properties例如:hellofile_en_US.properties(英文)hellofile_zh_CN.properti
5、es(中文)属性文件的内容属性文件的内容hellofile-en-US.properties(英文)Hello=hello world;hellofile-zh-CN.properties(中文)Hello=你好案例案例public class Test2public static void main(String args)Locale locale=Locale.US;/Locale locale=Locale.getDefault();ResourceBundle bundle=ResourceBundle.getBundle(hellofile,locale);String value
6、=bundle.getString(hello);System.out.println(value);允许动态添加属性文件信息允许动态添加属性文件信息hello=hello world0案例案例import java.util.*;import java.text.*;public class Test3public static void main(String args)Locale locale=Locale.US;ResourceBundle bundle=ResourceBundle.getBundle(hellofile,locale);String value=bundle.ge
7、tString(hello);String result=MessageFormat.format(value,new Object北京);System.out.println(result);Struts2 国际化国际化JSP页面的国际化的使用的使用错误信息的国际化validate()验证框架错误信息页面中表单标签信息的国际化其中的name属性指的是对应属性文件的键值,如果此键存在,则显示键所对应的值,如果此键不存在,则显示name属性的值。JSP页面的国际化页面的国际化Struts.xml文件中有在src下增加两个属性文件 message_en_US.properties message_
8、zh_CN.properties在JSP页面中使用来显示信息浏览器会根据IE的设置来显示不同的属性文件更改IE浏览器的语言环境工具IE选项语言添加。2、错误信息的国际化、错误信息的国际化Validate()方法中action信息的国际化ActionSupport类中方法getText(String key)获取指定键的值案例案例Register2.jspRegisterAction.javamessage_en_US.propertiesmessage_zh_CN.properties问题问题解决办法解决办法使用getText(String,List);案例:List list=new Arr
9、ayList();list.add(username);this.addActionError(this.getText(username.invalid,list);验证框架的国际化验证框架的国际化验证RegisterAction-validation.xml文件该验证文件验证的是field级别的信息在该xml文件中国际化文件的分类国际化文件的分类全局的局部的包级别的 类级别的包级别的包级别的 属性文件属性文件 名称:package_language_contry位置:在包下面扩展名:.properties举例:package_zh_CN.properties类级别的类级别的 属性文件属性文
10、件名称:classname_language_contry位置:在包下面扩展名:.properties举例:RegisterAction_zh_CN.properties三种属性文件的作用范围三种属性文件的作用范围类级别的是最优先的然后是包级别的然后是全局的页面中表单标签信息的国际化页面中表单标签信息的国际化表格的theme属性不能是simple去除label标记增加key属性 key的值即是属性文件中的key值注意:key的值可以是包级别的也可以是类级别的标记的使用在标记的使用在JSP页面中页面中它可以指定在哪个属性文件中取相应的key值属性文件的名称可以随意属性文件的位置应该在classes根目录下举例:传递参数传递参数dingna属性文件:add=add a user s inform 0小结:小结:作业作业Locale类的含义及三个方法ResourceBundle类的含义、用法及三个方法的作用MessageFormat类的含义、用法及三个方法的作用