2011-08-02 178 views
3

當「區域設置」設置爲例如「日本?這是否意味着瀏覽器已準備好識別日文字符?或者,它與OS設置更相關嗎?區域設置:瀏覽器或操作系統設置?

與i18n(國際化和本地化)相關,我們如何檢測訪問我們網站的用戶是否擁有日語語言環境使用JavaScript?下面的簡單檢查就足夠了嗎?

var userLocale = navigator.language || navigator.userLanguage; 
if (userLocale.toLowerCase() == 'ja-jp') { ... } 

能否日語語言瀏覽器返回別的東西,而不是ja-jp

預先感謝。

+0

順便說一句。如果Siku-Siku.com是您域名的名稱,如果您想在波蘭做生意,我會建議您選擇一個不同的域名。這在波蘭聽起來太有趣了。 –

+0

謝謝,帕維爾!對另一種語言來說,好的意思可能會很有趣;很高興這不是什麼卑鄙或不禮貌的事情。 :) – moey

回答

6

首先,我們需要定義什麼區域設置。在上下文中,您使用的是ISO639 Language Identifier,可選的是ISO3166 Country Identifier。這用於確定最終用戶的偏好(如本地化內容的語言或日期和時間格式以及數字格式)。

現在,區域設置可以設置在多個地方。操作系統通常具有多種設置,例如鍵盤佈局,格式化首選項,語言首選項,代碼頁(非Unicode程序)等。
除此之外,Web瀏覽器通常允許您選擇自己的首選項(Safari是一個例外這裏)。這些首選項通過HTTP Accept-Language頭與每個請求一起發送到Web服務器。這是你應該在服務器端讀取的東西(不幸意味着PHP,C#,Java等服務器端代碼),也可能傳遞給客戶端腳本。
我必須在此指出,像navigator.language是不是要走的原因有兩個方式:

  1. 這不是跨瀏覽器兼容,這是其他網絡瀏覽器將需要不同的代碼。那就是如果他們允許首先閱讀這些信息。

  2. 此設置通常是指Web瀏覽器的語言(語言Web瀏覽器的用戶界面被翻譯成)並且與實際用戶的偏好無關。

所以要回答你的問題:不,這個檢查是不夠的。

+0

HTTP Accept-Language跨瀏覽器是否兼容? – moey

+0

Accept-Language是超文本傳輸​​協議(HTTP)標頭之一,因此它必須是跨瀏覽器兼容的。 –

0

這主要是OS /瀏覽器設置,控制例如操作系統的語言,日期/時間格式,小數點/逗號等 - 換句話說,在世界不同地區有所不同的設置。這與字體/字符支持沒有直接關係。

據我所知,ja-jp是唯一標準化的日語語言環境/語言組合;但作爲@Siku-siku.com在評論中提出的建議(基於使用日文版IE/WinXP的真實測試),還請檢查ja,因爲這是IE語言設置中的一個可用選項。「

+0

因此,要檢測語言環境,建議檢查瀏覽器中設置的語言首選項(例如,「工具」>「Internet選項」>「常規」>「語言」)或OS設置(例如,「開始」>「控制面板」語言選項>區域選項')? – moey

+0

您無法通過瀏覽器內JavaScript訪問這些內容,因此您最好的選擇是您發佈的代碼。 – Piskvor

+0

上面的代碼片段實際上會使用後一種方法(控制面板)來拉取值集合,這裏也討論了這個問題:http://stackoverflow.com/questions/1043339/javascript-for-detecting-browser-language-preference – moey

相關問題