我一直在使用i18n节点模块进行国际化。在根目录中,我按如下方式初始化模块:
i18n.configure({
locales: ['en', 'nl'],
register: global,
directory: path.join(__dirname, 'locales'),
defaultLocale: 'en',
objectNotation: true
});
app.use(i18n.init);
此模块已将翻译功能(__()
)注册为全局。但是,此功能不起作用,所以我决定将其传递下来,以便该方法在我的控制器和视图中可用:
app.use((req, res, next) => {
res.locals.user = req.session.user || null;
res.locals.formatDate = (data) => data ? format(data, process.env.DATE_FORMAT) : null;
res.locals.__ = res.__ = () => i18n.__.apply(req, arguments);
req.setLocale('en')
next();
});
它在控制器中工作正常。我使用req.__('string-to-translate')
并根据需要进行翻译。
然而,当我尝试在用pug / jade渲染的视图中使用完全相同的函数时,它会返回undefined
。
任何想法我做错了什么?