2017-09-14 2 views
0

Ich habe eine Django-App und verwende Djangos i18n-Modul, um meine Strings zu übersetzen. Zum Übersetzen von JavaScript verwende ichWebpack TypeScript- und xgettext-Übersetzungen

python manage.py makemessages -d djangojs 

, die alle markierten Zeichenfolgen zu einer .po-Datei hinzugefügt. Das funktioniert ganz gut für alle meine langweiligen .js-Dateien in meinem statischen Ordner. Wir fangen jedoch an, webpack zu verwenden, um einige Typoskripte (.tsx-Dateien) in eine bundle.js-Datei zu packen. Diese Datei wird nach dem Aufbau in den statischen Ordner kopiert, also erwartete ich, dass Djangos makemessages auch die Zeichenfolgen daraus abliest. Es scheint jedoch, dass die Zeichenfolgen nicht korrekt analysiert werden, da der meiste Code in bundle.js einfach Zeichenfolgen ist, die in eval() eingewickelt sind.

Ich glaube, das bedeutet, dass ich brauche webpack zu - neben der bundle.js Datei - erstellen Sie eine Js-Datei für jede .tsx Datei ohne all die eval() Unsinn, so dass Djangos makemessages es richtig analysieren kann. Ich habe keine Ahnung, wie ich das machen soll. Meine aktuelle Konfiguration sieht wie folgt aus

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; 
  • So wie kann ich diese Dateien webpack ausspucken machen?
  • Ist dies das Richtige oder gibt es eine Möglichkeit, Django package.js richtig zu parsen?

Antwort

0

Stellt sich heraus, dass der ganze Eval-Nonsense von Webpacks "watch" -Funktion generiert wurde. Wenn Webpack zum Erstellen des Skripts einfach ausgeführt wird, funktioniert es wie erwartet

Verwandte Themen