Edgewall Software

Ticket #8117: patch_from_r7937.2.2.diff

File patch_from_r7937.2.2.diff, 1.5 KB (added by cboos, 17 months ago)

enable a default language to be configured in TracIni (based on r10044)

  • trac/web/main.py

    0.12.1dev: enable a default language to be configured in TracIni.
    
    Setting is `[trac] default_language` and the values are the usual Locale keys (e.g. `fr`, `zh_CN`, etc.)
    
    Closes #8117.
    
    diff -r ad544c480073 trac/web/main.py
    a b class RequestDispatcher(Component): 
    150150    default_timezone = Option('trac', 'default_timezone', '', 
    151151        """The default timezone to use""") 
    152152 
     153    default_language = Option('trac', 'default_language', '', 
     154        """The preferred language to use if no user preference has been set. 
     155        (''since 0.12.1'') 
     156        """) 
     157 
    153158    # Public API 
    154159 
    155160    def authenticate(self, req): 
    class RequestDispatcher(Component): 
    305310        if Locale: 
    306311            available = [locale_id.replace('_', '-') for locale_id in 
    307312                         translation.get_available_locales()] 
    308  
    309             preferred = req.session.get('language', req.languages) 
    310             if not isinstance(preferred, list): 
    311                 preferred = [preferred] 
     313            preferred = req.session.get('language') 
     314            if preferred is None: 
     315                preferred = self.env.config.get('trac', 'default_language') 
     316            preferred = preferred and [preferred] or [] 
     317            preferred.extend(req.languages) 
    312318            negotiated = Locale.negotiate(preferred, available, sep='-') 
    313319            self.log.debug("Negotiated locale: %s -> %s", 
    314320                           preferred, negotiated)