[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