class MultilanguageTraverse(object): implements(IPublishTraverse) adapts(IAnnotatable, IHTTPRequest) def __init__(self,context,request): self.context = context self.request = request self.default_traverse = DefaultPublishTraverse(context, request) self.handler = IMultilanguageURLHandler(context, None) def publishTraverse(self, request, name): if self.handler is not None: ob = self.handler.get_object(name) if ob is not None: langs = self.handler.get_langs(name) if len(langs) == 1: try: portal_languages = getToolByName(self.context, 'portal_languages') portal_languages.REQUEST.set_lazy('set_language', lambda: langs[0]) portal_languages.setLanguageBindings() except: pass return ob try: return self.default_traverse.publishTraverse(request, name) except NotFound: pass except KeyError: pass except AttributeError: pass raise NotFound(self.context, name, self.request)