ngtools / webpack ExtractI18nPlugin用法

时间:2017-05-16 14:36:35

标签: angular angular-cli

我一直在尝试通过Webpack和Angular进行i18n本地化。

我在Angular https://github.com/angular/angular-cli/blob/master/packages/%40ngtools/webpack/src/extract_i18n_plugin.ts

的cli工具中遇到了插件

但是我没有让它起作用,有人知道如何设置吗?

我只是得到通常的“错误:无法解析'../aot/src/app/app.module.ngfactory'”,但纯粹运行aot,工作正常。

var helpers = require('./helpers');
var ngtools = require('@ngtools/webpack');
var AotPlugin = ngtools.AotPlugin;
var ExtractI18nPlugin = ngtools.ExtractI18nPlugin

module.exports = {
    entry: {
        'polyfills': './src/polyfills.ts',
        'vendor': './src/vendor-aot.ts',
        'app': './src/main-aot.ts'
    },
    module: {
        rules: [
            {
                test: /\.ts$/,
                use: ['@ngtools/webpack']
            }
        ]
    },

    plugins: [
        new ExtractI18nPlugin({
            outFile: "src/i18n",
            tsConfigPath: helpers.root('tsconfig-aot.json')
        }),
        new AotPlugin({
            tsConfigPath: helpers.root('tsconfig-aot.json'),
            entryModule: helpers.root('src/app/app.module#AppModule')
        })

    ]
};

1 个答案:

答案 0 :(得分:0)

我确实在其他地方看到了一条说明,你需要在AotPlugin之后放入ExtractI18nPlugin,如下所示:

"plugins": [
// ...
new AotPlugin({
   "mainPath": "main.ts",
   "i18nFile": "src/i18n/messages.fr.xlf",
   "i18nFormat": "xlf",
   "locale": "fr",
   "replaceExport": false,
   "missingTranslation": "error",
   "hostReplacementPaths": {
   "environments\\environment.ts": "environments\\environment.ts"
},
"exclude": [],
"tsConfigPath": "src\\tsconfig.app.json"
}),
new ExtractI18nPlugin({
   "tsConfigPath": "src\\tsconfig.app.json",
   "exclude": [],
   "i18nFormat": "xlf",
   "locale": "fr",
   "outFile": "i18n/test.xlf",
}) 
// ... 
]