2016-10-15 74 views
0

我已經安裝了快車語言環境express-locale總是返回默認值 - 爲什麼?

npm install --save express-locale 

,並將其配置是這樣的:

app = express(); 
app.use(locale({ 
    priority: ['accept-language', 'cookie', 'domain', 'default'] 
})); 

但是當一個頁面被稱爲:

app.get('/', (req, res) => { 
    console.log(req.locale); 
}); 

我總是得到:

{code:'en_GB',來源: 'default'}

不管我如何更改瀏覽器的首選語言。我查看了這個模塊中的代碼,並且看到req.acceptedLanguages(當試圖解析'accept-language'時)的引用,在我的情況下它總是返回undefined(這解釋了爲什麼默認情況下),但是我不明白的是,如果我看

console.log(req.header('Accept-Language')); 

我得到:

SV,EN-GB; q = 0.8,連接; q = 0.6,ES; q = 0.4,FR; q = 0.2,ast; q = 0.2,en-US; q = 0.2

從中很明顯我應該把瑞典語作爲我的主要語言...所以wron克與這?

作爲一個單獨但相關的問題:即使req.acceptedLanguages返回一個值,它將沒有語言環境。實際上,sv不足以推導出瑞典語在瑞典(sv-SE)和芬蘭(sv-FI)中使用的語言環境。爲什麼這很重要?因爲我試圖顯示一個價格,它需要用戶的貨幣(瑞典=克朗,芬蘭=歐元),但沒有一個地區我不明白。這通常如何完成?

回答

0

我伸出作者和回來一些有用的東西,請參閱:https://github.com/smhg/express-locale/issues/4

的req.acceptedLanguages問題是Express 4的特異性和 c17d901解決。它尚未發佈到npm,因爲我們首先需要添加 Express 3和Express 4特定測試。應該很快出現。

添加到您的package.json測試最近的變化:

「表達語言環境」: 「混帳://github.com/smhg/express-locale#c17d901」