在java中检测浏览器语言
我在检测用户首选的浏览器语言时遇到问题 我发现navigator对象属性只检测与系统相关的语言。.userLanguage检测用户pc的本地语言或任务栏中使用的语言,并通过控制面板>区域和语言选项进行设置,然后.systemLanguage检测操作系统语言,然后.browserLanguage检测系统的默认浏览器语言。所以这些东西都帮不了我 我需要的是检测通过工具>InternetOptions设置的用户首选浏览器语言 使用Java有什么方法可以做到这一点吗在java中检测浏览器语言,java,browser,Java,Browser,我在检测用户首选的浏览器语言时遇到问题 我发现navigator对象属性只检测与系统相关的语言。.userLanguage检测用户pc的本地语言或任务栏中使用的语言,并通过控制面板>区域和语言选项进行设置,然后.systemLanguage检测操作系统语言,然后.browserLanguage检测系统的默认浏览器语言。所以这些东西都帮不了我 我需要的是检测通过工具>InternetOptions设置的用户首选浏览器语言 使用Java有什么方法可以做到这一点吗 希望有人能帮我如果你能访问HttpS
希望有人能帮我如果你能访问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
}
如果您可以访问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
}
您可以使用下面的行
Locale browserLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
txtVal.setValue(browserLocale.getDisplayLanguage());
有关更多详细信息,请查看此
您可以使用以下行
Locale browserLocale = FacesContext.getCurrentInstance().getViewRoot().getLocale();
txtVal.setValue(browserLocale.getDisplayLanguage());
有关更多详细信息,请查看此
顺便说一句,“工具>Internet选项”可能重复您所说的是浏览器还是操作系统?FF确实没有
InternetOptions
菜单项。字符串Locale=System.getProperty(“user.language”)+“-”+System.getProperty(“user.region”);System.out.println(区域设置);这是我使用的代码。它给了我语言,但不是语言region@Kavya您是否尝试过stringuserlocale=req.getHeader(“接受语言”)代码>可能重复的BTW-“工具>InternetOptions”你说的是浏览器还是操作系统?FF确实没有InternetOptions
菜单项。字符串Locale=System.getProperty(“user.language”)+“-”+System.getProperty(“user.region”);System.out.println(区域设置);这是我使用的代码。它给了我语言,但不是语言region@Kavya您是否尝试过stringuserlocale=req.getHeader(“接受语言”)代码>VBScript不是Java。我知道VBScript不是Java。我只是想把我的想法说清楚。对于服务器端,很容易通过请求获取语言。getLocales()。对于客户端,对于不同的浏览器,有不同的方式获取语言。我以vbscript为例来获取IE的AcceptLanguage键的注册表值。我展示了另一个JS来获取客户端的语言。您可以通过Selenium驱动程序轻松调用js。VBScript不是Java。我知道VBScript不是Java。我只是想把我的想法说清楚。对于服务器端,很容易通过请求获取语言。getLocales()。对于客户端,对于不同的浏览器,有不同的方式获取语言。我以vbscript为例来获取IE的AcceptLanguage键的注册表值。我展示了另一个JS来获取客户端的语言。您可以通过Selenium驱动程序轻松调用js。