2013-03-19 75 views
0

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

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

我需要的是检测到正在通过工具设置用户的首选浏览器语言> InternetOptions

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

希望有人在那里可以帮助我

+0

的可能重复[入住,Java的浏览器语言(http://stackoverflow.com/questions/15471020/check-the-browser-language- in-java) – 2013-03-19 06:21:31

+0

顺便说一句 - *“工具> InternetOptions”*您是在谈论一个浏览器或操作系统? FF确定没有'InternetOptions'菜单项。 – 2013-03-19 06:23:02

+0

String Locale = System.getProperty(“user.language”)+“ - ”+ System.getProperty(“user.region”); System.out.println(Locale); 这是我使用的代码。它给我的语言,但不是区域 – gurlInTheDark 2013-03-19 06:34:05

回答

1

如果您可以访问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。顺便说一句,我测试了我的铬:

​​
+0

VBScript不是Java。 – duskwuff 2016-01-12 01:07:11

+0

我知道VBScript不是Java。 我只是想让我的思想足够清楚。 对于服务器端来说,很容易通过request.getLocales()获取语言。 对于客户端来说,对于不同的浏览器,有不同的获取语言的方法。 我提到过vbscript作为例子来获取IE的AcceptLanguage键的注册表值。 而且我展示了另一个JS在客户端获取语言。 您可以通过Selenium驱动程序轻松地调用js。 – 2016-01-12 12:23:08