【发布时间】:2016-05-26 04:13:16
【问题描述】:
我正在修改 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。
我在这里遗漏了什么明显的东西?
【问题讨论】:
-
我认为您的代码在 server.navigator 上运行在浏览器中是全局的。
-
@gujefers 那么调整上面的代码以引用正确的实例的正确方法是什么?
-
在浏览器中渲染,或者从会话对象中获取语言(可能是请求)
-
@gujefers 澄清一下,这样做的目的是将它传递到一个视图中,我可以在该语言在浏览器中呈现内容之前获取该语言。所以最终我想把它放在助手中。有什么想法吗?
-
小心使用这种方法——我绝对不会推荐它作为处理多种语言的通用方法。您删除了在您的博客前面有一个缓存层的能力(缓存将存储页面的第一个访问者请求的任何语言),除非您重定向到特定语言的页面,否则您也会向谷歌处罚。谷歌有一些关于如何正确处理多语言网站的细节 - support.google.com/webmasters/answer/182192?hl=en
标签: javascript node.js express handlebars.js ghost-blog