diff options
author | Gary Poster <gary@zope.com> | 2005-04-15 16:20:02 +0000 |
---|---|---|
committer | Gary Poster <gary@zope.com> | 2005-04-15 16:20:02 +0000 |
commit | b644002825387148f537ded845635823f6265644 (patch) | |
tree | 88a16bdc33dcb12c0f58a46c807d5eac666ac0b5 | |
parent | 7ae0a071d5fcd559cb2959660fec557b74e30270 (diff) | |
download | zope-tal-b644002825387148f537ded845635823f6265644.tar.gz |
Teach tal about the new i18nmessageid.Message class.
-rw-r--r-- | dummyengine.py | 8 | ||||
-rw-r--r-- | talinterpreter.py | 6 | ||||
-rw-r--r-- | tests/test_talinterpreter.py | 16 |
3 files changed, 20 insertions, 10 deletions
diff --git a/dummyengine.py b/dummyengine.py index 59d3eff..f75ebe6 100644 --- a/dummyengine.py +++ b/dummyengine.py @@ -21,7 +21,7 @@ from zope.interface import implements from zope.tal.taldefs import NAME_RE, TALExpressionError, ErrorInfo from zope.tal.interfaces import ITALExpressionCompiler, ITALExpressionEngine from zope.i18n.interfaces import ITranslationDomain -from zope.i18nmessageid import MessageID +from zope.i18nmessageid import MessageID, Message Default = object() @@ -137,7 +137,7 @@ class DummyEngine(object): def evaluateText(self, expr): text = self.evaluate(expr) - if isinstance(text, (str, unicode, MessageID)): + if isinstance(text, (str, unicode, MessageID, Message)): return text if text is not None and text is not Default: text = str(text) @@ -280,10 +280,12 @@ class DummyTranslationDomain(object): # by calling that method. # MessageID attributes override arguments - if isinstance(msgid, MessageID): + if isinstance(msgid, (MessageID, Message)): domain = msgid.domain mapping = msgid.mapping default = msgid.default + if default is None: # Message doesn't substitute itself for + default = msgid # missing default # simulate an unknown msgid by returning None if msgid == "don't translate me": diff --git a/talinterpreter.py b/talinterpreter.py index 3aec924..a88a6b0 100644 --- a/talinterpreter.py +++ b/talinterpreter.py @@ -21,7 +21,7 @@ import sys # Do not use cStringIO here! It's not unicode aware. :( from StringIO import StringIO -from zope.i18nmessageid import MessageID +from zope.i18nmessageid import MessageID, Message from zope.tal.taldefs import quote, TAL_VERSION, METALError from zope.tal.taldefs import isCurrentVersion from zope.tal.taldefs import getProgramVersion, getProgramMode @@ -579,7 +579,7 @@ class TALInterpreter(object): if text is self.Default: self.interpret(stuff[1]) return - if isinstance(text, MessageID): + if isinstance(text, (MessageID, Message)): # Translate this now. text = self.engine.translate(text) # '&' must be done first! @@ -618,7 +618,7 @@ class TALInterpreter(object): value = self.engine.evaluate(expression) # evaluate() does not do any I18n, so we do it here. - if isinstance(value, MessageID): + if isinstance(value, (MessageID, Message)): # Translate this now. value = self.engine.translate(value) diff --git a/tests/test_talinterpreter.py b/tests/test_talinterpreter.py index 5400c7e..d71378c 100644 --- a/tests/test_talinterpreter.py +++ b/tests/test_talinterpreter.py @@ -27,7 +27,7 @@ from zope.tal.htmltalparser import HTMLTALParser from zope.tal.talinterpreter import TALInterpreter from zope.tal.dummyengine import DummyEngine, DummyTranslationDomain from zope.tal.tests import utils -from zope.i18nmessageid import MessageID +from zope.i18nmessageid import MessageID, Message class TestCaseBase(unittest.TestCase): @@ -145,11 +145,13 @@ class MacroExtendTestCase(TestCaseBase): self.assertEqual(actual, expected) -class I18NCornerTestCase(TestCaseBase): +class I18NCornerTestCaseBase(TestCaseBase): + + factory = None # set in subclass to Message and MessageID def setUp(self): self.engine = DummyEngine() - self.engine.setLocal('foo', MessageID('FoOvAlUe', 'default')) + self.engine.setLocal('foo', self.factory('FoOvAlUe', 'default')) self.engine.setLocal('bar', 'BaRvAlUe') def _check(self, program, expected): @@ -295,6 +297,11 @@ class I18NCornerTestCase(TestCaseBase): "Foo <span tal:replace='bar' i18n:name='bar' /></div>") self._check(program, u"<div>FOO \u00C0</div>\n") +class I18NCornerTestCaseMessageID(I18NCornerTestCaseBase): + factory = MessageID + +class I18NCornerTestCaseMessage(I18NCornerTestCaseBase): + factory = Message class ScriptTestCase(TestCaseBase): @@ -515,7 +522,8 @@ def test_suite(): suite.addTest(unittest.makeSuite(MacroExtendTestCase)) suite.addTest(unittest.makeSuite(OutputPresentationTestCase)) suite.addTest(unittest.makeSuite(ScriptTestCase)) - suite.addTest(unittest.makeSuite(I18NCornerTestCase)) + suite.addTest(unittest.makeSuite(I18NCornerTestCaseMessageID)) + suite.addTest(unittest.makeSuite(I18NCornerTestCaseMessage)) suite.addTest(unittest.makeSuite(TestSourceAnnotations)) # TODO: Deactivated test, since we have not found a solution for this and |