[Zope] five i18n

Martijn Faassen faassen at infrae.com
Wed Jan 18 09:40:16 EST 2006


Lennart Regebro wrote:
> On 1/18/06, Jürgen Herrmann <Juergen.Herrmann at xlhost.de> wrote:

>>- how can i set the target language for the translation in the zpt?
> 
> 
> That's tricky! :) You need either Localizer or the plone tool for that
> now, I think. But it's mentioned in the documentation. By default it
> just picks the language from the list of languages in your browser, I
> think?
> 

Yeah, it does. In Silva 1.5, under development, I've overridden an 
adapter that negotates the language to also consult a cookie 
('silva_language') and this appears to work.

Here's the code:

from zope.publisher.browser import BrowserLanguages

# new language extractor that looks in the silva_language cookie first,
# then fall back on browser setting
class SilvaLanguages(BrowserLanguages):
     def getPreferredLanguages(self):
         languages = super(
             SilvaLanguages, self).getPreferredLanguages()
         cookie_language = self.request.cookies.get('silva_language')
         if cookie_language is not None:
             languages = [cookie_language] + languages
         return languages

and then some ZCML in overrides.zcml in the product:

   <adapter
      for="zope.publisher.interfaces.http.IHTTPRequest"
      provides="zope.i18n.interfaces.IUserPreferredLanguages"
      factory=".adapters.languageprovider.SilvaLanguages"
     />

It's not perfect that this override is global now, but I guess 
eventually we could make it a local adapter override for the Silva site..

Regards,

Martijn


More information about the Zope mailing list