WW_TRANS_I18N_LOCALE=en_US时为什么还是显示中文

来源:百度知道 编辑:UC知道 时间:2024/07/07 01:56:48

在struts2配置文件struts.xml中添加好国际化拦截器,struts。properties中指定好资源文件后,项目的国际化就弄好了。现在把浏览器的语言改成其他语言能顺利国际化访问。

这一步做好后,就要开始做自定义国际化切换的功能。这个功能网上搜到的内容都是错误,所以特此在此记录下,以方便后来人。
struts2国际化的步骤:
1、判断struts.locale属性(在struts.properties)是否有值,如果有值,将这个值转换为Locale对象保存到ActionContext中。
2、如果没有设置struts.locale,从浏览器发送的请求报头里获得语言信息,创建Locale对象,保存到ActionContext中。
3、I18nInterceptor拦截器获取名为request_locale请求参数的值,如果这个值存在则创建以这个值的Locale对象,然后将这个对象作为session的属性(WW_TRANS_I18N_LOCALE)保存,并保存到ActionContext中。

在修改session的WW_TRANS_I18N_LOCALE值和request_locale等无效之后,发现程序始终是只会读取浏览器发送过来的区域信息。估计这是struts2国际化得BUG了。

知道了struts2的原理后,就好解决,现在要做的就是用用户自定义切换的国际化区域信息来替代浏览器请求报头里的语言信息。

http://blog.csdn.net/zhangweikai966/article/details/7581527