把手 - Access Navigator

时间:2016-05-26 04:13:16

标签: javascript node.js express handlebars.js ghost-blog

我正在修改Ghost博客的部分内容以使用不同的语言。为此,我正在写一个Handlebars帮手:

hbs.registerHelper("language", function () {
        var lang = (navigator.language) ? navigator.language : navigator.userLanguage;  
        return lang;
    });

但是,我收到错误消息为navigator is undefined。 Ghost正在使用express-hbs,因此我猜测它与自定义风格有关,因为同一帮助程序was declared here

我在这里错过了什么明显的事情?

2 个答案:

答案 0 :(得分:1)

function getLanguage(req){
    ....
}
app.get('/', function (req, res, next) {
    res.render('home', {
        showTitle: true,

        helpers: {
            language: function () { return getLanguage(req); }
        }
    });
});

答案 1 :(得分:0)

我在编码深夜后想到了这一点。

index.js中,在renderPost函数中,我可以(以非常原始的方式)查询客户端语言:

response.post.language = req.headers["accept-language"].substring(0,5).toLowerCase();

这将在post对象中创建一个新属性。借助custom conditional helper(置于helpers.js):

{{#ifCond language '==' 'en-us'}}
     {{content lang="1"}}
{{else}}
     {{content lang="2"}}
{{/ifCond}}

core\server\helpers\content.js我已经实现了一个自定义语言解析器,根据索引显示正确的内容。