]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
Fuzzy matching regarding plurals should *NOT* be checked against `len(message.id...
authorPedro Algarvio <pedro@algarvio.me>
Sat, 10 Jan 2009 22:42:01 +0000 (22:42 +0000)
committerPedro Algarvio <pedro@algarvio.me>
Sat, 10 Jan 2009 22:42:01 +0000 (22:42 +0000)
babel/messages/catalog.py
babel/messages/tests/catalog.py

index f6327dcc1973b59dd43e219a835c82c1e84e9480..fec39b34bc65ced53541e438086ec46e613601bd 100644 (file)
@@ -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)):
index 586ae283b9a83f10de79cbabb332e6cb5fb966aa..104dd6a60cd2735cad42e8c92130d98df3141a5b 100644 (file)
@@ -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')