js使用struts2国际化处理方式


最近 js中需要用国际化的方式,但是在单独的js中使用struts国际化标签有问题,于是找到一种认为还不错的处理方式:就是定义多个国际化js文件。
[color=red]注:
多个js文件中里面只需要定义js中需要的国际化的字符。其余在页面中需要国际化的,还是照样在properties文件中,使用struts2的国际化标签获取就可以[/color]





1.在拦截器里获取当前的语言,并保存至session中,
//语言
String request_locale = request.getParameter("request_locale");
logger.debug("---------request_locale:"+request_locale);
Locale locale = (Locale) request.getSession().getAttribute("i18_local");
if(null !=request_locale)
{
if(request_locale.equalsIgnoreCase("en_US"))
{
locale = Locale.US;
}
else if(request_locale.equalsIgnoreCase("zh_TW"))
{
locale = Locale.TAIWAN;
}
else
{
locale = Locale.CHINA;
}
}
if(locale==null)
{
locale = Locale.CHINA;
}
request.getSession().setAttribute("i18_local", locale.toString());
request.getSession().setAttribute("timeStampForJS", System.currentTimeMillis());
ai.getInvocationContext().setLocale(locale);



2.页面中根据获取当前的语言获取所引用的js文件,防止缓存加上时间戳
<s:if test='#session.i18_local == "en_US"'>
<script src="/lang/lang_en_US.js?<s:property value='#session.timeStampForJS'/>" type="text/javascript"></script>
</s:if>
<s:elseif test='#session.i18_local == "zh_TW"'>
<script src="/lang/lang_zh_TW.js?<s:property value='#session.timeStampForJS'/>" type="text/javascript"></script>
</s:elseif>
<s:else>
<script src="/lang/lang_zh_CN.js?<s:property value='#session.timeStampForJS'/>" type="text/javascript"></script>
</s:else>



3.建立3个国际化的js文件
lang_en_US.js:
var js_edittag = "Edit tag";


lang_zh_CN.js:
var js_edittag = "编辑标签";


lang_zh_TW.js:
var js_edittag = "編輯標籤";




在js中直接使用js_edittag 这个全局变量就可以了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值