2016-01-26 76 views
0

在我們的AngularJS項目中,翻譯字符串使用angular-translate的<translate>標記進行標記,並使用gulp-angular-translate-extract進行提取。這由Weblate使用POST_UPDATE_SCRIPT自動運行,因此開發人員不應手動提取字符串。Weblate:使用POST_UPDATE_SCRIPT更新基本語言文件

這是後更新腳本:

#!/bin/bash 
gulp --gulpfile gulp-i18n-extract.js 

以供參考,這是gulpfile:

#!/usr/bin/env gulp --gulpfile 

'use strict'; 

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

gulp.task('default', function() { 
    return gulp.src('src/**/*.{html,js}') 
     .pipe(angularTranslate({ 
      lang: ['en'], 
      defaultLang: 'en', 
      suffix: '.lang.json', 
      safeMode: false, 
      dest: './src/languages', 
      stringifyOptions: true, // Sort alphabetically. 
      verbose: false 
     })) 
     .pipe(gulp.dest('./src')); 
}); 

運行腳本,將提取的字符串。因此,改變基本語言文件顯示在庫細節視圖粘貼如下:

On branch master 
Your branch is up-to-date with 'origin/master'. 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: src/languages/en.lang.json 

no changes added to commit (use "git add" and/or "git commit -a") 

我的問題是,這些變化不會被Weblate注意到,所以爲了得到更新串入Weblate,我必須手動運行:

django-admin loadpo --force --all 

此外,當我提交更改時,基本語言文件將不會被提交。

我在這裏做錯了什麼?

回答

1

Weblate需要在Git存儲庫中看到該文件,它不會查找未被取消的更改。

因此,要解決這個問題,提交文件中的鉤與git還有:

git commit -m 'Update source strings' src/languages/en.lang.json 

PS:我已經更新了documentation to cover this as well

+0

感謝您的快速回答和文檔更新。更不用說Weblate本身:) –