1

我在检测用户首选的浏览器语言时遇到了问题。

我发现导航器对象属性只检测系统相关语言。.userLanguage 检测用户电脑的本地语言,或者任务栏中使用的语言,并通过 ControlPanel>Regional&LanguageOptions 设置,然后 .systemLanguage 检测操作系统语言,然后 .browserLanguage 检测系统的默认浏览器语言。所以这些东西都不会帮助我。

我需要的是检测通过 Tools>InternetOptions 设置的用户首选浏览器语言

有没有办法使用Java做到这一点?

希望有人可以帮助我

4

2 回答 2

5

如果您可以访问 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
}
于 2016-01-12T00:55:17.327 回答
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

于 2016-08-22T08:28:01.140 回答