[Checkins]
SVN: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/
Fiddling a bit aiming at plural support that is both flexible
and easy
Lennart Regebro
regebro at gmail.com
Wed Jul 16 09:35:48 EDT 2008
Log message for revision 88401:
Fiddling a bit aiming at plural support that is both flexible and easy
to use from templates.
Changed:
U zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/gettextmessagecatalog.py
U zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/en-default.mo
U zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/en-default.po
A zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/pl-default.mo
A zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/pl-default.po
U zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/test_imessagecatalog.py
U zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/translationdomain.py
-=-
Modified: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/gettextmessagecatalog.py
===================================================================
--- zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/gettextmessagecatalog.py 2008-07-16 13:34:18 UTC (rev 88400)
+++ zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/gettextmessagecatalog.py 2008-07-16 13:35:48 UTC (rev 88401)
@@ -46,14 +46,28 @@
finally:
fp.close()
- def getMessage(self, id):
+ def getMessage(self, id, n=None):
'See IMessageCatalog'
- return self._catalog.ugettext(id)
+ 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
- def queryMessage(self, id, default=None):
+ def queryMessage(self, id, default=None, n=None):
'See IMessageCatalog'
try:
- return self._catalog.ugettext(id)
+ 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
except KeyError:
return default
Modified: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/en-default.mo
===================================================================
(Binary files differ)
Modified: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/en-default.po
===================================================================
--- zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/en-default.po 2008-07-16 13:34:18 UTC (rev 88400)
+++ zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/en-default.po 2008-07-16 13:35:48 UTC (rev 88401)
@@ -6,9 +6,15 @@
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=ISO-8859-1\n"
"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
msgid "short_greeting"
msgstr "Hello!"
msgid "greeting"
msgstr "Hello $name, how are you?"
+
+msgid "There are %d files."
+msgid_plural "There are %d files."
+msgstr[0] "There is one file."
+msgstr[1] "There are %d files."
Added: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/pl-default.mo
===================================================================
(Binary files differ)
Property changes on: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/pl-default.mo
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/pl-default.po
===================================================================
--- zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/pl-default.po (rev 0)
+++ zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/pl-default.po 2008-07-16 13:35:48 UTC (rev 88401)
@@ -0,0 +1,21 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: Zope 3\n"
+"PO-Revision-Date: 2008-07-12 11:22+0100\n"
+"Last-Translator: Zope 3 contributors\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+msgid "short_greeting"
+msgstr "Cze¶æ!"
+
+msgid "greeting"
+msgstr "Cze¶æ $name, jak siê masz?"
+
+msgid "There is %d file."
+msgid_plural "There are %d files."
+msgstr[0] "Istnieje %d plik."
+msgstr[1] "Istniej± %d pliki."
+msgstr[2] "Istniej± %d plików."
Modified: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/test_imessagecatalog.py
===================================================================
--- zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/test_imessagecatalog.py 2008-07-16 13:34:18 UTC (rev 88400)
+++ zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/tests/test_imessagecatalog.py 2008-07-16 13:35:48 UTC (rev 88401)
@@ -49,6 +49,12 @@
self.assertEqual(catalog.queryMessage('foo'), None)
self.assertEqual(catalog.queryMessage('foo', 'bar'), 'bar')
+ def testPluralMessage(self):
+ catalog = self._catalog
+ self.assertEqual(catalog.getMessage('There are %d files.', n=1),
+ 'There is one file.')
+ self.assertEqual(catalog.getMessage('There are %d files.', n=3),
+ 'There are 3 files.')
def testGetLanguage(self):
catalog = self._catalog
Modified: zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/translationdomain.py
===================================================================
--- zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/translationdomain.py 2008-07-16 13:34:18 UTC (rev 88400)
+++ zope.i18n/branches/regebro-pluralsupport/src/zope/i18n/translationdomain.py 2008-07-16 13:35:48 UTC (rev 88401)
@@ -127,6 +127,8 @@
# single catalog. More importantly, it is extremely helpful
# when testing and the test language is used, because it
# allows the test language to get the default.
+ #if target_language == 'en':
+ #import pdb;pdb.set_trace()
text = self._data[catalog_names[0]].queryMessage(
msgid, default)
else:
More information about the Checkins
mailing list