[Checkins] SVN: zope.i18n/trunk/ Fix translation domains translating a message for a different domain. In the
Brian Sutherland
jinty at web.de
Tue Apr 14 08:10:03 EDT 2009
Log message for revision 99162:
Fix translation domains translating a message for a different domain. In the
process, fix testMessageIDTranslateForDifferentDomain which seemed to work by
mistake as the "other" and "default" domains used the same catalog. This is
basically a reversion of 39991.
Changed:
U zope.i18n/trunk/CHANGES.txt
U zope.i18n/trunk/src/zope/i18n/tests/test_translationdomain.py
U zope.i18n/trunk/src/zope/i18n/translationdomain.py
-=-
Modified: zope.i18n/trunk/CHANGES.txt
===================================================================
--- zope.i18n/trunk/CHANGES.txt 2009-04-13 21:44:50 UTC (rev 99161)
+++ zope.i18n/trunk/CHANGES.txt 2009-04-14 12:10:02 UTC (rev 99162)
@@ -5,7 +5,10 @@
3.7.1 (unreleased)
------------------
-- ...
+- Fix translation domains translating a message for a different domain. In the
+ process, fix testMessageIDTranslateForDifferentDomain which seemed to work by
+ mistake as the "other" and "default" domains used the same catalog. This is
+ basically a reversion of 39991.
3.7.0 (2009-03-18)
Modified: zope.i18n/trunk/src/zope/i18n/tests/test_translationdomain.py
===================================================================
--- zope.i18n/trunk/src/zope/i18n/tests/test_translationdomain.py 2009-04-13 21:44:50 UTC (rev 99161)
+++ zope.i18n/trunk/src/zope/i18n/tests/test_translationdomain.py 2009-04-14 12:10:02 UTC (rev 99162)
@@ -126,21 +126,19 @@
translate(u'Color: ${color1}/${color2}', mapping=mapping,
target_language='en'))
-
-
def testMessageIDTranslateForDifferentDomain(self):
- domain = TranslationDomain('other')
+ domain = TranslationDomain('alt')
path = testdir()
- en_catalog = GettextMessageCatalog('en', 'other',
- os.path.join(path, 'en-default.mo'))
+ en_catalog = GettextMessageCatalog('en', 'alt',
+ os.path.join(path, 'en-alt.mo'))
domain.addCatalog(en_catalog)
- zope.component.provideUtility(domain, ITranslationDomain, 'other')
+ zope.component.provideUtility(domain, ITranslationDomain, 'alt')
- factory = MessageFactory('other')
- msgid = factory(u'short_greeting', 'default')
+ factory = MessageFactory('alt')
+ msgid = factory(u'special', 'default')
self.assertEqual(
- self._domain.translate(msgid, target_language='en'), u'Hello!')
+ self._domain.translate(msgid, target_language='en'), u'Wow')
def testSimpleFallbackTranslation(self):
translate = self._domain.translate
Modified: zope.i18n/trunk/src/zope/i18n/translationdomain.py
===================================================================
--- zope.i18n/trunk/src/zope/i18n/translationdomain.py 2009-04-13 21:44:50 UTC (rev 99161)
+++ zope.i18n/trunk/src/zope/i18n/translationdomain.py 2009-04-14 12:10:02 UTC (rev 99162)
@@ -77,16 +77,18 @@
target_language = negotiator.getLanguage(langs, context)
return self._recursive_translate(
- msgid, mapping, target_language, default)
+ msgid, mapping, target_language, default, context)
def _recursive_translate(self, msgid, mapping, target_language, default,
- seen=None):
+ context, seen=None):
"""Recursively translate msg."""
# MessageID attributes override arguments
if isinstance(msgid, Message):
if msgid.domain != self.domain:
util = zope.component.getUtility(
ITranslationDomain, msgid.domain)
+ return util.translate(msgid, mapping, context,
+ target_language, default)
default = msgid.default
mapping = msgid.mapping
@@ -107,7 +109,7 @@
value)
mapping[key] = self._recursive_translate(
value, mapping, target_language,
- default, seen)
+ default, context, seen)
if default is None:
default = unicode(msgid)
More information about the Checkins
mailing list