我正在使用Jade模板引擎,並使用gulp,gulp-jade和gulp-data以兩種語言構建一個非常基本的單頁網站。結果應該是靜態HTML文檔,不需要進一步的服務器端或客戶端處理。根據我在index.jade
中定義的語言,是否可以從JSON文件加載網站內容,以及如何執行此操作的最佳方法是什麼?多語言Jade模板?
我現在的嘗試會導致一個錯誤:
gulpfile.js:
gulp.task('views', function() {
return gulp.src('app/**/*.jade')
.pipe($.data(function(file) {
return require('./app/data/text.json'); // load language file
}))
.pipe($.jade({pretty: true, basedir: 'app/'}))
.pipe(gulp.dest('.tmp'));
});
text.json:
{
"de": {
"foo": "deutsch"
},
"en": {
"foo": "english"
}
}
index_en.jade:
extends /_layouts/default.jade
var lang = "en"
block content
h1 #{lang.foo} // load text from json
這將導致以下錯誤,當我運行一飲而盡:
Cannot read property 'foo' of undefined
我不介意分裂的JSON爲每種語言不同的文件,如果使事情變得更容易,但我不知道我怎麼將包括index_en.jade
內的相應文件。
一些背景:
我要指出,我伸出的默認佈局文件(default.jade
),其本身包括像header.jade
和footer.jade
了一堆東西,以保持模板系統儘可能乾燥。這些文件也需要使用多種語言,這就是爲什麼我想在我的index_en.jade
,lang="de"
,index_de.jade
中定義lang="en"
,並且只是將其傳播到所有其他部分,而不必重複這些部分(例如,否否header_de.jade
或這樣)。
我還合併這些功能回到我yeoman generator,所以我想找到一個系統,我可不必調整gulpfile.js
如果我添加其他語言以後。
完美,謝謝。字符串和塊範圍都是一個問題。 –