S2SH开发中客户选择版国际化问题

利用客户的选择来决定使用什么样的语言,而不是上篇说的跟随浏览器来变化。

Strust2的默认拦截器包括i18n拦截器,i18n拦截器在执行Action前,自行查找请求
中一个名为request_locale的参数,如果该参数存在,拦截器将其作为参数,转化成Locale对象,并将其设为用户默认的Locale若不执行Action,则根据浏览器的语言环境生成cale对象,用户选择的语言环境不起作用。下面的配置就是为了保证每一个页面都是执行Action后跳转的,从而可以保证用户选择的语言环境可以起作用。若每个页面能确保是Action之后跳转的,可省略该配置。

所以主要还是针对session来进行配置,因为浏览器的语言选择也是根据session的,所以在浏览器之前就对session进行操作。

HttpSessionsession =(HttpSession)ServletActionContext.getRequest().getSession();

if(u != null){

ac.getSession().put("user",u);

ac.getSession().put("skin",u.getSkin());//皮肤保存到session

Localelocale ;//本地语言

if(u.getKey().equals("1")){

locale=Locale.CHINA;

}else{

locale=Locale.US;

}

ActionContext.getContext().setLocale(locale);

session.setAttribute("WW_TRANS_I18N_LOCALE",locale);//session保存,两个session有区别

return"okLogin";


functionchange(key){

$.ajax({

type: 'post',

url: 'user_changeLocale',

data: {

'userId': <s:property value="#session.user.userId"/>,

'key': key

},

dataType: 'text',

success: function(data,status) {

$('#in<s:propertyvalue="#session.user.userId"/>').html(data);

}

});

window.parent.frames.location.reload();//重新设置全局Locale

};

language

<aid="key" href="javascript:;"onclick="change(1);">chinese</a>

<aid="key" href="javascript:;"onclick="change(0);">english</a>

publicString changeLocale() throwsException {//语言更换

HttpSessionsession =(HttpSession)ServletActionContext.getRequest().getSession();

Localelocale ;

System.out.println("key"+key);

if(key.equals("1")){

locale=Locale.CHINA;

}else{

locale=Locale.US;

}

ActionContext.getContext().setLocale(locale);

session.setAttribute("WW_TRANS_I18N_LOCALE",locale);

Useru = userService.modifyfindById(userId);

u.setKey(key);

userService.modifyUser(u);

HttpServletResponseresponse = ServletActionContext.getResponse();

response.setContentType("text/html;charset=utf-8");

PrintWriterout = response.getWriter();

out.println(getText("success"));

returnnull;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值