2016-05-26 4 views
0

Ghostのブログの一部を変更して、異なる言語を使用しています。そのために、私はハンドルヘルパーを書いています:ハンドルバー - アクセスナビゲータ

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

はしかし、私は、メッセージがnavigator is undefinedでエラーが発生します。ゴーストはexpress-hbsを使用しているので、同じヘルパーのwas declared hereのため、カスタムフレーバーと何か関係があると推測しています。

私はここで何が分かりませんか?

+0

私はあなたのコードがserver.navigatorで実行されていると思うブラウザではグローバルです。 –

+0

@gujefers正しいインスタンスを参照するために上記のコードを調整する適切な方法は何でしょうか? –

+0

ブラウザでレンダリングするかセッションオブジェクトから言語を取得する(おそらくリクエスト) –

答えて

0

コーディングの深夜の後にこれを理解しました。 index.js

renderPost関数内で、私は(非常に原始的な方法で)クライアントの言語を照会することができます

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

これはpostオブジェクト内に新しいプロパティを作成します。 (helpers.jsに配置された)custom conditional helperの助けを借りて:core\server\helpers\content.js

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

私はすでに、インデックスに応じて適切なコンテンツを表示するカスタム言語パーサーを実装しました。

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

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