express-locale总是返回默认值 - 为什么?

时间:2016-10-15 07:11:48

标签: node.js express internationalization

我已经安装了快速语言环境

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',来源:'默认' }

无论我如何更改浏览器的首选语言。我已经查看了此模块中的代码,并且看到了对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

很明显,我应该将瑞典语作为我的主要语言......所以这有什么问题?

作为一个单独但相关的问题:即使req.acceptedLanguages返回了一个值,它也没有语言环境。实际上,sv不足以推断出语言环境,因为瑞典语(sv-SE)和芬兰语(sv-FI)使用瑞典语。为什么这很重要?因为我试图显示价格而且需要使用用户的货币(瑞典=克朗,芬兰=欧元),但如果没有区域设置,我无法弄明白。这通常是怎么做的?

1 个答案:

答案 0 :(得分:0)

我联系了作者并找回了一些有用的内容,请参阅:https://github.com/smhg/express-locale/issues/4

  

req.acceptedLanguages问题是特定于Express 4并已解决   c17d901。它尚未发布到我们首先需要添加的npm   Express 3和Express 4特定测试。应该很快就会出现。

     

将其添加到package.json以测试最近的更改:

     

“express-locale”:“git://github.com/smhg/express-locale#c17d901”