我的代码:本地化的NodeJS(国际化)
var i18n = require("i18n");
i18n.configure({
locales: ['en', 'ru'],
defaultLocale: 'en',
directory: __dirname + '/locales',
cookiename: 'locale'
});
app.configure(function() {
app.use(i18n.init);
})
app.get('/:locale', function (req, res) {
res.cookie('locale', req.params.locale);
i18n.setLocale(req.params.locale);
res.redirect('/');
});
的问题有两个:
在模板,通过
__( “名称密钥”)不起作用输出
当传输不是直接通过值时,请勿更改文本。有所有语言文件
res.render('index',{name:res .__('name')});
但不切换语言
/* ----- */
生成的代码:
var i18n = require("i18n");
i18n.configure({
locales: ['en', 'ru'],
defaultLocale: 'ru',
directory: __dirname + '/locales'//,
cookiename: 'locale'
});
app.use(function (req, res, next) {
res.locals.__ = res.__ = function() {
return i18n.__.apply(req, arguments);
};
next();
});
app.get('/i18n/:locale', function (req, res) {
res.cookie('locale', req.params.locale);
i18n.setLocale(req.params.locale);
if (req.headers.referer) res.redirect(req.headers.referer);
else res.redirect("/");
});
这工作
解决了第一个错误,代码中出现错误 – hase
但是不要切换语言,切换如下:app.get('/:locale',function(req,res){ res.cookie 'locale',req.params.locale); i18n.setLocale(req.params.locale); res.redirect('/'); }); – hase
检查我的编辑!添加一些示例代码,让我知道如果你明白,清除 – renatoargh