[virt-manager PATCH v2 2/5] setup: add a extract_messages command
Pino Toscano
ptoscano at redhat.com
Tue Jul 7 20:53:08 UTC 2020
Add a separate command to extract the messages; this also changes the
way messages are extracted:
- the messages from the application itself are still extracted to a
virt-manager catalog; use xgettext instead of intltools, as it is
simpler and more flexible
- the messages from the .in files are extracted to a separate
virt-manager-meta catalog in a separate directory; this will ease the
merge back, and avoid shipping these helper translations
Signed-off-by: Pino Toscano <ptoscano at redhat.com>
---
setup.py | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
diff --git a/setup.py b/setup.py
index 3e921b45..b75c1417 100755
--- a/setup.py
+++ b/setup.py
@@ -690,6 +690,56 @@ class VMMDistribution(distutils.dist.Distribution):
distutils.dist.Distribution.__init__(self, *args, **kwargs)
+class ExtractMessages(distutils.core.Command):
+ user_options = [
+ ]
+ description = "Extract the translation messages"
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def _extract_main(self):
+ pot_file = "po/virt-manager.pot"
+ bug_address = "https://github.com/virt-manager/virt-manager/issues"
+
+ common_xgettext_args = ["xgettext", "-o", pot_file, "-F",
+ "--package-name=virt-manager",
+ "--msgid-bugs-address=" + bug_address]
+
+ # First extract the messages from the Python sources
+ py_sources = glob.glob("virtManager/**/*.py", recursive=True)
+ py_sources += glob.glob("virtinst/**/*.py", recursive=True)
+ cmd = common_xgettext_args + ["-L", "Python"] + py_sources
+ self.spawn(cmd)
+
+ # Then extract the messages from the Glade UI files
+ ui_files = glob.glob("**/*.ui", recursive=True)
+ cmd = common_xgettext_args + ["-j", "-L", "Glade"] + ui_files
+ self.spawn(cmd)
+
+ def _extract_meta(self):
+ po_dir = "meta-po"
+ potfiles = _generate_meta_potfiles_in()
+ potpath = "meta-po/POTFILES.in"
+
+ try:
+ open(potpath, "w").write(potfiles)
+ cmd = ["intltool-update", "-p", "-g", "virt-manager-meta"]
+ wd = os.getcwd()
+ os.chdir(po_dir)
+ self.spawn(cmd)
+ os.chdir(wd)
+ finally:
+ os.unlink(potpath)
+
+ def run(self):
+ self._extract_main()
+ self._extract_meta()
+
+
distutils.core.setup(
name="virt-manager",
version=BuildConfig.version,
@@ -754,6 +804,8 @@ distutils.core.setup(
'test_urls': TestURLFetch,
'test_initrd_inject': TestInitrdInject,
'test_dist': TestDist,
+
+ 'extract_messages': ExtractMessages,
},
distclass=VMMDistribution,
--
2.26.2
More information about the virt-tools-list
mailing list