0

我创建了一个 gulp 任务来基于相同的模板生成四个页面,用于不同的语言/区域设置。语言环境是:en-USen-CA和。以前,这只是一个简单的任务,需要编写四次 - 每个语言环境一次,手动更改。en-NZen-AU

en-AU是基本 URL(没有前缀),其他是website.com/en-us/等等。

这是 Gulp 任务:

let localeList = Object.keys(config.locales);
let localePaths = Object.values(config.locales);

gulp.task('contentful:blog-page', () => {
    return loadBlogArticles()
      .then((res) => {
        for ( locale in localeList ) {
            var path = `pages/${localePaths[locale].toLowerCase()}` 
            
            if (localeList[locale] === 'enAU') {
                path = 'pages'
            }

            gulp.src('pages/templates/blog.njk')
            .pipe(data(() => ({ items: res.items.map(toBlogArticle(res.includes.Entry, res.includes.Asset)), locale: config.locales[localeList[locale]] })))
            .pipe(nunjucksRender({ path: [config.paths.pages.templates] }))
            .pipe(gulp.dest(path))
        }
      }
      )
      .catch((err) => Promise.reject(new Error(`failed fetching blog articles from contentful: ${err.message ? err.message : JSON.stringify(err)}`)))
});

虽然它在正确的子目录中生成了所有页面,但它locale: config.locales[localeList[locale]]给我带来了问题。

它将所有语言环境设置为en-US博客页面,但如果我添加console.log(config.locales[localeList[locale]])到循环中,它会按应有的方式单独打印出来。这是非常令人费解的。

任何帮助,将不胜感激!

4

1 回答 1

0

这是一个关闭错误 - 添加和替换withlet localeKey = localeList[locale]的其他实例似乎可以解决问题。localeList[locale]localeKey

感谢 Lesha 在下面的评论解决了

于 2020-12-18T07:57:17.793 回答