我注册了i18n并将pug设置为视图引擎甚至添加了帮助函数一切正常,但是当我调用pugs compileFile时,我找不到函数i18n'__'的错误。
static initI18n(app) {
i18n.configure({
defaultLocale: 'en',
directory: path.resolve('server/tools/locals'),
locales: ['en', 'gr'],
objectNotation: false,
updateFiles: false
});
app.use(i18n.init);
}
static initViewEngine(app) {
app.set('view engine', 'pug');
app.set('views', path.resolve('./'));
app.use(function(req, res, next) {
res.locals.__ = res.__ = function() {
return i18n.__.apply(req, arguments);
};
next();
});
}
var compiledHTML = pug.compileFile(template)({name: user.name});
在pug文件中我是这样称呼的
doctype html
html
body()
#{__('hello')}
答案 0 :(得分:1)
当__
注册时,应在res
或req
上设置模板本地i18n功能i18n.init
。这意味着initViewEngine
中的中间件无关紧要。
此外,使用模板显式调用pug.compileFile
会破坏具有 express 中间件的目的。
要以这种方式编译模板,您需要将__
的实现作为模板上下文传递。
const compiledHTML = pug.compileFile(template)({__: i18n.__});