我们项目用Struts1做的MVC模块,国际化的方式是在
1 struts-config.xml文件里添加
<message-resources parameter="com.huawei.it.support.resources.application"></message-resources>
2 在com.huawei.it.support.resources路径文件夹下加入文件
application.properties
application_en.properties
application_zh.properties
3 在jsp页面需要国际化的字符用
'<bean:message key="xxx"/>' xxx是properties文件里的key
就完成了
-----------------------------
原理是struts会根据浏览器的语言改变session里的org.apache.struts.Globals.LOCALE_KEY属性。
该属性是一个Locale对象。在执行jsp的时候<bean:message>标签就会根据这个对象里的值按照18DN规则来编译出相应的语言。
----------------------------
这个项目可手动改变语言,发送一个请求,改变session里一个nls属性的值,这是项目自定义的语言属性。
然后再加入一个cookie,设置这个cookie为全华为域,设置路径为全部路径。然后重定向到index页面。
单点登录拦截器发现这个cookie之后会去改变session里的org.apache.struts.Globals.LOCALE_KEY属性。这样就完成了。
----------------------------
js里的国际化,也准备了两个js文件,根据项目自定义的语言属性session.getAttribute(nls),在jsp页面加载js的时候选择关联相应的js文件就ok了。
这个主要用于js里的各种alert提示。改变之后不需要重启动服务器,热部署,便于开发。