如何获得node.js(express.js)中的浏览器语言?
用户请求某个页面,我想知道(在服务器端)他/她的浏览器中的语言是什么。 所以我可以使用正确的消息来呈现模板。
在客户端很容易:
var language = window.navigator.userLanguage || window.navigator.language
您可以使用req.headers [“accept-language”]来获取用户在浏览器中设置的语言/语言环境。
为了更容易的支持,您可能需要查看一个语言环境模块 。
request.acceptsLanguages
将包含一个parsing版本的request.headers['accept-language']
。
请参阅: http : //expressjs.com/en/api.html#req.acceptsLanguages
使用Express 4.x,您可以使用req.acceptsLanguages(lang [,…])中的构build来检查某些语言是否被接受。
var express = require('express'); app.get('/translation', function(request, response) { var lang = request.acceptsLanguages('fr', 'es', 'en'); if (lang) { console.log('The first accepted of [fr, es, en] is: ' + lang); ... } else { console.log('None of [fr, es, en] is accepted'); ... } });
要获得所有可用的语言列表,使用Express 4.x,您可以使用模块接受 。
var express = require('express'), accepts = require('accepts'); app.get('/translation', function(request, response) { console.log(accepts(request).languages()); ... });
您需要parsingreq.headers["accept-language"]
的string。 哪个会给你一个客户端首选语言的优先列表。 如果你的语言被支持req.acceptsLanguages(lang [, ...])
你也可以检查req.acceptsLanguages(lang [, ...])
。
我强烈build议使用expression请求语言来做任何语言匹配工作,因为要在第一时间把它做好是很困难的。
大多数情况下,匹配一种语言是不够的。 用户可能想要更改首选语言。 express-request-language
帮助您将首选语言存储在Cookie中,同时也为您的服务器提供了URLpath来更改首选语言。
以上所有function都可以通过几行代码完成:
app.use(requestLanguage({ languages: ['en-US', 'zh-CN'], cookie: { name: 'language', options: { maxAge: 24*3600*1000 }, url: '/languages/{language}' } }));
如果不匹配,则中间件也将匹配默认语言(上面的en-US
)。