2012-09-19 69 views
22

我想檢測用戶的語言環境(而不是他們的位置)。問題是這些方法都不可靠。2012年檢測瀏覽器用戶區域設置的最佳方式是什麼?

Accept-Language頭

優點

  1. 你目的是讓瀏覽器是否已被改變默認爲別的東西可以揭示真實的語言環境值的列表。
  2. 默認情況下在IE中似乎準確?
  3. 默認情況下在IE中準確表示默認情況下在Windows的FF中準確? (即,您從mozilla.org下載正確的版本)
  4. 與Windows上的Opera#3相同?

缺點

  1. 服務器端的開銷,並與高速緩存(或額外XHR)的干擾。
  2. 除非您安裝本地字典並將其拖到頂端,否則在Chrome的所有英文系統中默認爲「en-us」。
  3. 不是由Safari發送的?
  4. 默認情況下,Safari和Chrome中的錯誤表示http://mozilla.orghttp://opera.com會將用戶指向錯誤的下載,並且還會安裝自己的「en-us」版本。

結論

  • 完全不可靠的,因爲OSX每個瀏覽器將是錯誤的默認。但是在IE和FF中應該是準確的。

window.navigator.language /使用者語言

優點

  1. 這個最好的部分是,它是很好的輕量級客戶端解決方案。
  2. 默認情況下在IE中似乎準確?
  3. 默認情況下,在Windows上似乎準確的FF?

缺點

  1. 始終 「EN-US」 默認情況下,在Safari上的所有系統。
  2. 除非您安裝本地字典並將其拖到頂端,否則在Chrome的所有英文系統中默認爲「en-us」。
  3. 在Opera中總是隻有「en」。

結論

  • 更靠不住比接受語言。

IP地理位置

優點

  1. 作品的獨立瀏覽器和操作系統的語言設置。

缺點

  1. 作品的獨立瀏覽器和操作系統的語言設置。
  2. 所有常見的關於性能,價格,保持最新的等

結論

  • 是否工作實際上取決於爲什麼你想檢測用戶的語言環境。這種方法給你一個用戶的地方,在國際上與地區不同。

HTML5地理位置

優點

  1. 一般準確IP地理定位沒有服務器開銷。

缺點

  1. 要求用戶允許您訪問他們的位置。
  2. 瀏覽器支持(實際支持看起來不錯)。

結論

  • 不必問許可通常是一個大忌。與IP地理位置相同的結論。

摘要

現在似乎是檢測用戶的語言環境比以往任何時候,同時檢測它們的物理位置也變得更加容易困難。大罪犯是Safari,它至少應該反映出OSX默認的操作系統設置,但Chrome並沒有設置任何示例。即使人們將他們的本地字典安裝到Chrome上,我真的懷疑他們也會將它拖到列表的頂部。

我不能責怪Mozilla和Opera被其他瀏覽器誤拖到下載頁面。但是,如果他們將他們的下載頁面切換爲使用地理位置,而不是大概查看Accept-Language,它將緩解該問題。

但是,真的,現在有哪些選項可以檢測用戶的語言環境,現在IE不再佔優勢了?還有什麼?

+0

2013年10月,似乎Accept-Language頭工作在移動Safari瀏覽器。 – nthonygreen

回答

1

這取決於你的意思是「用戶的語言環境」。問題中列出的可能性反映了「用戶區域設置」的不同含義。他們沒有反映在現代本土化的充足的含義,即由用戶設置首選的文化習俗(包括人類語言的優先順序列表)的。找到的方法是向用戶詢問它們。當然,您應該只會詢問在上下文中真正重要的約定,並且您可能會考慮將首選項(一旦由用戶表達)存儲在Cookie中,HTML5存儲中,用戶數據庫中或其他位置。

瀏覽器通常允許用戶指定優選語言的列表,在標頭Accept-Language要發送。然而,這涉及到語言環境概念的一個方面而已,它是未知的大多數用戶,並且已知有不正確的默認值非常頻繁。

相關問題