使用Webpack生成i18n多页站点的正确方法是什么?

问题描述 投票:0回答:1

任务

使用相同的部分为几种语言构建多个静态页面。尽可能使项目尽可能简单和最小。

堆栈

具有html-loader,HtmlWebpackPlugin和I18nPlugin的Webpack。没有什么花哨。一切都是今天的最新版本。

当前解决方案

webpack.config.js:

const entryHtmlPlugins = (language) => pageList
    .map(function (entryName) {
        const langPart = language === defaultLanguage ? '' : `${language}.`;

        return new HtmlWebpackPlugin({
            filename: `../dist/${langPart}${entryName}`,
            template: `prerender/${entryName}`,
            language,
        });
    });

module.exports = Object.keys(languages).map((language) => ({
    ...
    module: {
        rules: [{
            test: /\.(html)$/,
                include: path.join(__dirname, 'src/pages'),
                use: {
                     loader: 'html-loader',
                     options: {
                         interpolate: true
                     }
                }
         },
    ...]
    },
    plugins: [
        ...
        new I18nPlugin(languages[language]),
    ].concat(entryHtmlPlugins(language))
}))

index.html的

<!-- regular html with translations in format: -->
<%= __('Test') %>

问题

在模板中,用]导入>

<%= require('html-loader!./partial.html') %>

${require('!html-loader!./partial.html')}

翻译无效。

解决方案?

使用temp文件夹中的插件处理HTML页面(因此,每个页面都构建一次以包含部分内容,并再次构建以进行翻译)正在工作,但会导致无限次重新呈现。而且感觉不对。该任务看起来很简单,我几乎相信没有其他方法可以使用模板引擎。我想知道这是否是制作自定义插件的正确思路?如果当前堆栈对于我的目的而言过于谦虚,请提出其他任何选择。

问题

所以有某种或多或少的方法可以同时使用partials和i18n,或者我have使用pug(或其他东西)进行模板制作?

该任务使用相同的部分为几种语言构建多个静态页面。使项目尽可能简单和最小。使用html-loader,HtmlWebpackPlugin和...

html webpack internationalization html-webpack-plugin multi-page-application
1个回答
0
投票
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.