navigator.language介紹

navigator.language返回一個字符串,該字符串表明用戶的首先語言,一般是瀏覽器使用的語言。navigator.language爲只讀屬性。javascript

用法:java

var lang = globalObj.navigator.language

globalObj.navigator.language字符串表明在RFC 4646中定義的語言版本.有效的語言代碼例子包括:"en", "en-US","fr","es-ES",等。chrome

 瀏覽器支持瀏覽器

屬性 chrome IE Firefox Safari Opera
language Yes 11.0 1.0 Yes Yes

註釋:IE10及IE10如下的版本,能夠經過userLanguage, browserLanguage 獲取:網站

var lang = navigator.browserLanguage;
//or
var lang = navigator.userLanguage;

可是IE10及IE10如下的版本返回的結果卻不是如出一轍的。spa

屬性 IE6 IE7 IE8 IE9 IE10
browserLanguage
zh-cn zh-cn zh-cn zh-cn zh-CN

因此能夠這樣寫:firefox

var lang = navigator.userLanguage||window.navigator.language;
lang = lang.toLowerCase();

若是更改了瀏覽器語言,navigator.language會不會改變?code

IE6-10:blog

1. 在IE瀏覽器中,選擇Internet選項--》常規--》語言,刪除中文簡體,添加英語 [en],肯定。ip

2. 在控制檯中輸入 navigator.userLanguage 顯示的結果不是咱們剛設置的en,仍是以前的"zh-CN"。

navigator.userLanguage 
//"zh-CN" 

3. 打開Wireshark訪問一個網站,抓包。

查看http header,咱們發現Accept-Language: en\r\r改變了

accept-language

因此在IE6-10瀏覽器中,修改瀏覽器的語言設置只會改變Accept-Language的值,而不會改變navigator.language.

Firefox:

1. 在Firefox瀏覽器中,選擇 選項 --》內容--》選擇。

2. 將英語[en]移到最上面。點擊肯定。

firefox lang

3. 在控制檯中輸入navigator.language.能夠看到輸出結果爲"en"

4. 打開Wireshark,在Firefox瀏覽器中訪問網站,抓包:

firefox accept-lang

    能夠看到,Accept-Language: en,zh-cn;q=0.8,zh;q=0.5,en-us;q=0.3

在Firefox瀏覽器中,修改瀏覽器語言,改變navigator.language值,同時也改變了http header的Accept-Language的值。

因此若是更改了瀏覽器語言,navigator.language未必會改變。

navigator.languages

    Chrome 32+及Firefox32+版本中,能夠經過navigator.languages獲取Accept-languages的值。

    因此也能夠這樣寫:

navigator.languages? navigator.languages[0] : (navigator.language || navigator.userLanguage)

 

參考文章:NavigatorLanguage.language

JavaScript for detecting browser language preference

相關文章
相關標籤/搜索