示例#1
0
    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)
示例#2
0
def get_language(request=None):
    if request is None:
        request = getRequest()
    try:
        return negotiator.getLanguage(available_languages(), request)
    except TypeError:
        return get_default_language()
示例#3
0
    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)
示例#4
0
def get_language(request=None):
    if request is None:
        request = getRequest()
    try:
        return negotiator.getLanguage(available_languages(), request)
    except TypeError:
        return get_default_language()
示例#5
0
    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
示例#6
0
 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]
示例#7
0
 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]
示例#8
0
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
示例#10
0
 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)
示例#11
0
 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)
示例#12
0
 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)
示例#13
0
 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)
示例#14
0
    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
示例#15
0
 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)
示例#16
0
 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)
示例#17
0
    def getLanguage(self, langs, env):

        subsite_language = get_subsite_language(env)
        return subsite_language or base_negotiator.getLanguage(langs, env)