2017-09-03 115 views
1

我有一個項目,我正在使用Angular 1.6並且我正在使用angular-translate將項目國際化。從HTML和JS文件中提取翻譯

角轉換安裝,配置和工作,如果我添加一些文字,如:

{{'Test' | translate}} 
<span translate>Test</span> 

手動添加關鍵「測試」到文件es.jsonen.json,Angular翻譯密鑰沒有問題。

現在我試圖自動從HTML和JS文件中提取所有翻譯的鍵的過程。

我已經挖了一圈,發現這2包:

  • 一飲而盡,角翻譯提取物
  • 一飲而盡 - 角轉換,提取

gulpfile.js有一個叫做「watch」的任務,這個任務正在觀看JS & HTML文件的更改。我的想法是在監視任務中調用另一個任務「翻譯」。

我試圖用上面提到的2個庫創建任務「翻譯」。我嘗試了這些庫的幾種配置,但沒有一個庫提取這些翻譯並將它們添加到es.json 012. esp.json中。

這是我的嘗試小例子:

一飲而盡,角翻譯提取物

var angularTranslate = require('gulp-angular-translate-extract'); 

gulp.task('translate', function() { 
    return gulp.src(['./src/app/**/*.html', './src/app/**/*.js']) 
     .pipe(angularTranslate({ 
      lang: ['en', 'es'], 
      dest: 'src/app/locale/', 
      suffix: '.json', 
      prefix: '', 
     })) 
}); 

一飲而盡 - 角轉換,提取

var extractTranslate = require('gulp-angular-translate-extractor'); 

gulp.task('taskName', function() { 
    var i18nsrc = ['./src/app/**/*.html', './src/app/**/*.js']; // your source files 
    var i18ndest = './src/app/locale'; //destination directory 
    return gulp.src(i18nsrc) 
     .pipe(extractTranslate({ 
     defaultLang: 'en',   
      lang: ['en', 'es'], 
      dest: i18ndest, 
      prefix: '', 
      suffix: '.json', 
      safeMode: false, 
      stringifyOptions: true, 
     })) 
     .pipe(gulp.dest(i18ndest)); 
}); 

隨着上面的配置翻譯任務在每次修改HTML或JS fil時調用E,但翻譯鍵不被提取,我的意思是翻譯的鑰匙沒有被自動添加到es.jsonen.json

  • 我缺少的是在這裏嗎?我是否缺少一些額外的吞嚥配置?

回答

0

解決!我設法使它工作使用包一飲而盡 - 角轉換,提取

看來主要問題有相對路徑:

# Source paths 
./src/app/**/*.html 
./src/app/**/*.js 

# Dest paths 
./src/app/locale 

我更新配置使用下一個路徑和翻譯提取沒有問題:

var extractTranslate = require('gulp-angular-translate-extractor'); 

gulp.task('translate', function() { 
    var i18nsrc = [path.join(conf.paths.src, '/app/**/*.html'), path.join(conf.paths.src, '/app/**/*.js')]; // your source files 
    var i18ndest = path.join(conf.paths.src, '/app/locale/') 
    return gulp.src(i18nsrc) 
     .pipe(extractTranslate({ 
     defaultLang: 'en',   
      lang: ['en', 'es'], 
      dest: i18ndest, 
      prefix: '', 
      suffix: '.json', 
      safeMode: false, 
      stringifyOptions: true, 
     })) 
     .pipe(gulp.dest(i18ndest)); 
}); 

我的問題的代碼的主要區別是,我使用的下一個路徑:

# Source paths 
path.join(conf.paths.src, '/app/**/*.html') 
path.join(conf.paths.src, '/app/**/*.js') 

# Dest paths 
path.join(conf.paths.src, './src/app/locale') 

作爲變量conf.paths.src這樣的:

conf.js

exports.paths = { 
    src: 'src', 
    dist: 'release', 
    devDist: 'dev-release', 
    tmp: '.tmp', 
    e2e: 'e2e' 
};