Weblate:使用POST_UPDATE_SCRIPT

时间:2016-01-26 19:08:16

标签: git angular-translate weblate

在我们的AngularJS项目中,翻译字符串使用angular-translate的<translate>标记进行标记,并使用gulp-angular-translate-extract提取。这是由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 个答案:

答案 0 :(得分:1)

Weblate需要在Git存储库中查看该文件,它不会查找未经修改的更改。

所以要解决这个问题,请将文件提交到钩子中的git:

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

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