0

我正在尝试创建一个多语言页面,我希望对不同的语言使用不同的 json 文件,并让 gulp 输出文件名中带有语言后缀的文件。

到目前为止,我已经加载了一个数据文件,并且无法从该文件中输出单个对象,我只能使用 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}}
4

1 回答 1

0

使用相同的模板文件为每种语言输出两个不同的 html 文件很容易,您只需要创建两个 Gulp 任务来从 nunjucks 渲染 html 文件,每种语言一个任务。

使用 gulp-rename 您可以简单地在文件名中添加带有语言代码的后缀:

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

于 2017-08-28T15:12:01.487 回答