在 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
。
最简单的方法是什么?
答案 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。