diff options
author | Lennart Regebro <regebro@gmail.com> | 2008-07-16 16:59:29 +0000 |
---|---|---|
committer | Lennart Regebro <regebro@gmail.com> | 2008-07-16 16:59:29 +0000 |
commit | 55467991c56f20ef2699741cba00361185a0f7c1 (patch) | |
tree | a9a377c7cada9acd30b2c56e1a47baefe957dcf9 | |
parent | a5aaa5bc0f63ba02c7c488615caa2fa78a708525 (diff) | |
download | zope-i18n-regebro-pluralsupport.tar.gz |
Changed the API. It's unwieldy as it is, so better have separate methods regebro-pluralsupport
for plurals.
-rw-r--r-- | src/zope/i18n/gettextmessagecatalog.py | 48 | ||||
-rw-r--r-- | src/zope/i18n/tests/en-default.mo | bin | 479 -> 478 bytes | |||
-rw-r--r-- | src/zope/i18n/tests/en-default.po | 2 | ||||
-rw-r--r-- | src/zope/i18n/tests/test_imessagecatalog.py | 27 |
4 files changed, 55 insertions, 22 deletions
diff --git a/src/zope/i18n/gettextmessagecatalog.py b/src/zope/i18n/gettextmessagecatalog.py index 596ce1a..0d7c8b6 100644 --- a/src/zope/i18n/gettextmessagecatalog.py +++ b/src/zope/i18n/gettextmessagecatalog.py @@ -23,6 +23,9 @@ from zope.interface import implements class _KeyErrorRaisingFallback(object): def ugettext(self, message): raise KeyError(message) + + def ungettext(self, message, message2, n): + raise KeyError(message) class GettextMessageCatalog(object): @@ -46,31 +49,40 @@ class GettextMessageCatalog(object): finally: fp.close() - def getMessage(self, id, n=None): + def getMessage(self, id): 'See IMessageCatalog' - if n is None: - return self._catalog.ugettext(id) - else: - msg = self._catalog.ungettext(id, id, n) - try: - return msg % n - except TypeError: - return msg + return self._catalog.ugettext(id) + + def getPluralMessage(self, id1, id2, n): + 'See IMessageCatalog' + msg = self._catalog.ungettext(id1, id2, n) + try: + return msg % n + except TypeError: + return msg - def queryMessage(self, id, default=None, n=None): + def queryMessage(self, id, default=None): 'See IMessageCatalog' try: - if n is None: - return self._catalog.ugettext(id) - else: - msg = self._catalog.ungettext(id, id, n) - try: - return msg % n - except TypeError: - return msg + return self._catalog.ugettext(id) except KeyError: return default + def queryPluralMessage(self, id1, id2, n, default1=None, default2=None): + 'See IMessageCatalog' + try: + msg = self._catalog.ungettext(id1, id2, n) + except KeyError: + if n == 1: + msg = default1 + else: + msg = default2 + try: + return msg % n + except TypeError: + return msg + + def getIdentifier(self): 'See IMessageCatalog' return self._path_to_file diff --git a/src/zope/i18n/tests/en-default.mo b/src/zope/i18n/tests/en-default.mo Binary files differindex d6eb705..3e9dc9e 100644 --- a/src/zope/i18n/tests/en-default.mo +++ b/src/zope/i18n/tests/en-default.mo diff --git a/src/zope/i18n/tests/en-default.po b/src/zope/i18n/tests/en-default.po index fbe0694..fc45a11 100644 --- a/src/zope/i18n/tests/en-default.po +++ b/src/zope/i18n/tests/en-default.po @@ -14,7 +14,7 @@ msgstr "Hello!" msgid "greeting" msgstr "Hello $name, how are you?" -msgid "There are %d files." +msgid "There is one file." msgid_plural "There are %d files." msgstr[0] "There is one file." msgstr[1] "There are %d files." diff --git a/src/zope/i18n/tests/test_imessagecatalog.py b/src/zope/i18n/tests/test_imessagecatalog.py index fa4d2c0..eb42f81 100644 --- a/src/zope/i18n/tests/test_imessagecatalog.py +++ b/src/zope/i18n/tests/test_imessagecatalog.py @@ -49,13 +49,34 @@ class TestIMessageCatalog(unittest.TestCase): self.assertEqual(catalog.queryMessage('foo'), None) self.assertEqual(catalog.queryMessage('foo', 'bar'), 'bar') - def testPluralMessage(self): + def testGetPluralMessage(self): catalog = self._catalog - self.assertEqual(catalog.getMessage('There are %d files.', n=1), + self.assertEqual(catalog.getPluralMessage( + 'There is one file.', 'There are %d files.', 1), 'There is one file.') - self.assertEqual(catalog.getMessage('There are %d files.', n=3), + self.assertEqual(catalog.getPluralMessage( + 'There is one file.', 'There are %d files.', 3), 'There are 3 files.') + self.assertRaises(KeyError, catalog.getPluralMessage, + 'There are %d files.', 'bar', 6) + def testQeuryPluralMessage(self): + catalog = self._catalog + self.assertEqual(catalog.queryPluralMessage( + 'There is one file.', 'There are %d files.', 1), + 'There is one file.') + self.assertEqual(catalog.queryPluralMessage( + 'There is one file.', 'There are %d files.', 3), + 'There are 3 files.') + self.assertEqual(catalog.queryPluralMessage( + 'There are %d files.', 'There is one file.', 1, + 'There is one file.', 'There are %d files.', ), + 'There is one file.') + self.assertEqual(catalog.queryPluralMessage( + 'There are %d files.', 'There is one file.', 3, + 'There is one file.', 'There are %d files.', ), + 'There are 3 files.') + def testGetLanguage(self): catalog = self._catalog self.assertEqual(catalog.language, 'en') |