NodeJs Handlebars i18next调用助手内部的另一个助手
问题描述:
可以让一个向导让我知道是否有可能在另一个助手内部调用助手。我需要在日期格式帮助器中调用一个i18n帮助器。我似乎无法得到它的工作。想知道这个插件是否可以实现。NodeJs Handlebars i18next调用助手内部的另一个助手
这里是我的设置:
const express = require('express');
const i18next = require('i18next');
i18next.init(options);
app.use(i18nextMiddleware.handle(i18next));
app.post(path.join(__dirname,'/locales/add/{{ns}}/{{lng}}'), i18nextMiddleware.missingKeyHandler(i18next));
app.get(path.join(__dirname,'/locales/resources.json'), i18nextMiddleware.getResourcesHandler(i18next));
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('hbs', exphbs({
extname: 'hbs',
defaultLayout: 'main_layout',
layoutDir: path.join(__dirname, 'views/layouts/'),
partialsDir: path.join(__dirname,'views/partials/'),
helpers: {
i18n: function(key, options){
var result = this.t(key, options.hash);
return new Handlebars.SafeString(result);
},
formatExpire: function (namespace, date, format, lang) {
// strText = "expired On";
// strText = Handlebars.i18n.t('namespace:translationString'); // Cannot read property 't' of undefined
// strText = Handlebars.i18n('namespace:translationString'); // Handlebars.i18n is not a function
strText = Handlebars._default_helpers['i18n'].t('namespace:translationString'); // t is not a function
htmlDisplay = "<span class='bg-danger-800 text-highlight'>" + strText + "<span class='text-semibold'></span></span>";
return htmlDisplay;
}
...
....
}
})
)
app.set('view engine', 'hbs');
别的伟大工程,所有的助手我觉得没有问题。只有当我调用“formatExpire”,我得到的错误作为帮助函数中的注释列出。
任何帮助将不胜感激。
谢谢
答
只是Handlebars.helpers.i18n('namespace:translationString')
应该没问题。
不工作,我得到:类型错误:Handlebars.helpers.i18n不是一个函数 当我做了控制台日志(Handelbars.helpers)我得到: {blockHelperMissing:[功能], 每个:[功能] helperMissing:[功能], 如果:[功能], 除非:[功能], 日志:[功能], 查找:[功能], 用:[功能]} 它仅显示所内置的把手帮手,没有我的cutom助手列出。 – boulepick