2016-04-26 58 views
1

我有我的網站的法語和英語版本:
* example.com /是我的英文版本。
* example.com/fr /是我的法語版本。根據語言偏好更改網站版本

因此,他們有可能通過點擊一個標誌來更改網站版本,但默認情況下,如果他們到達example.com,它將以英語顯示。

我想給他們相應的語言偏好的版本,我發現用語言首選項:

var language = window.navigator.userLanguage || window.navigator.language; 

但後來我用什麼樣的代碼,這樣,當他們在網頁上的到達,它會給根據用戶語言偏好的版本?

如果網站提供法文版本,但用戶想要英文版,仍然有可能改變manualy。

回答

1

你必須將他們重定向:

if (window.navigator.language === 'fr') { 
    window.location.href = "http://example.com/fr/"; 
} 

請記住該window.navigator.language屬性爲implemented differently across browsers,你可能必須要找到你喜歡的語言在一個數組(如window.navigator.languages)。

更好的選擇是檢查服務器端HTTP請求的Accept-Language標頭,並在服務器端相應地重定向。

還有JavaScript-based國際化方法,但他們通常不涉及重定向該網站。

+0

但是,這裏的問題是,如果JavaScript把網站的法文版本,因爲window.navigator.language ==「fr」,但用戶想使用英文版,並可以說他手工把它英文 然後,當他將在主頁面或任何帶有該javascript代碼的頁面返回,它將被恢復爲法語。 – Jackymamouth

+0

在這種情況下,您可以添加一個額外的JavaScript參數,例如'wants_english = true',並在if語句中檢查。這將必須在服務器端完成,因此您不妨使用GET參數並在服務器上執行整個重定向。如果你絕對想做它的客戶端,當他選擇他的語言時,在用戶的瀏覽器中創建一個'localStorage'條目。請記住,這比服務器端解決方案更脆弱,因爲用戶可能會阻止JavaScript或LocalStorage。 – KWeiss