cubicweb/devtools/devctl.py
changeset 11735 7a170207acbf
parent 11728 b96bed36765d
child 11818 fdc0a8260fd2
equal deleted inserted replaced
11734:7e2c2354dc99 11735:7a170207acbf
    27 import shutil
    27 import shutil
    28 import tempfile
    28 import tempfile
    29 import sys
    29 import sys
    30 from datetime import datetime, date
    30 from datetime import datetime, date
    31 from os import mkdir, chdir, path as osp
    31 from os import mkdir, chdir, path as osp
       
    32 import pkg_resources
    32 from warnings import warn
    33 from warnings import warn
    33 
    34 
    34 from pytz import UTC
    35 from pytz import UTC
       
    36 
    35 from six.moves import input
    37 from six.moves import input
    36 
    38 
    37 from logilab.common import STD_BLACKLIST
    39 from logilab.common import STD_BLACKLIST
    38 from logilab.common.fileutils import ensure_fs_mode
    40 from logilab.common.fileutils import ensure_fs_mode
    39 from logilab.common.shellutils import find
    41 from logilab.common.shellutils import find
   564 
   566 
   565 def update_cube_catalogs(cubedir):
   567 def update_cube_catalogs(cubedir):
   566     cubedir = osp.abspath(osp.normpath(cubedir))
   568     cubedir = osp.abspath(osp.normpath(cubedir))
   567     workdir = tempfile.mkdtemp()
   569     workdir = tempfile.mkdtemp()
   568     try:
   570     try:
   569         cube = osp.basename(cubedir)
   571         distname = osp.basename(cubedir)
       
   572         cubename = distname.split('_')[-1]
   570         print('cubedir', cubedir)
   573         print('cubedir', cubedir)
   571         print(underline_title('Updating i18n catalogs for cube %s' % cube))
   574         extract_cls = I18nCubeMessageExtractor
       
   575         try:
       
   576             extract_cls = pkg_resources.load_entry_point(
       
   577                 distname, 'cubicweb.i18ncube', cubename)
       
   578         except (pkg_resources.DistributionNotFound, ImportError):
       
   579             pass  # no customization found
       
   580         print(underline_title('Updating i18n catalogs for cube %s' % cubename))
   572         chdir(cubedir)
   581         chdir(cubedir)
   573         extractor = I18nCubeMessageExtractor(workdir, cubedir)
   582         extractor = extract_cls(workdir, cubedir)
   574         potfile = extractor.generate_pot_file()
   583         potfile = extractor.generate_pot_file()
   575         if potfile is None:
   584         if potfile is None:
   576             print('no message catalog for cube', cube, 'nothing to translate')
   585             print('no message catalog for cube', cubename, 'nothing to translate')
   577             return ()
   586             return ()
   578         print('-> merging main pot file with existing translations:', end=' ')
   587         print('-> merging main pot file with existing translations:', end=' ')
   579         chdir('i18n')
   588         chdir('i18n')
   580         toedit = []
   589         toedit = []
   581         for lang in CubicWebNoAppConfiguration.cw_languages():
   590         for lang in CubicWebNoAppConfiguration.cw_languages():