首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node.js i18n.__不是一个函数

node.js i18n.__不是一个函数
EN

Stack Overflow用户
提问于 2016-02-02 13:56:15
回答 1查看 7.2K关注 0票数 2

我正在我的测试node.js/express4 4服务器api中尝试使用i18n

我安装了i18n-2,并更新了我的server.js。

代码语言:javascript
复制
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

代码语言:javascript
复制
{
 "Hello": "Hello",
}

和./locales/fr.js

代码语言:javascript
复制
{
 "Hello": "Salut",
}

但是,当我启动服务器时,在console.log(i18n.__('Hello'));上会出现一个错误

我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 22:38:36

您的i18n只是一个构造函数,需要先实例化它。通过使用expressBind,您将在每个req中获得一个i18n实例。

代码语言:javascript
复制
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手动创建实例。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35155407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档