我有一个 Django 应用程序,并且正在使用 Django 的 i18n 模块来帮助翻译我的字符串。为了翻译 JavaScript,我运行
python manage.py makemessages -d djangojs
它将所有标记的字符串添加到 .po 文件中。这对于我静态文件夹中所有无聊的 .js 文件都非常有效。但是,我们开始使用 webpack 将一些 typescript(.tsx 文件)打包到 bundle.js 文件中。该文件在构建后被复制到静态文件夹中,所以我希望 Django也能从makemessages
中获取字符串。但是,似乎没有正确解析字符串,因为 bundle.js 中的大部分代码只是简单地用eval()
.
我相信这意味着我需要 webpack - 除了 bundle.js 文件之外 - 为每个 .tsx 文件创建一个 .js 文件,而不是所有eval()
废话,以便 djangomakemessages
可以正确解析它。但是,我不知道该怎么做。我当前的配置看起来像这样
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?