[Zope3-checkins] SVN: Zope3/branches/3.3/ Fixed issue 646: TAL
interpreter doesn't translate i18n Messages
Dmitry Vasiliev
dima at hlabs.spb.ru
Fri Jul 7 08:17:20 EDT 2006
Log message for revision 69021:
Fixed issue 646: TAL interpreter doesn't translate i18n Messages
when inserted as attributes
Changed:
U Zope3/branches/3.3/doc/CHANGES.txt
U Zope3/branches/3.3/src/zope/tal/talinterpreter.py
U Zope3/branches/3.3/src/zope/tal/tests/test_talinterpreter.py
-=-
Modified: Zope3/branches/3.3/doc/CHANGES.txt
===================================================================
--- Zope3/branches/3.3/doc/CHANGES.txt 2006-07-07 10:47:37 UTC (rev 69020)
+++ Zope3/branches/3.3/doc/CHANGES.txt 2006-07-07 12:17:19 UTC (rev 69021)
@@ -10,6 +10,9 @@
Bugfixes
+ - Fixed issue 646: TAL interpreter doesn't translate i18n
+ Messages when inserted as attributes;
+
- Fixed issue 665: ZCML swallowing KeyboardInterrupt and SystemExit.
- Fixed issue 645: zope.testbrowser truncates document content after
Modified: Zope3/branches/3.3/src/zope/tal/talinterpreter.py
===================================================================
--- Zope3/branches/3.3/src/zope/tal/talinterpreter.py 2006-07-07 10:47:37 UTC (rev 69020)
+++ Zope3/branches/3.3/src/zope/tal/talinterpreter.py 2006-07-07 12:17:19 UTC (rev 69021)
@@ -496,6 +496,10 @@
translated = self.translate(msgid or value, value)
if translated is not None:
value = translated
+ elif isinstance(value, I18nMessageTypes):
+ translated = self.translate(value)
+ if translated is not None:
+ value = translated
if value is None:
value = name
return ["%s=%s" % (name, quote(value))]
Modified: Zope3/branches/3.3/src/zope/tal/tests/test_talinterpreter.py
===================================================================
--- Zope3/branches/3.3/src/zope/tal/tests/test_talinterpreter.py 2006-07-07 10:47:37 UTC (rev 69020)
+++ Zope3/branches/3.3/src/zope/tal/tests/test_talinterpreter.py 2006-07-07 12:17:19 UTC (rev 69021)
@@ -32,6 +32,7 @@
from zope.tal.tests import utils
from zope.i18nmessageid import Message
+
class TestCaseBase(unittest.TestCase):
def _compile(self, source):
@@ -164,6 +165,25 @@
'<span tal:replace="foo" />')
self._check(program, 'FOOVALUE\n')
+ def test_attributes_translation(self):
+ program, macros = self._compile(
+ '<span tal:attributes="test bar"/>')
+ self._check(program, '<span test="BaRvAlUe" />\n')
+
+ program, macros = self._compile(
+ '<span test="bar" i18n:attributes="test"/>')
+ self._check(program, '<span test="BAR" />\n')
+
+ program, macros = self._compile(
+ '<span tal:attributes="test bar" i18n:attributes="test"/>')
+ self._check(program, '<span test="BARVALUE" />\n')
+
+ # i18n messages defined in Python are translated automatically
+ # (no i18n:attributes necessary)
+ program, macros = self._compile(
+ '<span tal:attributes="test foo"/>')
+ self._check(program, '<span test="FOOVALUE" />\n')
+
def test_text_variable_translate(self):
program, macros = self._compile(
'<span tal:content="bar"/>')
@@ -315,7 +335,7 @@
('endScope', ()),
('rawtextOffset', ('.', 1))])),
('endScope', ()),
-('rawtextOffset', ('</div>', 6))
+('rawtextOffset', ('</div>', 6))
]
self._check(program,
'<div>THIS IS TEXT FOR <span>BARVALUE</span>.</div>\n')
@@ -466,7 +486,7 @@
return Message(msgid, domain=domain, default=default, mapping=mapping)
class UnusedExplicitDomainTestCase(I18NCornerTestCaseMessage):
-
+
def setUp(self):
# MultipleDomainsDummyEngine is a Engine
# where default domain transforms to uppercase
More information about the Zope3-Checkins
mailing list