develop.run(self)
Popen([executable, __file__, 'lang']).communicate()
Popen([executable, __file__, 'models']).communicate()
+ Popen([executable, __file__, 'images']).communicate()
class BaseCommand(Command):
l10n_path = 'assets/locale/'
def run(self):
- LanguageBuilder.build_pot(app_name, 'assets/locale/po/')
- list(map(self.__process_language, ['it_IT']))
-
- def __process_language(self, lang_code):
- LanguageBuilder.merge(lang_code, 'assets/locale/po/', self.l10n_path, app_name)
- mo_template = '%s%s/LC_MESSAGES/%s.mo'
- mo_name = mo_template % (self.l10n_path, lang_code, app_name)
- LanguageBuilder.build_mo(mo_name, self.l10n_path, app_name)
+ self.__language_builder = LanguageBuilder(app_name, 'assets/locale/po/', 'assets/locale/')
+ self.__language_builder.build_pot()
+ for l in ['it_IT']: self.__process_language(l)
+
+ def __process_language(self, language_code):
+ self.__language_builder.merge(language_code)
+ self.__language_builder.build_mo(language_code)
class BDistAppsCommand(bdist_apps):
class LanguageBuilder:
'''Tools for building files for l10n.'''
- @staticmethod
- def build_mo(tgt, lng_dir_code, appname):
+ def __init__(self, app_name, po_path, mo_path):
+ self.__app_name = app_name
+ self.__po_path = po_path
+ self.__mo_path = mo_path
+
+ def build_mo(self, language_code):
'''Builds the mo file in the lng_dir_code directory.'''
- lng_code = tgt[len(lng_dir_code):].split('/')[0]
- lng_dir = lng_dir_code + lng_code + '/LC_MESSAGES/'
+ mo_template = '%s%s/LC_MESSAGES/%s.mo'
+ mo_name = mo_template % (self.__mo_path, language_code, self.__app_name)
+ lng_code = mo_name[len(self.__mo_path):].split('/')[0]
+ lng_dir = self.__mo_path + lng_code + '/LC_MESSAGES/'
cmd = 'msgfmt -o {lng_dir}{appname}.mo assets/locale/po/{lng_code}.po'
- system(cmd.format(lng_dir=lng_dir, appname=appname, lng_code=lng_code))
+ system(cmd.format(lng_dir=lng_dir, appname=self.__app_name, lng_code=lng_code))
- @staticmethod
- def build_pot(appname, pot_path):
+ def build_pot(self):
'''Builds the pot file in the lng_dir_code directory.'''
find_info = FindFileNamesInfo(['py'])
src_files = ' '.join(find_file_names(find_info))
cmd_tmpl = 'xgettext -ci18n -d {appname} -L python ' + \
'-o {pot_path}{appname}.pot '
- system(cmd_tmpl.format(appname=appname, pot_path=pot_path) + src_files)
+ system(cmd_tmpl.format(appname=self.__app_name, pot_path=self.__po_path) + src_files)
- @staticmethod
- def merge(lng_code, tgt_path, lng_dir, appname):
+ def merge(self, lng_code):
'''Merges the new strings with the previous ones.'''
- lng_base_dir = LanguageBuilder.__prepare(lng_dir, lng_code, appname)
- LanguageBuilder.__merge(lng_base_dir, lng_code, appname, tgt_path)
- LanguageBuilder.__postprocess(lng_code)
+ lng_base_dir = self.__prepare(lng_code)
+ self.__merge(lng_base_dir, lng_code)
+ self.__postprocess(lng_code)
- @staticmethod
- def __prepare(lng_base_dir, lng, appname):
+ def __prepare(self, lng_code):
'''Prepares a directory for working with languages.'''
- makedirs(lng_base_dir + lng + '/LC_MESSAGES', exist_ok=True)
- lng_dir = lng_base_dir + lng + '/LC_MESSAGES/'
- if not exists('assets/locale/po/' + lng + '.po'):
+ makedirs(self.__mo_path + lng_code + '/LC_MESSAGES', exist_ok=True)
+ lng_dir = self.__mo_path + lng_code + '/LC_MESSAGES/'
+ if not exists('assets/locale/po/' + lng_code + '.po'):
lines_to_fix = ['CHARSET/UTF-8', 'ENCODING/8bit']
- [LanguageBuilder.__fix_line(line, lng_dir, appname)
+ [self.__fix_line(line, lng_dir)
for line in lines_to_fix]
- copy(lng_dir + appname + '.pot', lng_dir + appname + '.po')
+ copy(lng_dir + self.__app_name + '.pot', lng_dir + self.__app_name + '.po')
return lng_dir
- @staticmethod
- def __fix_line(line, lng_dir, appname):
+ def __fix_line(self, line, lng_dir):
'''Fixes po files (misaligned entries).'''
cmd_tmpl = "sed 's/{line}/' {lng_dir}{appname}.pot > " + \
"{lng_dir}{appname}tmp.po"
- system(cmd_tmpl.format(line=line, lng_dir=lng_dir, appname=appname))
- move(lng_dir + appname + 'tmp.po', lng_dir + appname + '.pot')
+ system(cmd_tmpl.format(line=line, lng_dir=lng_dir, appname=self.__app_name))
+ move(lng_dir + self.__app_name + 'tmp.po', lng_dir + self.__app_name + '.pot')
- @staticmethod
- def __merge(lng_dir, lng_code, appname, tgt_path):
+ def __merge(self, lng_dir, lng_code):
'''Manages the msgmerge's invokation.'''
print('merge', lng_dir)
cmd = 'msgmerge -o {lng_dir}{appname}merge.po ' + \
'{tgt_path}{lng_code}.po {tgt_path}{appname}.pot'
- cmd = cmd.format(lng_dir=lng_dir, lng_code=lng_code, appname=appname,
- tgt_path=tgt_path)
+ cmd = cmd.format(lng_dir=lng_dir, lng_code=lng_code, appname=self.__app_name,
+ tgt_path=self.__po_path)
system(cmd)
- copy(lng_dir + appname + 'merge.po',
+ copy(lng_dir + self.__app_name + 'merge.po',
'assets/locale/po/%s.po' % lng_code)
poname_tmpl = '{lng_dir}{appname}merge.po'
- remove(poname_tmpl.format(lng_dir=lng_dir, appname=appname))
+ remove(poname_tmpl.format(lng_dir=lng_dir, appname=self.__app_name))
- @staticmethod
- def __postprocess(lng_code):
+ def __postprocess(self, lng_code):
'''Fixes po files at the end of the building process.'''
lines = open('assets/locale/po/%s.po' % lng_code, 'r').readlines()
with open('assets/locale/po/%s.po' % lng_code, 'w') as outf: