def test_order(self): handler = POHandler(os.path.join( os.path.dirname(__file__), 'copyright.po') ) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) cr = Copyright.objects.assign( language=self.language_en, resource=self.resource, owner='CC', year='2014') cr = Copyright.objects.assign( language=self.language_en, resource=self.resource, owner='ZZ', year='2014') cr = Copyright.objects.assign( language=self.language_en, resource=self.resource, owner='BA', year='2015') handler.compile() lines_iterator = handler.compiled_template.split("\n") for n, line in enumerate(lines_iterator): if line == "## Translators:": break line = lines_iterator[n + 1] self.assertTrue('AB' in line) line = lines_iterator[n + 3] self.assertTrue('BA' in line) line = lines_iterator[n + 4] self.assertTrue('CC' in line) line = lines_iterator[n + 6] self.assertTrue('ZZ' in line)
def test_copyright_on_save(self): handler = POHandler(os.path.join( os.path.dirname(__file__), 'copyright.po') ) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) handler.compile() self.assertTrue("AB" in handler.compiled_template)
def test_general_po(self): """ Test with a PO file containing multiple different 'breakable' cases. """ # Empty our resource SourceEntity.objects.filter(resource=self.resource).delete() # Import file with two senteces handler = POHandler('%s/general/test.pot' % os.path.split(__file__)[0]) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) handler.compile() exported_file = polib.pofile(handler.compiled_template) for entry in exported_file: se = SourceEntity.objects.get( string = entry.msgid, context = entry.msgctxt or 'None', resource = self.resource ) if se.pluralized: plurals = Translation.objects.filter( source_entity__resource = self.resource, language = self.resource.source_language, source_entity__string = entry.msgid ).order_by('rule') plural_keys = {} # last rule excluding other(5) lang_rules = self.resource.source_language.get_pluralrules_numbers() # Initialize all plural rules up to the last for p,n in enumerate(lang_rules): plural_keys[str(p)] = "" for n,p in enumerate(plurals): plural_keys[str(n)] = p.string self.assertEqual(entry.msgstr_plural, plural_keys) else: trans = se.get_translation( self.resource.source_language.code, rule=5 ) self.assertEqual(entry.msgstr, trans.string.encode('utf-8'), "Source '%s'"\ " differs from translation %s" % (entry.msgstr, trans.string.encode('utf-8')))
def test_headers_on_pot(self): handler = POHandler(os.path.join( os.path.dirname(__file__), 'tests.pot') ) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) handler.compile() self.assertFalse("FIRST AUTHOR" in handler.compiled_template) handler.compile_pot() self.assertTrue("FIRST AUTHOR" in handler.compiled_template)
def test_headers_on_pot(self): handler = POHandler( os.path.join(os.path.dirname(__file__), 'tests.pot')) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) self.assertNotIn("FIRST AUTHOR", handler.compile()) handler = POTHandler( os.path.join(os.path.dirname(__file__), 'tests.pot')) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) self.assertIn("FIRST AUTHOR", handler.compile())
def test_order(self): handler = POHandler( os.path.join(os.path.dirname(__file__), 'copyright.po')) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) cr = Copyright.objects.assign(language=self.language_en, resource=self.resource, owner='CC', year='2014') cr = Copyright.objects.assign(language=self.language_en, resource=self.resource, owner='ZZ', year='2014') cr = Copyright.objects.assign(language=self.language_en, resource=self.resource, owner='BA', year='2015') compiled_template = handler.compile() lines_iterator = compiled_template.split("\n") for n, line in enumerate(lines_iterator): if line == "# Translators:": break line = lines_iterator[n + 1] self.assertTrue('AB' in line) line = lines_iterator[n + 3] self.assertTrue('BA' in line) line = lines_iterator[n + 4] self.assertTrue('CC' in line) line = lines_iterator[n + 6] self.assertTrue('ZZ' in line)
def test_copyright_on_save(self): handler = POHandler( os.path.join(os.path.dirname(__file__), 'copyright.po')) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) self.assertIn("AB", handler.compile())
def test_general_po(self): """ Test with a PO file containing multiple different 'breakable' cases. """ # Empty our resource SourceEntity.objects.filter(resource=self.resource).delete() # Import file with two senteces handler = POHandler('%s/general/test.pot' % os.path.split(__file__)[0]) handler.bind_resource(self.resource) handler.set_language(self.resource.source_language) handler.parse_file(is_source=True) handler.save2db(is_source=True) exported_file = polib.pofile(handler.compile()) for entry in exported_file: se = SourceEntity.objects.get(string=entry.msgid, context=entry.msgctxt or 'None', resource=self.resource) if se.pluralized: plurals = Translation.objects.filter( source_entity__resource=self.resource, language=self.resource.source_language, source_entity__string=entry.msgid).order_by('rule') plural_keys = {} # last rule excluding other(5) lang_rules = self.resource.source_language.get_pluralrules_numbers( ) # Initialize all plural rules up to the last for p, n in enumerate(lang_rules): plural_keys[str(p)] = "" for n, p in enumerate(plurals): plural_keys[str(n)] = p.string self.assertEqual(entry.msgstr_plural, plural_keys) else: trans = se.get_translation(self.resource.source_language.code, rule=5) self.assertEqual(entry.msgstr, trans.string.encode('utf-8'), "Source '%s'"\ " differs from translation %s" % (entry.msgstr, trans.string.encode('utf-8')))