Spring MVC:根据浏览器语言重定向用户

时间:2014-12-20 13:01:24

标签: java spring spring-mvc internationalization http-accept-language

Spring MVC 4中,我如何根据浏览器语言(HTTP标头&#34)将用户重定向到本地化网址;接受语言"?)

我希望如果用户尝试访问网址example.com/some/path,如果其浏览器语言是" DE"它会重定向到de.example.com/some/path。 (即" Accept-Language"标题设置为" de")。

同样,如果用户正在访问de.example.com/some/path且其语言为EN,则应将其重定向到example.com/some/path

最简单的方法是什么?

2 个答案:

答案 0 :(得分:1)

你的控制器里有这样的东西:

@RequestMapping("/path")
public String someMapping(Locale locale) {
    if ("de".equals(locale.getLanguage())) {
        return "redirect:http://de.example.com/some/path";
    }
}

请注意,语言代码以小写字母书写。

答案 1 :(得分:1)

创建一个HandlerInterceptor(扩展HandlerInterceptorAdapter)并从Request获取Accept-Language标头。您需要在Web应用程序上下文配置中注册Interceptor。

您还想知道您的服务器正在运行的域。见How to get domain URL and application name?

您应该允许用户更改其区域设置(即使浏览器设置为en_US,他们也可能希望您的网站使用德语)。所以你需要在这种情况下设置一个cookie。另见LocaleChangeInterceptor