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?