我的代碼:本地化的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