From: Pedro Algarvio Date: Sat, 10 Jan 2009 22:42:01 +0000 (+0000) Subject: Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id... X-Git-Tag: 1.0~265 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a373362e480690b7b7dac0617d0af0d1e990e95;p=thirdparty%2Fbabel.git Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id)` because this is always 2, instead, it's should be checked against `catalog.num_plurals`. --- diff --git a/babel/messages/catalog.py b/babel/messages/catalog.py index f6327dcc..fec39b34 100644 --- a/babel/messages/catalog.py +++ b/babel/messages/catalog.py @@ -710,7 +710,7 @@ class Catalog(object): message.string = tuple( [message.string] + ([u''] * (len(message.id) - 1)) ) - elif len(message.string) != len(message.id): + elif len(message.string) != self.num_plurals: fuzzy = True message.string = tuple(message.string[:len(oldmsg.string)]) elif isinstance(message.string, (list, tuple)): diff --git a/babel/messages/tests/catalog.py b/babel/messages/tests/catalog.py index 586ae283..104dd6a6 100644 --- a/babel/messages/tests/catalog.py +++ b/babel/messages/tests/catalog.py @@ -215,6 +215,19 @@ class CatalogTestCase(unittest.TestCase): cat.update(tmpl, no_fuzzy_matching=True) self.assertEqual(2, len(cat.obsolete)) + def test_fuzzy_matching_regarding_plurals(self): + cat = catalog.Catalog() + cat.add(('foo', 'foh'), ('foo', 'foh')) + ru = copy.copy(cat) + ru.locale = 'ru_RU' + ru.update(cat) + self.assertEqual(True, ru['foo'].fuzzy) + ru = copy.copy(cat) + ru.locale = 'ru_RU' + ru['foo'].string = ('foh', 'fohh', 'fohhh') + ru.update(cat) + self.assertEqual(False, ru['foo'].fuzzy) + def test_update_no_template_mutation(self): tmpl = catalog.Catalog() tmpl.add('foo')