检测 TravisCI 中 django 翻译 (PO) 文件的更改

mes*_*shy 5 testing django continuous-integration translation travis-ci

我正在为一个项目使用Django (1.7) 翻译,并希望在 TravisCI 上确保在对可翻译字符串进行更改时不会留下翻译。

这是我的一个简化片段.travis.yml

script:
 - ...
 - python manage.py makemessages -l ja --no-wrap --no-location
 - git diff --exit-code
Run Code Online (Sandbox Code Playgroud)

这将重新创建PO文件,并在文件更改时失败。到现在为止还挺好。

不幸的是,djangoPOT-Creation-Date每次运行脚本时都会更新,我看不到任何makemessages会禁用它的标志,因此即使没有更改,每次运行时文件也会更改。

我是在正确的路线上,还是有更好的方法来检测发生了变化?

mes*_*shy 3

Git 现在有一个很好的方法来忽略特定的匹配。如果存在差异,以下行将失败,但排除有问题的标头:

git diff --ignore-matching-lines=POT-Creation-Date --exit-code
Run Code Online (Sandbox Code Playgroud)

更好的是,Django 最近合并了一项更改,以阻止在翻译没有更改时更新此标头。从 Django 4.0 开始它还没有发布,所以我预计它会在 Django 4.1 中发布。

请参阅Django bug #6106以及修复此问题的提交