我在检测用户首选的浏览器语言方面遇到了问题。
我发现导航器对象属性只检测系统相关语言。 .userLanguage检测用户个人电脑的本地语言,或任务栏中使用的语言,并通过ControlPanel> Regional& LanguageOptions设置,然后.systemLanguage检测操作系统语言,然后.browserLanguage检测到的默认浏览器语言。系统。所以这些东西都没有帮助我。
我需要的是通过工具> InternetOptions
检测用户首选的浏览器语言使用Java有没有办法做到这一点?
希望有人可以帮助我
答案 0 :(得分:3)
如果您可以访问HttpServletRequest对象,那很容易。 让我们说,你是一个servlet:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Enumeration locales = request.getLocales();
/**
*You can get the first one matches your supported local like below
*/
while (locales.hasMoreElements()) {
Locale locale = (Locale) locales.nextElement();
if (supportedLanguages.contains(locale)) {
requestLocale = locale;
break;
}
}
super.doPost(request, response);
}
如果您正在谈论在客户端检测浏览器语言。 我建议您使用JS来获取浏览器语言,并且可以在Java代码中调用js。顺便说一下,我在我的Chrome上测试过它:
var type=navigator.appName
if (type=="Netscape"){
var lang = navigator.language
}
else{
var lang = navigator.userLanguage
}
答案 1 :(得分:0)
您可以使用以下行。
Locale browserLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
txtVal.setValue(browserLocale.getDisplayLanguage());
了解更多详情,请查看此内容 http://middleware-home.blogspot.com/2016/08/fill-multi-language-select-one-choice_98.html