0

那里的向导可以告诉我是否可以在另一个助手中调用助手。我需要在日期格式助手中调用 i18n 助手。我似乎无法让它工作。想知道这个插件是否有可能。

这是我的设置:

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”时,我才会在帮助函数中将错误列为注释。

任何帮助将不胜感激。

谢谢

4

1 回答 1

0

应该Handlebars.helpers.i18n('namespace:translationString')没问题。

于 2017-10-19T18:22:15.603 回答