網站多國語言的製作一直是個議題。如果是使用PHP或Rails來做多國…只需要用HTTP_ACCEPT_LANGUAGE偵測使用者語言就OK。不過有些時候會碰到必須使用Javascript方式來製作多國語言的情況,但瀏覽器對JS的解析結果很不一。

Javascript有navigator.browserLanguage、navigator.language、navigator.userLanguage這幾種語言偵測方法,這些方法只能抓到瀏覽器的使用語言,即使你是用中文版的作業系統,瀏覽器裝英文的偵測出來的結果還是en。

偵測使用者瀏覽器語言程式:

function browserLanguage() {
try {
return (navigator.browserLanguage || navigator.language || navigator.userLanguage);
}
catch(e) {
return undefined;
}
}

以下是在各瀏覽器下測試的結果:

Firefox3 (3.0.3)
navigator.language: zh-TW
navigator.browserLanguage: undefined
navigator.systemLanguage: undefined
navigator.userLanguage: undefined
Firefox2 (2.0.16)
navigator.language: zh-TW
navigator.browserLanguage: undefined
navigator.systemLanguage: undefined
navigator.userLanguage: undefined
Safari3 (3.1.2)
navigator.language: zh-tw
navigator.browserLanguage: undefined
navigator.systemLanguage: undefined
navigator.userLanguage: undefined
iPhone Safari (OS 2.1)
navigator.language: zh-tw
navigator.browserLanguage: undefined
navigator.systemLanguage: undefined
navigator.userLanguage: undefined
Opera9 (9.62)
navigator.language: zh-TW
navigator.browserLanguage: zh-TW
navigator.systemLanguage: undefined
navigator.userLanguage: zh-TW
IE6 (SP2 6.0.2900) / IE7 (7.0.5730)
navigator.language: undefined
navigator.browserLanguage: zh-tw
navigator.systemLanguage: zh-tw
navigator.userLanguage: zh-tw
Google Chrome (0.3.155.0)
navigator.language: zh-TW
navigator.browserLanguage: undefined
navigator.systemLanguage: undefined
navigator.userLanguage: undefined
Windows Mobile IE (7.7)
navigator.language: undefined
navigator.browserLanguage: undefined
navigator.systemLanguage: zh-TW
navigator.userLanguage: zh-TW
Windows Mobile Opera 8.65
navigator.language: zh-TW
navigator.browserLanguage: zh-TW
navigator.systemLanguage: undefined
navigator.userLanguage: zh-TW
Wii Browser (Opera 9.30)
navigator.language: zh-TW
navigator.browserLanguage: zh-TW
navigator.systemLanguage: undefined
navigator.userLanguage: zh-TW
K-Meleon (1.5.1)
navigator.language: en-US
navigator.browserLanguage: undefined
navigator.systemLanguage: undefined
navigator.userLanguage: undefined

結論:如果要用JS來做多國語言,就還要加上瀏覽器的判斷。

下次來找看看jQ有沒類似的外掛。