国际化可以实现同一套页面可以在多种于语言下切换,但是只能改变提示性文本内容,不能改变数据内容,同时需要准备多套针对各种语言的词库,在不同语言的属性文件中拥有相同的key值,但是对应不同的value值,需要与
- 首先进行常量配置,并配多套不同的语言库,命名规则为
message_zh_hk.properties
其中_zh_hk
表示地区编号,默认使用为message.properties
的库
<constant name="struts.custom.i18n.resources" value="message"></constant>
以登录为例,语言库代码为:
#英语
name=User Name
password=Password
btn=Login
#汉语,properties文件自动转汉语
name=用户名
password=密码
btn=登录
- 页面中使用Struts标签指向key,根据当前默认语言,动态对应到相应语言的value,并设置js事件,动态获取下拉框的值,将已选的值传到后台,并通过跳转页面来实现页面语言的转换
<script type="text/javascript">
$(function(){
var before = $("#before").val();
alert(before)
if(before!=""){
$("#change").val(before);
}
$("#change").change(function () {
var l = $(this).val();
window.location.href="language.action?request_locale="+l+"&val="+l;
})
})
</script>
<form action="loginUser.action" method="post">
<s:text name="name"></s:text>:<input type="text" name="name" ><br>
<s:text name="password"></s:text>:<input type="password" name = "password"><br>
<input type="submit" value="<s:text name='btn'></s:text>:">
<%-- 隐藏域,用来获取后台传的上一次选择的语言值,并通过js赋值给下拉框默认选中 --%>
<input type="hidden" id="before" value=<s:property value="val"/>>
</form>