2013-03-19 192 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