2017-07-11 7 views
0

多言語ページを作成しようとしていますが、異なる言語に異なるjsonファイルを使用し、ファイル名に言語接尾辞付きファイルを出力することを望んでいました。Nunjucksは複数の言語でファイルを出力することができます

これまでデータファイルをロードしていて、そのファイルから1つのオブジェクトを出力することはできませんでした。すべてをnunjuks {for item in obj}でしか実行できません。

私がしなければならないことは、各オブジェクトを別々に出力し、言語ごとに2つの異なるファイルを出力することです。

これは英語のファイルである、フランスの1が同じであるだけで、それはフランス語のテキストを持っています

{ 
    "hello": "Hello", 
    "title": "Awesome Website" 
} 

これは一気作業です:

gulp.task('nunjucks', function() { 
    return gulp.src('source/pages/**/*.nunjucks') 
    .pipe(data(function() { 
     return require('./source/en.json'); 
    })) 
    .pipe(nunjucksRender({ 
     path: ['source/templates'], 
     manageEnv: manageEnvironment 
    })) 
    .on('error', onError) 
    // output files in app folder 
    .pipe(gulp.dest('')); 
}); 

そして、これは私が考えていた方法です出力テンプレートファイルで「こんにちは」の値が、それは動作しません:

{{hello}} 
+0

あなたはNunjucksで変数をレンダリングするために、各側の2つの中括弧が必要になります。 '{{hello}} ' あなたのJSONファイルとNunjucksファイルでは、あなたが望んでいる結果がはっきりしません。言語ごとにJSONファイルとHTMLファイルを出力しますか? –

+0

私はそれを理解しました。私は自分の質問に答えます。私がしなければならなかったのは、言語ごとに2つの別々のGulpタスクを作成することでした。 –

答えて

0

は、異なる2を出力します各言語のhtmlファイルは同じテンプレートファイルを使用するのは簡単ですが、nunjucksからhtmlファイルをレンダリングするための2つのGulpタスク(各言語ごとに1つのタスク)を作成するだけです。一息-名前の変更を使用して

あなたは、単にファイル名に言語コードと接尾辞を追加することができます。

gulp.task('nunjucks-en', function() { 
 
    return gulp.src('source/pages/**/*.nunjucks') 
 
    .pipe(data(function() { 
 
     return require('./source/en.json'); 
 
    })) 
 
    .pipe(nunjucksRender({ 
 
     path: ['source/templates'], 
 
     manageEnv: manageEnvironment 
 
    })) 
 
    .on('error', onError) 
 
    // output files in app folder 
 
    .pipe(gulp.dest('')); 
 
}); 
 

 
gulp.task('nunjucks-fr', function() { 
 
    return gulp.src('source/pages/**/*.nunjucks') 
 
    .pipe(data(function() { 
 
     return require('./source/fr.json'); 
 
    })) 
 
    .pipe(nunjucksRender({ 
 
     path: ['source/templates'], 
 
     manageEnv: manageEnvironment 
 
    })) 
 
    .pipe(rename(function (path) { 
 
     path.basename += '-fr' 
 
    })) 
 
    .on('error', onError) 
 
    // output files in app folder 
 
    .pipe(gulp.dest('')); 
 
});

関連する問題