struts国际化

国际化Internationalization-I18N,本地化Localization-L10N)
Java程序国际化主要通过2个类完成:
 iava.util.ResourceBundle:用于加载一个资源包。
 java.util.Locale:对应一个特定的国家/区域、语言环境。


国际化的资源文件有3个范围:
全局范围:在src目录下:
<constant name="struts.custom.i18n.resources" value="globalMessage"/>
包范围:对应包的根目录下,且基本名称为package
Action范围: 该资源被放置在对应Action类文件的同级目录下,且基本名必须与Action类名一致,比如Action类名为:A.java,那么对应国际化文件命名为A_语言代码_国家代码.properties


调用方式资源文件的顺序是Action范围—>包范围—>全局范围


调用国际化资源
<s:text name=“welcome”>
<s:textfield key=“welcome”/>
<s:textfiled label=“%{getText(‘welcome’)}”/>或
                  <s:textfiled key=“%{getText(‘welcome’)}”

在校验文件中:
<message key="name.invalid"></message>

<message>${getText("name.invalid")}</message>


struts2国际化动态设置语种
在Struts 2.0中,通过ActionContext.getContext().setLocale(Locale arg)可以设置用户的默认语言。

Struts 2.0提供了一个名i18n的拦截器(Interceptor),并在默认情况下将其注册到拦截器链(Interceptor chain)中。它的原理为在执行Action方法前,i18n拦截器查找请求中的一个名为"request_locale"的参数。如果其存在,拦截器就将其作为参数实例化Locale对象,并将其设为用户默认的区域(Locale),最后,将此Locale对象保存在session的名为“WW_TRANS_I18N_LOCALE”的属性中。


例:
<a href="changLan.action?request_locale=zh_CN">中文登录</a>  
<a href="changLan.action?request_locale=en_US">English Login</a>  

注意:直白的说,想改变游览器的语言只需在提交Action的后面加上request_locale参数并给上其参数(区域语言代码,如:zh_CN是简体中文),struts2的拦截器会自动找到参数所代表的配置文件(***_zh_CN.properties)

你可能感兴趣的:(struts)