summaryrefslogtreecommitdiff
path: root/src/zope/i18n/tests/test_plurals.py
diff options
context:
space:
mode:
authorSylvain Viollon <sviollon@minddistrict.com>2018-10-22 10:32:54 +0200
committerSylvain Viollon <sviollon@minddistrict.com>2018-10-22 10:32:54 +0200
commit80f8c1e9ff2a48b1142fe5741e90f8fcf35fc0a4 (patch)
tree1b4443354c893b3efc340a0d1245d6894e0eb414 /src/zope/i18n/tests/test_plurals.py
parentb2dafdf8f98e4a5e8e004ad2f16c2bbed1d1bf31 (diff)
downloadzope-i18n-80f8c1e9ff2a48b1142fe5741e90f8fcf35fc0a4.tar.gz
Use ``msgid_plural`` as ``default_plural`` if not provided in ``translate()``.
Diffstat (limited to 'src/zope/i18n/tests/test_plurals.py')
-rw-r--r--src/zope/i18n/tests/test_plurals.py56
1 files changed, 55 insertions, 1 deletions
diff --git a/src/zope/i18n/tests/test_plurals.py b/src/zope/i18n/tests/test_plurals.py
index 4f7813e..12b46cc 100644
--- a/src/zope/i18n/tests/test_plurals.py
+++ b/src/zope/i18n/tests/test_plurals.py
@@ -16,10 +16,13 @@
"""
import os
import unittest
-from zope.i18n import tests
+
+import zope.component
+from zope.i18n import tests, translate
from zope.i18n.translationdomain import TranslationDomain
from zope.i18n.gettextmessagecatalog import GettextMessageCatalog
from zope.i18nmessageid import MessageFactory
+from zope.i18n.interfaces import ITranslationDomain
class TestPlurals(unittest.TestCase):
@@ -38,6 +41,57 @@ class TestPlurals(unittest.TestCase):
domain.addCatalog(catalog)
return domain
+ def test_defaults(self):
+ domain = self._getTranslationDomain('en')
+ zope.component.provideUtility(domain, ITranslationDomain, 'default')
+ self.assertEqual(
+ translate('One apple', domain='default',
+ msgid_plural='%d apples', number=0),
+ '0 apples')
+ self.assertEqual(
+ translate('One apple', domain='default',
+ msgid_plural='%d apples', number=1),
+ 'One apple')
+ self.assertEqual(
+ translate('One apple', domain='default',
+ msgid_plural='%d apples', number=2),
+ '2 apples')
+
+ def test_missing_queryPluralMessage(self):
+ catalog = self._getMessageCatalog('en')
+ self.assertEqual(catalog.language, 'en')
+
+ self.assertEqual(
+ catalog.queryPluralMessage(
+ 'One apple', '%d apples', 0,
+ dft1='One fruit', dft2='%d fruits'),
+ '0 fruits')
+
+ self.assertEqual(
+ catalog.queryPluralMessage(
+ 'One apple.', '%d apples.', 1,
+ dft1='One fruit', dft2='%d fruits'),
+ 'One fruit')
+
+ self.assertEqual(
+ catalog.queryPluralMessage(
+ 'One apple.', '%d apples.', 2,
+ dft1='One fruit', dft2='%d fruits'),
+ '2 fruits')
+
+ def test_missing_getPluralMessage(self):
+ catalog = self._getMessageCatalog('en')
+ self.assertEqual(catalog.language, 'en')
+
+ with self.assertRaises(KeyError):
+ catalog.getPluralMessage('One apple', '%d fruits', 0)
+
+ with self.assertRaises(KeyError):
+ catalog.getPluralMessage('One apple', '%d fruits', 1)
+
+ with self.assertRaises(KeyError):
+ catalog.getPluralMessage('One apple', '%d fruits', 2)
+
def test_GermanPlurals(self):
"""Germanic languages such as english and german share the plural
rule. We test the german here.