def test_translate(self): test_keys = ['foo', 'bar', 'blarf', 'washington'] engine = POEngine() engine.file = 'foo.pt' for key in test_keys: engine.translate(key, 'domain') for key in test_keys: self.assertTrue(key in engine.catalog['domain'], "POEngine catalog does not properly store message ids" )
def test_translate(self): test_keys = ['foo', 'bar', 'blarf', 'washington'] engine = POEngine() engine.file = 'foo.pt' for key in test_keys: engine.translate(key, 'domain') for key in test_keys: self.assertIn( key, engine.catalog['domain'], "POEngine catalog does not properly store message ids")
def test_translate_existing(self): engine = POEngine() # This tries to reproduce a big surfacing in a template of # PloneSoftwareCenter when using the i18ndude package to # extract translatable strings, which uses zope.tal. The # relevant html snippet is this: # # <a href="#" title="Read more…" # i18n:attributes="title label_read_more" # tal:attributes="href release/absolute_url"> # <span i18n:translate="label_read_more">Read more…</span> # </a> # # Due to the different ways that i18n:attributes and # i18n:translate are handled, the attribute gets passed to the # translate method with the html entity interpreted as a # unicode, and the i18n:translate gets passed as a simple # string with the html entity intact. That may need a fix # elsewhere, but at the moment it gives a warning. The very # least we can do is make sure that this does not give a # UnicodeDecodeError, which is what we test here. engine.file = 'psc_release_listing.pt' # position is position in file. engine.translate('foo', 'domain', default=u'Read more\u2026', position=7) # Adding the same key with the same default is fine. engine.translate('foo', 'domain', default=u'Read more\u2026', position=13) # Adding the same key with a different default is bad and # triggers a warning. with warnings.catch_warnings(record=True) as log: warnings.simplefilter("always") engine.translate('foo', 'domain', default='Read still more…', position=42) self.assertEqual(len(log), 1) message = log[0].message with tempfile.TemporaryFile('w+') as printfile: print(message, file=printfile) printfile.seek(0) self.assertTrue("already exists with a different default" in printfile.read())