cubicweb/devtools/devctl.py
changeset 11735 7a170207acbf
parent 11728 b96bed36765d
child 11818 fdc0a8260fd2
--- a/cubicweb/devtools/devctl.py	Tue Sep 27 12:28:39 2016 +0200
+++ b/cubicweb/devtools/devctl.py	Fri Oct 21 18:10:15 2016 +0200
@@ -29,9 +29,11 @@
 import sys
 from datetime import datetime, date
 from os import mkdir, chdir, path as osp
+import pkg_resources
 from warnings import warn
 
 from pytz import UTC
+
 from six.moves import input
 
 from logilab.common import STD_BLACKLIST
@@ -566,14 +568,21 @@
     cubedir = osp.abspath(osp.normpath(cubedir))
     workdir = tempfile.mkdtemp()
     try:
-        cube = osp.basename(cubedir)
+        distname = osp.basename(cubedir)
+        cubename = distname.split('_')[-1]
         print('cubedir', cubedir)
-        print(underline_title('Updating i18n catalogs for cube %s' % cube))
+        extract_cls = I18nCubeMessageExtractor
+        try:
+            extract_cls = pkg_resources.load_entry_point(
+                distname, 'cubicweb.i18ncube', cubename)
+        except (pkg_resources.DistributionNotFound, ImportError):
+            pass  # no customization found
+        print(underline_title('Updating i18n catalogs for cube %s' % cubename))
         chdir(cubedir)
-        extractor = I18nCubeMessageExtractor(workdir, cubedir)
+        extractor = extract_cls(workdir, cubedir)
         potfile = extractor.generate_pot_file()
         if potfile is None:
-            print('no message catalog for cube', cube, 'nothing to translate')
+            print('no message catalog for cube', cubename, 'nothing to translate')
             return ()
         print('-> merging main pot file with existing translations:', end=' ')
         chdir('i18n')