node.js i18n .__不是一个函数
我正在尝试在我的testingnode.js / express4服务器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'));
我究竟做错了什么 ?
你的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
,你需要手动创build一个new
的实例。