Posted on 2011-11-21 09:36
陈小东 阅读(212)
评论(0) 编辑 收藏
国际化(internationalization,i18n)和本地化(localization,l10n)指让产品(出版物,软件,硬件等)能够适应非本地环境,特别是其他的语言和文化。程序在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面。
国际化主要体现在:页面、action的信息、类型转换信息、校验信息。
Struts2的国际化分为:页面的国际化,Action的国际化、xml的国际化。
struts2的国际化三种级别:针对某个Action的action级别,针对package的package级别,针对webapp的webapp级别。优先级:类资源文件 > 包资源文件 > 全局资源文件。Action级优先级最大。
国际化资源文件:用不同国家的语言描述相同的信息,并放在各自对应的.properties属性文件中,程序根据运行时环境决定加载哪个文件。
国际化资源文件分为三种级别:
(1) 类资源文件:将资源文件放到与类同一目录下,只允许该类使用,命名为:类名_语言名_国家名.properties
(2) 包资源文件:将资源文件放在某个包下,只允许这个包使用,命名为:包名_语言名_国家名.properties
(3) 全局资源文件:将资源文件放在src目录(WEB-INF/classes路径)下,全局均可使用,命名为:baseName_语言名_国家名.properties,需要在struts.properties文件中加入以下内容:struts.custom.i18n.resources=资源文件的基本名或在struts.xml中加入: <constant name=“struts.custom.i18n.resources” value=“资源文件的基本名”/>
国际化主要通过以下类完成:
(1)java.util.Locale:对应一个特定的国家/区域、语言环境。
(2)java.util.ResourceBundle:用于加载一个资源包。
(3)I18nInterceptor:struts2所提供的国际化拦截器,负责处理Locale相关信息。
资源文件的命名可以有以下三种形式:
(1)baseName_language_country.properties
(2)baseName_language.properties
(3)baseName.properties
其中baseName是资源文件的基本名,用户可以自由定义。而language和country必须是Java所支持的语言和国家。如:创建中文和英语国际化,那么资源文件名称为:globalMessages _zh_CN.properties、globalMessages _en_US.properties。