0

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

<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 的结果(因为我想要 i18n java 脚本),但不起作用。

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

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

提前致谢!

4

3 回答 3

1

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

支持的方法参数类型
...
java.util.Locale对于当前请求语言环境,由可用的最具体的语言环境解析器确定,实际上是LocaleResolver在 Servlet 环境中配置的。

这意味着您可以java.util.Locale在 Controller 方法中简单地使用参数,并且 Spring MVC 将为该参数分配当前解析的语言环境:

@RequestMapping(value = "/{viewName}", method = GET)
public String handle(@PathVariable String viewName, Locale locale) {
    return "info/" + locale.getLanguage() + '/' + viewName;
}
于 2014-05-17T09:39:07.390 回答
1

如果您想更改为另一个语言环境,在 Java 中,您可以使用:

字符串 anotherLocale="es"; RequestContextUtils.getLocaleResolver(request).setLocale(request,response, anotherLocale);

于 2013-07-05T10:05:32.327 回答
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
于 2013-06-27T01:58:45.190 回答