我正在我的测试node.js/express4 4服务器api中尝试使用i18n
我安装了i18n-2,并更新了我的server.js。
var express = require('express');
var app = express();
var i18n = require('i18n-2');
i18n.expressBind(app, {
// setup some locales - other locales default to en silently
locales: ['en', 'fr'],
// set the default locale
defaultLocale: 'fr',
// set the cookie name
cookieName: 'locale'
});
// set up the middleware
app.use(function(req, res, next) {
req.i18n.setLocaleFromQuery();
req.i18n.setLocaleFromCookie();
next();
});
console.log(i18n.__('Hello'));我添加了2个文件./locales/en.js
{
"Hello": "Hello",
}和./locales/fr.js
{
"Hello": "Salut",
}但是,当我启动服务器时,在console.log(i18n.__('Hello'));上会出现一个错误
我做错什么了?
发布于 2016-02-02 22:38:36
您的i18n只是一个构造函数,需要先实例化它。通过使用expressBind,您将在每个req中获得一个i18n实例。
var express = require('express');
var app = express();
var i18n = require('i18n-2');
i18n.expressBind(app, {
// setup some locales - other locales default to en silently
locales: ['en', 'fr'],
// set the default locale
defaultLocale: 'fr',
// set the cookie name
cookieName: 'locale'
});
// set up the middleware
app.use(function(req, res, next) {
req.i18n.setLocaleFromQuery();
req.i18n.setLocaleFromCookie();
console.log(req.i18n.__("Hello"));
next();
});
app.listen(3000);如果要在请求之外使用i18n,则需要使用new手动创建实例。
https://stackoverflow.com/questions/35155407
复制相似问题