0
我有一个Django应用程序,并使用Django的i18n模块来帮助翻译我的字符串。为了翻译JavaScript,我运行了Webpack TypeScript和xgettext翻译
python manage.py makemessages -d djangojs
它将所有标记的字符串添加到.po文件。这对我静态文件夹中所有无聊的.js文件都很有效。但是,我们开始使用webpack将一些打字稿(.tsx文件)打包到一个bundle.js文件中。这个文件在构建完成后被复制到静态文件夹中,所以我期望Djangos makemessages
也可以从中获取字符串。但是,似乎这些字符串没有正确解析,因为bundle.js中的大部分代码只是包装在eval()
中的字符串。
我认为,这意味着我需要的WebPack来 - 除了bundle.js文件 - 为每个.tsx文件.js文件没有所有的eval()
废话,让Django的makemessages
可以正确地解析它。然而,我不知道如何做到这一点。我现在的配置是这样的
var path = require("path");
var WebpackShellPlugin = require('webpack-shell-plugin');
var config = {
entry: ["./src/App.tsx"],
output: {
path: path.resolve(__dirname, "build"),
filename: "bundle.js"
},
devtool: 'source-map',
resolve: {
extensions: [".ts", ".tsx", ".js"]
},
module: {
rules: [
{
test: /\.tsx?$/,
loader: "ts-loader",
exclude: /node_modules/
},
{
test: /\.scss$/,
use: [{
loader: "style-loader" // creates style nodes from JS strings
}, {
loader: "css-loader" // translates CSS into CommonJS
}, {
loader: "sass-loader" // compiles Sass to CSS
}]
},
{
test: /\.css$/,
loader: 'style-loader!css-loader'
}
]
},
plugins: [
new WebpackShellPlugin({
onBuildEnd:['./cp_to_static.sh'],
dev: false // Needed to trigger on npm run watch
})
]
};
module.exports = config;
- 那么,怎样才能使我的WebPack吐出这些文件?
- 这是正确的做法,还是有办法让Django正确解析bundle.js?