Thanks for giving a hand
In other news, I have added SPIR-V generation (still running) to the nightly build, and, through a sprint, I also set up a separate translations repository, to see how it would work in practice.
I'd have to document it on the dev environment page if we go with that, but basically:
upon each commit to the main repo, pot files are generated and pushed to the translations repo
for the future: ideally, after that pot update, we should push templates to Transifex instead of letting them autoupdate
daily, the translation repo pulls updates from Transifex. in the future, we should run the check script and also lint po files, and follow translation issues in that repo. we should be able to eliminate issues such as #4250
This system still has some rough edges but here are my comments after developing that:
the concerns are nicely separated now. all interaction with Transifex happens in the translations repo. that's a really good thing.
this separate repo will be the perfect place to collaborate with translators and fix long-standing issues such as #4250
the base git repo only sends generated pot files using messages.json and updateTemplates.py. I deleted all the other scripts and all the .tx/config files
the translation repo holds the majority of i18n python scripts, which do not need to know about the structure of the data/ dir anymore, that should make their maintenance simpler
the checkDiff.py script does not work anymore with git, it was developed specifically for SVN! so the translations git repo gets all po/pot updates even if they are irrelevant. it is not a big deal for that auxiliary repo, but this is another dealbreaker against the idea of having translations in the main git repo.
this new repo adds some complexity to the migration, as those scripts need to receive changes for that new infrastructure
the nightly repo (and the git repo) can fetch the translations without using svn export... but git does not have that "export" feature so the new fetch script relies on creating a temporary shallow clone, that's a bit yucky
the Jenkins setup is much more complex now, with two extra jobs (maybe three if we add a push job to Transifex) on top of the nightly-build job. It is impractical to commit and push to git using Jenkins, this is definitely not a standard use case, and my pipelines may break in the future if Jenkins features evolve. (this reinforces my prejudice against letting bots push to git)
the Jenkins setup around the translation updates is not covered by Gitea features. it will be impractical to setup post-commit triggers for this.
In a nutshell, I think that this alternative way of handling translations is
on the pros side: separates issues, addresses some of your concerns, and gives us much more flexibility in our interactions with Transifex, with room for improvement;
on the cons side: more complex to maintain for Jenkins, would require extra development work for you and other Python devs around the migration