navigator.language介紹


navigator.language返回一個字符串,該字符串代表用戶的首先語言,通常是瀏覽器使用的語言。navigator.language為只讀屬性。

用法:

var lang = globalObj.navigator.language

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

 瀏覽器支持

屬性 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以下的版本返回的結果卻不是一模一樣的。

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

所以可以這樣寫:

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

如果更改了瀏覽器語言,navigator.language會不會改變?

IE6-10:

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM