【发布时间】:2016-08-09 10:03:16
【问题描述】:
我正在使用 Expressjs 和 i18n 为我的节点 js 应用程序来管理多语言。
这是我的 i18n 配置:
i18n.js
var i18n = require('i18n');
i18n.configure({
locales:['en', 'fr'],
directory: __dirname + '/../locales',
defaultLocale: 'en',
cookie: 'lang',
});
module.exports = function(req, res, next) {
i18n.init(req, res);
res.locals.__= res.__;
var current_locale = i18n.getLocale();
return next();
};
server.js
var i18n = require('./configs/i18n');
...
app.use(i18n);
实际上,如果我想更改区域设置,我必须为每条路线都这样做:
app.get('/index', function(req, res){
res.setLocale('fr')
res.render('pages/index');
});
可以使用setLocale() 一次,它会永久更改语言环境?
什么是最佳实践?我应该每次都在我的路线中指定语言吗?例如:
app.get('/:locale/index', function(req, res){
res.setLocale(req.params.locale)
res.render('pages/index');
});
app.get('/:locale/anotherroute', function(req, res){
res.setLocale(req.params.locale)
res.render('pages/anotherroute');
});
或者我必须将每个用户的语言环境存储在我的数据库中?
【问题讨论】:
标签: node.js internationalization