def recompile_mo(self, use_fuzzy=False): locale = str(self.locale) po_filename = os.path.join(self.path, 'LC_MESSAGES', 'messages.po') mo_filename = os.path.join(self.path, 'LC_MESSAGES', 'messages.mo') po_file = self.pod.open_file(po_filename) try: catalog = pofile.read_po(po_file, locale) finally: po_file.close() num_translated = 0 num_total = 0 for message in list(catalog)[1:]: if message.string: num_translated += 1 num_total += 1 if catalog.fuzzy and not use_fuzzy: logging.info('Catalog {} is marked as fuzzy, skipping.'.format(po_filename)) try: for message, errors in catalog.check(): for error in errors: logging.error('Error: {}:{}: {}'.format(po_filename, message.lineno, error)) except IOError: logging.info('Skipped catalog check.') text = 'Compiling {}/{} translated strings to {}' logging.info(text.format(num_translated, num_total, mo_filename)) mo_file = self.pod.open_file(mo_filename, 'w') try: mofile.write_mo(mo_file, catalog, use_fuzzy=use_fuzzy) finally: mo_file.close()
def recompile_mo(self, use_fuzzy=False): locale = self.locale po_filename = os.path.join(self.path, 'LC_MESSAGES', 'messages.po') mo_filename = os.path.join(self.path, 'LC_MESSAGES', 'messages.mo') po_file = self.pod.open_file(po_filename) try: catalog = pofile.read_po(po_file, locale) finally: po_file.close() num_translated = 0 for message in list(catalog)[1:]: if message.string: num_translated += 1 percentage = 0 if len(catalog): percentage = num_translated * 100 // len(catalog) logging.info( '{} of {} messages ({}%) translated in {} so far.'.format( num_translated, len(catalog), percentage, po_filename)) if catalog.fuzzy and not use_fuzzy: logging.info('Catalog {} is marked as fuzzy, skipping.'.format(po_filename)) try: for message, errors in catalog.check(): for error in errors: logging.error('Error: {}:{}: {}'.format(po_filename, message.lineno, error)) except IOError: logging.info('Skipped catalog check.') logging.info('Compiling catalog {} to {}'.format(po_filename, mo_filename)) mo_file = self.pod.open_file(mo_filename, 'w') try: mofile.write_mo(mo_file, catalog, use_fuzzy=use_fuzzy) finally: mo_file.close()