spring i18n LocaleResolver getLocale

时间:2013-06-26 08:25:38

标签: javascript spring-mvc internationalization

处理弹簧i18n。我在spring-mvc.xml

中定义了两个bean
<bean name="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="lang" />
</bean>

<bean name="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
    <property name="defaultLocale" value="en" />
</bean>

和jsp中的两个锚点来切换语言

<span>
    <a href="?lang=en">english</a>
    | 
    <ahref="?lang=zh">chinese</a>
</span>

我试图在我的控制器上获取参数lang/locale并在javascripts 之前获得结果(因为我想要i18n java脚本),但是不起作用。

request.getLocale().getDisplayName();
request.getParameter("lang");

如何在我的控制器上获取Locale?或者对i18n java脚本有什么好主意?

提前致谢!

3 个答案:

答案 0 :(得分:1)

如果您想要在Java中更改为另一个Locale,您可以使用:

String anotherLocale =“es”; RequestContextUtils.getLocaleResolver(request).setLocale(request,response,anotherLocale);

答案 1 :(得分:0)

@Controller
public class MyController{
    @RequestMapping(value = "/test")
    public test(HttpServletRequest request, HttpServletResponse response){
        Locale locale = RequestContextUtils.getLocale(request);
        System.out.println("Locale >>> " + locale);
    }
}

结果:

Locale >>> en

答案 2 :(得分:0)

查看Spring Web MVC参数参考:http://docs.spring.io/spring/docs/4.0.0.RELEASE/spring-framework-reference/htmlsingle/#mvc-ann-arguments

  

支持的方法参数类型
  ...
  java.util.Locale表示当前请求区域设置,由最可用的区域设置解析程序确定,实际上是Servlet环境中配置的LocaleResolver

这意味着您只需在Controller方法中使用java.util.Locale参数,Spring MVC就会将当前解析的语言环境分配给此参数:

@RequestMapping(value = "/{viewName}", method = GET)
public String handle(@PathVariable String viewName, Locale locale) {
    return "info/" + locale.getLanguage() + '/' + viewName;
}