3

Spring MVC 4 中,如何根据浏览器语言(HTTP 标头“Accept-Language”)将用户重定向到本地化 url?

我希望如果用户尝试访问该 url ,如果其浏览器语言为“DE”(即“Accept-Language”标头设置为“de”)example.com/some/path,它将重定向到。de.example.com/some/path

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

最简单的方法是什么?

4

2 回答 2

1

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

您还想知道您的服务器在哪个域上运行。请参阅如何获取域 URL 和应用程序名称?

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

于 2014-12-20T21:11:12.153 回答
1

在你的控制器中这样的东西怎么样:

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

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

于 2014-12-20T20:45:35.140 回答