setup: use msgmerge for updating translations

Switch from intltool to msgmerge to merge the translations to the
catalog, as it is much easier.

Remove the writing of the temporary POTFILES.in, as it is no more needed
now.

Also, since now gettext is used at installation time:
- mention the gettext requirement in INSTALL.md
- add the gettext BuildRequires in the RPM spec file

Reviewed-by: Cole Robinson <crobinso@redhat.com>
Signed-off-by: Pino Toscano <ptoscano@redhat.com>
This commit is contained in:
Pino Toscano 2020-07-08 16:54:14 +02:00 committed by Cole Robinson
parent d306d7ef7c
commit a1f0e07cd9
3 changed files with 7 additions and 45 deletions

View File

@ -30,6 +30,7 @@ A detailed dependency list can be found in
Minimum version requirements of major components: Minimum version requirements of major components:
- gettext
- python >= 3.4 - python >= 3.4
- gtk3 >= 3.22 - gtk3 >= 3.22
- libvirt-python >= 0.6.0 - libvirt-python >= 0.6.0

View File

@ -10,7 +10,6 @@ if sys.version_info.major < 3:
sys.exit(1) sys.exit(1)
import glob import glob
import fnmatch
import os import os
from pathlib import Path from pathlib import Path
import unittest import unittest
@ -67,28 +66,6 @@ def _generate_meta_potfiles_in():
return potfiles return potfiles
def _generate_potfiles_in():
def find(dirname, ext):
ret = []
for root, ignore, filenames in os.walk(dirname):
for filename in fnmatch.filter(filenames, ext):
ret.append(os.path.join(root, filename))
ret.sort(key=lambda s: s.lower())
return ret
potfiles = ""
potfiles += "\n".join(find("virtManager", "*.py")) + "\n\n"
potfiles += "\n".join(find("virtinst", "*.py")) + "\n\n"
potfiles += _generate_meta_potfiles_in()
potfiles += "\n"
potfiles += "\n".join(["[type: gettext/glade]" + f for
f in find("ui", "*.ui")]) + "\n\n"
return potfiles
class my_build_i18n(distutils.command.build.build): class my_build_i18n(distutils.command.build.build):
""" """
Add our desktop files to the list, saves us having to track setup.cfg Add our desktop files to the list, saves us having to track setup.cfg
@ -103,30 +80,13 @@ class my_build_i18n(distutils.command.build.build):
pass pass
def run(self): def run(self):
potfiles = _generate_potfiles_in()
potpath = "po/POTFILES.in"
try:
print("Writing %s" % potpath)
open(potpath, "w").write(potfiles)
self._run()
finally:
print("Removing %s" % potpath)
os.unlink(potpath)
def _run(self):
# Borrowed from python-distutils-extra
po_dir = "po" po_dir = "po"
if self.merge_po:
pot_file = os.path.join("po", "virt-manager.pot")
for po_file in glob.glob("%s/*.po" % po_dir):
cmd = ["msgmerge", "--previous", "-o", po_file, po_file, pot_file]
self.spawn(cmd)
# Update po(t) files and print a report
# We have to change the working dir to the po dir for intltool
cmd = ["intltool-update",
(self.merge_po and "-r" or "-p"), "-g", "virt-manager"]
wd = os.getcwd()
os.chdir("po")
self.spawn(cmd)
os.chdir(wd)
max_po_mtime = 0 max_po_mtime = 0
for po_file in glob.glob("%s/*.po" % po_dir): for po_file in glob.glob("%s/*.po" % po_dir):
lang = os.path.basename(po_file[:-3]) lang = os.path.basename(po_file[:-3])

View File

@ -49,6 +49,7 @@ Recommends: libvirt-daemon-config-network
# Optional inspection of guests # Optional inspection of guests
Suggests: python3-libguestfs Suggests: python3-libguestfs
BuildRequires: gettext
BuildRequires: intltool BuildRequires: intltool
BuildRequires: /usr/bin/pod2man BuildRequires: /usr/bin/pod2man
BuildRequires: python3-devel BuildRequires: python3-devel