一、整体分为jsp国际化和js国际化
jsp国际化比较简单:
1、在jsp页面中主要运用了Struts2已经封装好的标签<s:text name="hello">
2、当然在你的项目中会有两份资源文件例如:message_en_US.properties 内含内容hello=Hello World
message_zh_CN.properties 内含内容hello=你好!
3、struts.xml文件中会有配置文件,指定资源文件message
<constant name="struts.custom.i18n.resources" value="message"/>
4、备注,在jsp文件头部需要加入<%@taglib prefix="s" uri="/struts-tags"%>
js国际化比较麻烦,(因为是在项目完成后将它国际化)主要通过以下两种方法。(示例代码参见项目中BouseTable.jsp和BouseTable.js.jsp以及BouseAction.java)
方法1、在jsp文件中设计变量a,然后实现国际化,然后再把a传给js文件(缺点:jsp文件中含有中英文信息,没有写入配置文件中去,不好维护)
(1)jsp中的设置
Locale locale = (Locale) session.getAttribute("WW_TRANS_I18N_LOCALE");
String a = "";
if(locale.toString().equals("en_US")){
a = "WithBourseCountry";
}else{
a="有交易所的国家";}
initTree('<%=a%>');
(2)js中接受
function initTree(a){ 。。。。。。。。。。。。。。。。。。 }
说明:a、WW_TRANS_I18N_LOCALE这个变量是在主页index选择语种时设置在session中一个变量,决定了语种。
具体可以参考主页语种设置博客文章:
b、WithBourse是资源文件message中的key
方法2、主要是看通过那个Action跳转到上面“方法1”中所述的jsp页面的,这样的话
(1)在该action添加代码,实现国际化
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
String v = I18nUtil.getStringValue("WithBourse");
value = v;
return SUCCESS;
备注: I18nUtil是一个工具类,附附件中
(2)在jsp添加
<%@taglib prefix="s" uri="/struts-tags"%>
initTree('<s:property value="value"/>');
(3)js中接受
function initTree(a){ 。。。。。。。。。。。。。。。。。。 }
备注:方法2较方法1可以把大量的中英文配置放入message资源文件中,容易维护。