The Fedora translation team has stopped using Zanata because the software itself is dead upstream. In its place is the Weblate platform. In theory we should have been able to work with Weblate in the same way as we did for Zanata, pushing a pot file periodically, and pulling .po files periodically. In practice this fails for libvirt.git because Weblates RPC API doesn't scale sufficiently well. It will frequently throw errors with the large libvirt.pot file and it gets slower at an exponential rate as you add more languages. Weblate has another mode of operating though which is way more common, whereby it directly pulls a .pot from your git repo, and then directly pushes .po files back, either using a trusted SSH key, or by opening a merge request for GitLab/GitHub/etc. This is the mode we're going to have to use in libvirt projects. Compared to what we're currently doing with Zanata the downsides are: - We have to store libvirt.pot in git and refresh it periodically - The .po files are only partially minimized, as while they have locations stripped, they still contain non-translated msgids The plussides are - We don't have to interact with Weblate at all, only the libvirt git repo - We'll be able to use the normal meson i18n integration, merely by calling i18n.gettext(meson.project_name(), args: ['--sort-output'], preset: 'glib') I'm intending to open discussion with weblate maintainers to see if either of those two downsides can be eliminated via feature enhancements to Weblate. In the meanwhile we just have to accept them, as otherwise we're not going to get any translations since Zanata is dead. Daniel P. Berrangé (7): po: switch to using LINGUAS file for list of languages po: delete empty translations po: refresh to drop unused translations po: rename the .mini.po files to have just a .po suffix po: generate .pot file with strings in alphabetical order po: stop stripping non-translated strings from po files po: go back to storing the .pot file in git Makefile.am | 1 - po/LINGUAS | 42 + po/Makefile.am | 50 +- po/af.mini.po | 19 - po/am.mini.po | 19 - po/anp.mini.po | 19 - po/ar.mini.po | 23 - po/{as.mini.po => as.po} | 402 +- po/ast.mini.po | 19 - po/bal.mini.po | 19 - po/be.mini.po | 20 - po/{bg.mini.po => bg.po} | 5 +- po/bn.mini.po | 21 - po/{bn_IN.mini.po => bn_IN.po} | 126 +- po/bo.mini.po | 19 - po/br.mini.po | 19 - po/brx.mini.po | 19 - po/{bs.mini.po => bs.po} | 5 +- po/{ca.mini.po => ca.po} | 15 +- po/{cs.mini.po => cs.po} | 523 +- po/cy.mini.po | 23 - po/{da.mini.po => da.po} | 5 +- po/{de.mini.po => de.po} | 408 +- po/de_CH.mini.po | 19 - po/{el.mini.po => el.po} | 2 +- po/{en_GB.mini.po => en_GB.po} | 402 +- po/eo.mini.po | 19 - po/{es.mini.po => es.po} | 409 +- po/et.mini.po | 21 - po/eu.mini.po | 21 - po/fa.mini.po | 19 - po/{fi.mini.po => fi.po} | 26 +- po/fil.mini.po | 19 - po/{fr.mini.po => fr.po} | 75 +- po/fur.mini.po | 19 - po/ga.mini.po | 20 - po/gl.mini.po | 21 - po/{gu.mini.po => gu.po} | 408 +- po/he.mini.po | 21 - po/{hi.mini.po => hi.po} | 300 +- po/hr.mini.po | 20 - po/{hu.mini.po => hu.po} | 5 +- po/ia.mini.po | 19 - po/{id.mini.po => id.po} | 2 +- po/ilo.mini.po | 19 - po/is.mini.po | 21 - po/{it.mini.po => it.po} | 175 +- po/{ja.mini.po => ja.po} | 407 +- po/ka.mini.po | 21 - po/kk.mini.po | 19 - po/km.mini.po | 19 - po/{kn.mini.po => kn.po} | 407 +- po/{ko.mini.po => ko.po} | 240 +- po/kw.mini.po | 20 - po/kw@xxxxxxxxxxxxx | 20 - po/kw@xxxxxxxxxxxxx | 20 - po/kw_GB.mini.po | 20 - po/ky.mini.po | 19 - po/libvirt.pot | 48582 +++++++++++++++++++++++++ po/lt.mini.po | 22 - po/lv.mini.po | 22 - po/mai.mini.po | 19 - po/{mk.mini.po => mk.po} | 5 +- po/{ml.mini.po => ml.po} | 402 +- po/mn.mini.po | 19 - po/{mr.mini.po => mr.po} | 434 +- po/{ms.mini.po => ms.po} | 2 +- po/my.mini.po | 19 - po/{nb.mini.po => nb.po} | 5 +- po/nds.mini.po | 19 - po/ne.mini.po | 19 - po/{nl.mini.po => nl.po} | 215 +- po/nn.mini.po | 21 - po/nso.mini.po | 21 - po/{or.mini.po => or.po} | 375 +- po/{pa.mini.po => pa.po} | 402 +- po/{pl.mini.po => pl.po} | 239 +- po/{pt.mini.po => pt.po} | 5 +- po/{pt_BR.mini.po => pt_BR.po} | 407 +- po/ro.mini.po | 22 - po/{ru.mini.po => ru.po} | 376 +- po/si.mini.po | 21 - po/sk.mini.po | 21 - po/sl.mini.po | 22 - po/sq.mini.po | 23 - po/{sr.mini.po => sr.po} | 16 +- po/{sr@xxxxxxxxxxxxx => sr@xxxxxxxx} | 16 +- po/{sv.mini.po => sv.po} | 105 +- po/{ta.mini.po => ta.po} | 407 +- po/{te.mini.po => te.po} | 402 +- po/tg.mini.po | 19 - po/th.mini.po | 21 - po/tr.mini.po | 21 - po/tw.mini.po | 19 - po/{uk.mini.po => uk.po} | 534 +- po/ur.mini.po | 21 - po/{vi.mini.po => vi.po} | 193 +- po/wba.mini.po | 19 - po/yo.mini.po | 19 - po/{zh_CN.mini.po => zh_CN.po} | 421 +- po/zh_HK.mini.po | 19 - po/{zh_TW.mini.po => zh_TW.po} | 9 +- po/zu.mini.po | 21 - scripts/minimize-po.py | 54 - 104 files changed, 48678 insertions(+), 10512 deletions(-) create mode 100644 po/LINGUAS delete mode 100644 po/af.mini.po delete mode 100644 po/am.mini.po delete mode 100644 po/anp.mini.po delete mode 100644 po/ar.mini.po rename po/{as.mini.po => as.po} (98%) delete mode 100644 po/ast.mini.po delete mode 100644 po/bal.mini.po delete mode 100644 po/be.mini.po rename po/{bg.mini.po => bg.po} (99%) delete mode 100644 po/bn.mini.po rename po/{bn_IN.mini.po => bn_IN.po} (98%) delete mode 100644 po/bo.mini.po delete mode 100644 po/br.mini.po delete mode 100644 po/brx.mini.po rename po/{bs.mini.po => bs.po} (99%) rename po/{ca.mini.po => ca.po} (99%) rename po/{cs.mini.po => cs.po} (98%) delete mode 100644 po/cy.mini.po rename po/{da.mini.po => da.po} (99%) rename po/{de.mini.po => de.po} (97%) delete mode 100644 po/de_CH.mini.po rename po/{el.mini.po => el.po} (99%) rename po/{en_GB.mini.po => en_GB.po} (97%) delete mode 100644 po/eo.mini.po rename po/{es.mini.po => es.po} (97%) delete mode 100644 po/et.mini.po delete mode 100644 po/eu.mini.po delete mode 100644 po/fa.mini.po rename po/{fi.mini.po => fi.po} (98%) delete mode 100644 po/fil.mini.po rename po/{fr.mini.po => fr.po} (98%) delete mode 100644 po/fur.mini.po delete mode 100644 po/ga.mini.po delete mode 100644 po/gl.mini.po rename po/{gu.mini.po => gu.po} (97%) delete mode 100644 po/he.mini.po rename po/{hi.mini.po => hi.po} (97%) delete mode 100644 po/hr.mini.po rename po/{hu.mini.po => hu.po} (99%) delete mode 100644 po/ia.mini.po rename po/{id.mini.po => id.po} (99%) delete mode 100644 po/ilo.mini.po delete mode 100644 po/is.mini.po rename po/{it.mini.po => it.po} (96%) rename po/{ja.mini.po => ja.po} (97%) delete mode 100644 po/ka.mini.po delete mode 100644 po/kk.mini.po delete mode 100644 po/km.mini.po rename po/{kn.mini.po => kn.po} (97%) rename po/{ko.mini.po => ko.po} (97%) delete mode 100644 po/kw.mini.po delete mode 100644 po/kw@xxxxxxxxxxxxx delete mode 100644 po/kw@xxxxxxxxxxxxx delete mode 100644 po/kw_GB.mini.po delete mode 100644 po/ky.mini.po create mode 100644 po/libvirt.pot delete mode 100644 po/lt.mini.po delete mode 100644 po/lv.mini.po delete mode 100644 po/mai.mini.po rename po/{mk.mini.po => mk.po} (99%) rename po/{ml.mini.po => ml.po} (97%) delete mode 100644 po/mn.mini.po rename po/{mr.mini.po => mr.po} (98%) rename po/{ms.mini.po => ms.po} (98%) delete mode 100644 po/my.mini.po rename po/{nb.mini.po => nb.po} (98%) delete mode 100644 po/nds.mini.po delete mode 100644 po/ne.mini.po rename po/{nl.mini.po => nl.po} (97%) delete mode 100644 po/nn.mini.po delete mode 100644 po/nso.mini.po rename po/{or.mini.po => or.po} (97%) rename po/{pa.mini.po => pa.po} (97%) rename po/{pl.mini.po => pl.po} (97%) rename po/{pt.mini.po => pt.po} (99%) rename po/{pt_BR.mini.po => pt_BR.po} (97%) delete mode 100644 po/ro.mini.po rename po/{ru.mini.po => ru.po} (98%) delete mode 100644 po/si.mini.po delete mode 100644 po/sk.mini.po delete mode 100644 po/sl.mini.po delete mode 100644 po/sq.mini.po rename po/{sr.mini.po => sr.po} (99%) rename po/{sr@xxxxxxxxxxxxx => sr@xxxxxxxx} (99%) rename po/{sv.mini.po => sv.po} (95%) rename po/{ta.mini.po => ta.po} (98%) rename po/{te.mini.po => te.po} (97%) delete mode 100644 po/tg.mini.po delete mode 100644 po/th.mini.po delete mode 100644 po/tr.mini.po delete mode 100644 po/tw.mini.po rename po/{uk.mini.po => uk.po} (98%) delete mode 100644 po/ur.mini.po rename po/{vi.mini.po => vi.po} (97%) delete mode 100644 po/wba.mini.po delete mode 100644 po/yo.mini.po rename po/{zh_CN.mini.po => zh_CN.po} (98%) delete mode 100644 po/zh_HK.mini.po rename po/{zh_TW.mini.po => zh_TW.po} (99%) delete mode 100644 po/zu.mini.po delete mode 100755 scripts/minimize-po.py -- 2.26.2