2017-07-11 50 views
0

我想創建一個多語言頁面,我希望能夠爲不同的語言使用不同的json文件,並且在文件名中輸入具有語言後綴的文件。可以Nunjucks輸出多種語言的文件

到目前爲止,我已經加載了一個數據文件,並且不能從該文件輸出單個對象,我只能通過它與nunjuks {for item in obj}一起瀏覽所有對象。

我需要做的是分別輸出每個對象,併爲每種語言輸出兩個不同的文件。

這是英文文件,法國人一個是相同的只有它的法文文本:

{ 
    "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」的值,但它不起作用:

{{hello}} 
+0

需要每側的兩個大括號來呈現Nunjucks一個變量: '{{hello}}' 我不清楚你想用你的JSON和Nunjucks文件的結果。你想爲每種語言輸出一個JSON文件和一個HTML文件? –

+0

我想通了,我會回答自己的問題,我所要做的就是爲每種語言創建兩個獨立的Gulp任務,每個任務使用正確的語言json文件。 –

回答

0

輸出兩個不同的使用相同模板文件的每種語言的html文件都很容易,您只需創建兩個Gulp任務來從nunjucks呈現html文件,每種語言都需要一個任務。

使用一飲而盡,重命名,你可以簡單地添加一個後綴的語言代碼的文件名:

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('')); 
 
});