Struts 2 getText在控制器和jsp上使用不同的语言

时间:2012-03-07 19:15:30

标签: java internationalization struts2

我有一个使用Struts 2(以及许多其他部分)的应用程序,那就是我用两种不同的语言获取页面。我在控制器中翻译的部分有一种语言,我在jsp上翻译的部分有另一种语言。

所以在控制器中我使用

getText("something");

我用西班牙语得到了结果,但是在jsp中得到了使用

的部分

我进入加泰罗尼亚语。我希望能用加泰罗尼亚语获得一切。

所以我有一个拦截器:

public String intercept(ActionInvocation invocation) throws Exception {

    final ActionContext context = invocation.getInvocationContext();
    HttpServletRequest request = (HttpServletRequest) context.get(HTTP_REQUEST);
    Map<String, Object> session = context.getSession();
    if(session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE) == null){
        Locale locale = chooseLocale(request.getLocale());
        session.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale);
        context.setLocale(locale);
    }
    return invocation.invoke();
}

这是基于I18nIntereptor,我的函数chooseLocale返回Locale“es_ES”或“ca_ES”。 如果我做一些调试,我可以看到我有这个值:

session.get(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE) //ca_ES
request.getAttribute(I18nInterceptor.DEFAULT_PARAMETER) //ca_Es
request.getLocale() //ca

所以我猜问题是请求中的语言环境是ca(而不是ca_ES),这在我的bundle上没有定义,然后又回到了默认值(我猜)。我也看到Chrome有它的标题

Accept-Language:ca,es;q=0.8

那么有什么方法可以将请求区域设置更改为ca_ES或es_ES吗?

0 个答案:

没有答案