[Zope3-dev] Re: Zope 2.9 and Zope 3 i18n, more questions...

Chris Withers chris at simplistix.co.uk
Fri Jun 2 03:48:33 EDT 2006


Philipp von Weitershausen wrote:
> You would inherit from the default implementation in
> zope.publisher.browser.BrowserLanguages and override
> getPreferredLanguages. Inside I presume you would get the current user
> in the Zope 2 manner, getSecurityManager().getUser(), and do your
> checks. If that won't lead to anything, you can simply return
> super(...).getPreferredLanguages() to default to browser languages.

Cool, thanks. Once I've developed this component, how do I plug it in 
zcml-wise?

>> from Products.PageTemplates.GlobalTranslationService import \
>>       getGlobalTranslationService
>> ts = getGlobalTranslationService()
>> ts.translate(domain,
>>              msgid,
>>              context=self,
>>              target_language=target_language,
>>              default=default)
>>
>> What's the equivalent in Z3 land or should I be looking to turn all
>> calls to the above into MessageID's? If I do, when and how do they get
>> translated?
> 
> 1) We usually don't do manual translation in Python

What about sending notification mails and the like?

> 2) Instead we mark all user strings ("messages") as i18n messages (using
> zope.i18nmessageid.MessageFactory). That also helps the automatic
> extraction utility to find them.

Okay, but what translates these and when?

> 4) In case you *do* need manual translation in Python (sometimes it
> happens), you can call zope.i18n.translate(msgid, context=REQUEST)
> (notice the context is the request here).

Is msgid a string or a MessageID object there?

>> I've made calls to the following too:
>>
>> name = ts.getLanguageName('en',self) #'en' is just an example
>>
>> current = ts.negotiate_language(self,domain) or default
>>
>> languages = [{'code':code,
>>              'name':ts.getLanguageName(code, self),
>>              'selected':current==code} for code in
>>              ts.getLanguages(self,domain)]
>>
>> What are the new-world equivalents of these?
> 
> Why would you need this? 

For UI. Showing language names in the UI and showing a list of available 
languages to let the user pick their own. How would would build these in 
Zope 3? (and, more importantly, in 2.9 with Five?)

>> Finally, Philipp's article suggests that people may want to write
>> message catalog implementations that do the automatic compilation to .mo
>> and/or capture and report untranslated message ids. Has anyone done
>> this? If not, I might well be up for it :-)
> 
> Hanno Schlichting will be working in similar areas, I've heard. Perhaps
> you want to make friends with him :).

Where can I find him?

cheers,

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk


More information about the Zope3-dev mailing list