使用:NodeJS(Express 4)+ i18n +下划线。
我想在NodeJS(Express 4)中绑定和翻译Underscore模板。
但我在模板中的翻译存在问题:Underscore不理解语法<%= __('翻译键')%>:
[ReferenceError: __ is not defined]
这是我的NodeJS代码:
var express = require('express'),
app = express(),
cons = require('consolidate'),
i18n = require('i18n');
_ = require('underscore'),
// setup i18n
app.use(i18n.init);
i18n.configure({
locales: ['en', 'fr'],
directory:'./app/locales',
defaultLocale: 'en'
});
// setup hbs
app.engine('html',cons.underscore);
app.set('views', './app/views');
app.set('view engine', 'html');
// translation test ok
console.log('Translation test: ' + i18n.__('hello'));
// rendering template generates error
app.render('test.html', {hello: 'Welcome !'}, function(err, html){
if(err){
console.log(err);
} else {
console.log(html);
}
});
这是我的Undescore模板' test.html':
<h1><%= hello %></h1>
<p><%= __('hello') %></p>
用于英语的JSON i18n文件&#39; en.json&#39;:
{
"hello": "hello my friend"
}
答案 0 :(得分:1)
我认为你错过了注册观众的公共帮手。尝试在NodeJS应用程序中定义:
var hbs = require('hbs');
hbs.registerHelper('__', function () {
return i18n.__.apply(this, arguments);
});
然后在你的模板中:
<p>{{{__ 'hello'}}}</p>