[Zope3-dev] Re: MessageID's automatic translation in TAL

Philipp von Weitershausen philipp at weitershausen.de
Sun May 8 10:01:20 EDT 2005


Stephan Richter wrote:
> On Friday 06 May 2005 10:11, Dmitry Vasiliev wrote:
> 
>>Opinions?
> 
> Dimitry, I am sorry. There was already a papal's edict on the issue:
> 
> http://mail.zope.org/pipermail/zope3-dev/2004-September/012186.html
> 
> That means, message ids must be translated explicitely using i18n:translate. 
> So, Dimitry, you can go ahead and deprecate the implict tranlation of message 
> ids.

Great. I guess that also means backing out most of r30249.

Btw, I dug through the thread and found an 'interesting' edge case that 
we might want to look into as well. Imagine you have

   <span tal:content="view/getMeSomeI18nMessage"
         i18n:translate="explicit_message_id"
         />

IMO, this shouldn't happen, meaning it should be a syntax error to use 
tal:content and an explicit message id in i18n:translate in the same 
tag. Maybe this was already fixed, but I would guess not.


A note about the edict:

The edict doesn't rule out a change of semantics, provided it was 
written out in a proposal. For example, thinking about the above edge 
case, it struck me that i18n:translate is really used for two things:

a) Translating a static string in the template

   <p i18n:translate="heading-greeting">Greetings, user!</p>

b) Translating a message id coming from Python code:

   <p tal:content="view/getAnI18nMessage" i18n:translate="">...</p>

So, i18n:translate has two different semantics, depending whether you're 
using it for case a) or b). In case b), for example, stating an explicit 
message id is nonsense, as I've stated in the edge case above.

So, here's an idea: Let's limit the use of i18n:translate to case a) and 
introduce i18n versions of tal:content and tal:replace that mean "insert 
the message id and translate it". It would look like that:

  <span i18n:content="view/getAnI18nMessage">...</span>

instead of

   <span tal:content="view/getAnI18nMessage" i18n:translate="">...</span>

The latter would be deprecated/forbidden. That would get rid of any 
ambiguity regarding i18n:translate and thus also a lot easier for 
message id extraction tools. They wouldn't collect false message ids 
anymore.

Also, we could even require the input of i18n:content to always be an 
i18n message id. So, if view.getAnI18nMessage() return a mere string, it 
wouldn't be translated. But maybe there are use cases against this.

Thoughts?

Philipp


More information about the Zope3-dev mailing list