[Zope3-dev] Use case not covered for translation of message ids

Godefroid Chapelle gotcha at bubblenet.be
Sat Sep 18 10:18:49 EDT 2004


Hi

While working at the mountain sprint on the port of message ids to Z2, 
we found that the following code is badly processed by zope 3:

<div tal:content="string:My content item is of type ${type_msgid}." />

Currently, the message id is not translated : the id is concatenated to 
the text in the string expression.

It can be said that the above example is contrived as the text above 
will never be translated.

The ideal code should be :

<div i18n:translate="">My content item is of type <span 
tal:replace="type_msgid" i18n:name="type" />.</div>

Anyway, in the first case, the developer has made its part of the i18n 
job : he has stated that type is to be translated. Even if the template 
designer did not make his part, we think the message id should be 
translated.

Please find hereunder a fix to the class StringExpr of 
zope/tales/expressions.py which allows the user to see the translated 
message id.

from zope.i18n.messageid import MessageID


     def __call__(self, econtext):
         vvals = []
         for var in self._vars:
             v = var(econtext)
             if isinstance(v, MessageID):
                 v = econtext.translate(v, domain=v.domain,
                         mapping=v.mapping, default=v.default)
             vvals.append(v)
         return self._expr % tuple(vvals)

--
Godefroid with Jurgen Kartnaller






More information about the Zope3-dev mailing list