[libvirt PATCH 0/7] po: updates to switch over to use of Weblate

Daniel P. Berrangé berrange at redhat.com
Tue May 19 09:55:02 UTC 2020


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 at kkcor.mini.po                  |    20 -
 po/kw at uccor.mini.po                  |    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 at latin.mini.po => sr at latin.po} |    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 at kkcor.mini.po
 delete mode 100644 po/kw at uccor.mini.po
 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 at latin.mini.po => sr at latin.po} (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





More information about the libvir-list mailing list