def execute(self, context): global _cached_enum_addons _cached_enum_addons[:] = [] if not hasattr(self, "settings"): self.settings = settings.settings i18n_sett = context.window_manager.i18n_update_svn_settings module_name, mod = validate_module(self, context) # Generate addon-specific messages (no need for another blender instance here, this should not have any # influence over the final result). pot = bl_extract_messages.dump_addon_messages(module_name, True, self.settings) # Now (try to) get current i18n data from the addon... path = mod.__file__ if path.endswith("__init__.py"): path = os.path.dirname(path) trans = utils_i18n.I18n(kind='PY', src=path, settings=self.settings) uids = set() for lng in i18n_sett.langs: if lng.uid in self.settings.IMPORT_LANGUAGES_SKIP: print( "Skipping {} language ({}), edit settings if you want to enable it." .format(lng.name, lng.uid)) continue if not lng.use: print("Skipping {} language ({}).".format(lng.name, lng.uid)) continue uids.add(lng.uid) # For now, add to processed uids all those not found in "official" list, minus "tech" ones. uids |= ( trans.trans.keys() - {lng.uid for lng in i18n_sett.langs} - {self.settings.PARSER_TEMPLATE_ID, self.settings.PARSER_PY_ID}) # And merge! for uid in uids: if uid not in trans.trans: trans.trans[uid] = utils_i18n.I18nMessages( uid=uid, settings=self.settings) trans.trans[uid].update(pot, keep_old_commented=False) trans.trans[self.settings.PARSER_TEMPLATE_ID] = pot # For now we write all languages found in this trans! trans.write(kind='PY') return {'FINISHED'}
def execute(self, context): global _cached_enum_addons _cached_enum_addons[:] = [] if not hasattr(self, "settings"): self.settings = settings.settings i18n_sett = context.window_manager.i18n_update_svn_settings module_name, mod = validate_module(self, context) # Generate addon-specific messages (no need for another blender instance here, this should not have any # influence over the final result). pot = bl_extract_messages.dump_addon_messages(module_name, True, self.settings) # Now (try to) get current i18n data from the addon... path = mod.__file__ if path.endswith("__init__.py"): path = os.path.dirname(path) trans = utils_i18n.I18n(kind='PY', src=path, settings=self.settings) uids = set() for lng in i18n_sett.langs: if lng.uid in self.settings.IMPORT_LANGUAGES_SKIP: print("Skipping {} language ({}), edit settings if you want to enable it.".format(lng.name, lng.uid)) continue if not lng.use: print("Skipping {} language ({}).".format(lng.name, lng.uid)) continue uids.add(lng.uid) # For now, add to processed uids all those not found in "official" list, minus "tech" ones. uids |= (trans.trans.keys() - {lng.uid for lng in i18n_sett.langs} - {self.settings.PARSER_TEMPLATE_ID, self.settings.PARSER_PY_ID}) # And merge! for uid in uids: if uid not in trans.trans: trans.trans[uid] = utils_i18n.I18nMessages(uid=uid, settings=self.settings) trans.trans[uid].update(pot, keep_old_commented=False) trans.trans[self.settings.PARSER_TEMPLATE_ID] = pot # For now we write all languages found in this trans! trans.write(kind='PY') return {'FINISHED'}