Mercurial > babel > old > babel-test
changeset 313:559c80b1ffb2
Merging catalogs would sometimes mix translations from different runs.
author | cmlenz |
---|---|
date | Fri, 01 Feb 2008 14:46:32 +0000 |
parents | 61e6b1933af4 |
children | 5e80cf8e3299 |
files | ChangeLog babel/messages/catalog.py babel/messages/tests/catalog.py |
diffstat | 3 files changed, 19 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,8 @@ * Fixed catalogs' charset values not being recognized (ticket #66). * Fixed fuzzy matching when updating message catalogs (ticket #82). + * Fixed bug in catalog updating, that in some cases pulled in + translations from different catalogs based on the same template. Version 0.9.1
--- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -92,6 +92,11 @@ return cmp(self.id, obj.id[0]) return cmp(self.id, obj.id) + def clone(self): + return Message(self.id, self.string, self.locations, self.flags, + self.auto_comments, self.user_comments, + self.previous_id, self.lineno) + def fuzzy(self): return 'fuzzy' in self.flags fuzzy = property(fuzzy, doc="""\ @@ -624,6 +629,7 @@ fuzzy_matches = set() def _merge(message, oldkey, newkey): + message = message.clone() fuzzy = False if oldkey != newkey: fuzzy = True
--- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -174,6 +174,17 @@ cat.update(tmpl, no_fuzzy_matching=True) self.assertEqual(2, len(cat.obsolete)) + def test_update_no_template_mutation(self): + tmpl = catalog.Catalog() + tmpl.add('foo') + cat1 = catalog.Catalog() + cat1.add('foo', 'Voh') + cat1.update(tmpl) + cat2 = catalog.Catalog() + cat2.update(tmpl) + + self.assertEqual(None, cat2['foo'].string) + self.assertEqual(False, cat2['foo'].fuzzy) def suite(): suite = unittest.TestSuite()