def getLanguage(self, langs, env): if not IFtwSubsiteLayer.providedBy(env): return base_negotiator.getLanguage(langs, env) # Get current published object obj = find_context(env) # Filter out CSS/JS and other non contentish objects # IFolderish check includes site root if not (IContentish.providedBy(obj) or IFolderish.providedBy(obj)): return base_negotiator.getLanguage(langs, env) nav_root = get_nav_root(obj) if ISubsite.providedBy(nav_root): # Get language stored on Subsite language = nav_root.force_language if language: return language else: return base_negotiator.getLanguage(langs, env) else: # Use normal Negotiator return base_negotiator.getLanguage(langs, env)
def get_language(request=None): if request is None: request = getRequest() try: return negotiator.getLanguage(available_languages(), request) except TypeError: return get_default_language()
def translate(self, msgid, mapping=None, context=None, target_language=None, default=None): """See interface `ITranslationDomain`""" if target_language is None and context is not None: avail_langs = self.getAvailableLanguages() # Let's negotiate the language to translate to. :) negotiator = zapi.getUtility(INegotiator, context=self) target_language = negotiator.getLanguage(avail_langs, context) # Get the translation. Default is the source text itself. catalog_names = self._catalogs.get(target_language, []) for name in catalog_names: catalog = super(TranslationDomain, self).__getitem__(name) text = catalog.queryMessage(msgid) if text is not None: break else: # If nothing found, delegate to a translation server higher up the # tree. domain = queryNextUtility(ITranslationDomain, self.domain) if domain is not None: return domain.translate(msgid, mapping, context, target_language, default=default) if default is None: default = msgid text = default # Now we need to do the interpolation return interpolate(text, mapping)
def getLanguage(self, languages, request): """Returns the language dependent on the policy.""" policyList = self._policy.split(' --> ') for policy in policyList: # the server is handling the language if policy == 'server': if self.serverLanguage: return self.serverLanguage # the language is handled by a session elif policy == 'session': session = ILanguageSession(request) lang = session.getLanguage() if lang is not None: return lang # the language is handled by the browsers language settings elif policy == 'browser': lang = negotiator.getLanguage(languages, request) if lang is not None: return lang return None
def chooseContext(self): """Choose the appropriate context according to language""" langs = self.getAvailableLanguages() language = negotiator.getLanguage(langs, self.request) try: return self._data[language] except KeyError: return self._data[self.defaultLanguage]
def getDomainMessages(name, request): result = {} domain = queryUtility(ITranslationDomain, name) if domain: langs = domain._catalogs.keys() lang = negotiator.getLanguage(langs, request) if lang: path = domain._catalogs[lang][0] cat = domain._data[path] data = cat._catalog._catalog # Strip out empty key result = dict((k, v) for k, v in data.iteritems() if k) return result
def getDomainMessages(name, request): result = {} domain = queryUtility(ITranslationDomain, name) if domain: langs = domain._catalogs.keys() lang = negotiator.getLanguage(langs, request) if lang: path = domain._catalogs[lang][0] cat = domain._data[path] data = cat._catalog._catalog # Strip out empty key result = dict((k,v) for k,v in data.iteritems() if k) return result
def __call__(self): results = [] viewname = self.request['HTTP_REFERER'].rsplit('/', 1)[-1] # incase there are query parameters in the url if "?" in viewname: viewname = viewname.split("?")[0] lang = negotiator.getLanguage(TooltipCatalog.langs(viewname), self.request) tips = TooltipCatalog.tips(viewname, lang) tpl = "Zenoss.registerTooltip(%s);" for tip in tips: results.append(tpl % json(tip)) self.request.response.setHeader('Content-Type', 'text/javascript') self.request.response.enableHTTPCompression(REQUEST=self.request) return "Ext.onReady(function(){%s})" % '\n'.join(results)
def __call__(self): results = [] viewname = self.request['HTTP_REFERER'].rsplit('/', 1)[-1] # incase there are query parameters in the url if "?" in viewname: viewname = viewname.split("?")[0] lang = negotiator.getLanguage(TooltipCatalog.langs(viewname), self.request) tips = TooltipCatalog.tips(viewname, lang) tpl = "Zenoss.registerTooltip(%s);" for tip in tips: results.append(tpl % json(tip)) # Bypass caching because all tooltips for all pages use the same file tooltips.js self.request.response.setHeader('Pragma', 'no-cache') self.request.response.setHeader('Cache-Control', 'no-cache') self.request.response.setHeader('Content-Type', 'text/javascript') return "Ext.onReady(function(){%s})" % '\n'.join(results)
def getLanguage(self, languages, request): """Returns the language dependent on the policy.""" policyList = self._policy.split(' --> ') for policy in policyList: # the server is handling the language if policy == 'server': if self.serverLanguage: return self.serverLanguage # the language is handled by a session elif policy == 'session': if self.cacheEnabled: try: cached = request.annotations[LANGUAGE_CACHE_KEY] return cached except KeyError: session = ILanguageSession(request) lang = session.getLanguage() if lang is not None: request.annotations[LANGUAGE_CACHE_KEY] = lang return lang else: session = ILanguageSession(request) lang = session.getLanguage() if lang is not None: return lang # the language is handled by the browsers language settings elif policy == 'browser': lang = negotiator.getLanguage(languages, request) if lang is not None: return lang return None
def __init__(self, context, request): super(PageLevelHelp, self).__init__(context, request) primary, secondary = getSelectedNames(self) lang = negotiator.getLanguage(TooltipCatalog.langs('nav-help'), self.request) self.tip = TooltipCatalog.pagehelp(primary, lang)
def getLanguage(self, langs, env): subsite_language = get_subsite_language(env) return subsite_language or base_negotiator.getLanguage(langs, env)