Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript i18n translation在支持把手的node express应用程序中部分工作_Javascript_Json_Node.js_Express_Internationalization - Fatal编程技术网

Javascript i18n translation在支持把手的node express应用程序中部分工作

Javascript i18n translation在支持把手的node express应用程序中部分工作,javascript,json,node.js,express,internationalization,Javascript,Json,Node.js,Express,Internationalization,我的问题是,当我访问?lang=en查询参数url时,从未使用过英语翻译。但是,匈牙利语文本更改工作正常,以默认的hu语言显示要在匈牙利语上测试的文本没有问题。出了什么问题 app.js: var express = require('express'), bodyParser = require('body-parser'), cookieParser = require('cookie-parser'), exphbs = r

我的问题是,当我访问
?lang=en
查询参数url时,从未使用过英语翻译。但是,匈牙利语文本更改工作正常,以默认的hu语言显示要在匈牙利语上测试的
文本没有问题。出了什么问题

app.js:

var express        = require('express'),
    bodyParser     = require('body-parser'),
    cookieParser   = require('cookie-parser'),
    exphbs         = require('express-handlebars'),
    i18n           = require('i18n');
var app = express();

app.engine('.hbs', exphbs({
  extname: '.hbs',
  defaultLayout: 'main',
  helpers: {
    __: function() { return i18n.__.apply(this, arguments); },
    __n: function() { return i18n.__n.apply(this, arguments); }
  }
}));
app.set('view engine', '.hbs');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());

app.use('/', require('./routes/portfolio'));

i18n.configure({
  locales: ['hu', 'en'],
  fallbacks: {'en': 'hu'},
  defaultLocale: 'hu',
  cookie: 'locale',
  queryParameter: 'lang',
  directory: __dirname + '/locales',
  directoryPermissions: '755',
  autoReload: true,
  updateFiles: true,
  api: {
    '__': '__',  //now req.__ becomes req.__
    '__n': '__n' //and req.__n can be called as req.__n
  }
});
app.use(i18n.init);
视图/portfolio.hbs:

<span id="text">{{{__ "text to test"}}}</span>
locales/en.json:

{
    "text to test": "text to test on english"
}
完整控制台登录启动:

  i18n:debug will use C:\www\node\lantosistvan\locales\hu.json +0ms
  i18n:debug read C:\www\node\lantosistvan\locales\hu.json for locale: hu +5ms
  i18n:debug will use C:\www\node\lantosistvan\locales\en.json +3ms
  i18n:debug read C:\www\node\lantosistvan\locales\en.json for locale: en +1ms
  lantosistvan-portfolio:server Listening on port 3000 +16ms
  i18n:warn WARN: No locale found - check the context of the call to __(). Using hu as current locale +5s
GET /about-me?lang=en 304 90.678 ms - -

谢谢你的帮助

更改路由器和i18n.configure的顺序看起来解决了问题,因此您必须在路由器调用之前放置i18n。

更改路由器和i18n.configure的顺序看起来解决了问题,因此您必须在路由器调用之前放置i18n

  i18n:debug will use C:\www\node\lantosistvan\locales\hu.json +0ms
  i18n:debug read C:\www\node\lantosistvan\locales\hu.json for locale: hu +5ms
  i18n:debug will use C:\www\node\lantosistvan\locales\en.json +3ms
  i18n:debug read C:\www\node\lantosistvan\locales\en.json for locale: en +1ms
  lantosistvan-portfolio:server Listening on port 3000 +16ms
  i18n:warn WARN: No locale found - check the context of the call to __(). Using hu as current locale +5s
GET /about-me?lang=en 304 90.678 ms - -