Edgewall Software

Ticket #8117: 8117-trac-admin-default_language.patch

File 8117-trac-admin-default_language.patch, 1.9 KB (added by cboos, 17 months ago)

trac-admin uses the default_language configured for the environment, if any; patch on top of 8117-trac-default_language.patch

  • trac/admin/console.py

    # HG changeset patch
    # Parent ff048aabd29dcf75a018a3c2f59bcb3f64be25b7
    0.12.1dev: trac-admin uses the default_language configured for the environment, if any.
    
    Complements #8117.
    
    diff -r ff048aabd29d trac/admin/console.py
    a b import StringIO 
    2121import sys 
    2222import traceback 
    2323 
     24try: 
     25    from babel import Locale 
     26except ImportError: 
     27    Locale = None 
     28 
    2429from trac import __version__ as VERSION 
    2530from trac.admin import AdminCommandError, AdminCommandManager 
    2631from trac.core import TracError 
    Type: '?' or 'help' for help on command 
    148153    def env_check(self): 
    149154        if not self.__env: 
    150155            try: 
    151                 self.__env = Environment(self.envname) 
     156                self._init_env() 
    152157            except: 
    153158                return False 
    154159        return True 
    Type: '?' or 'help' for help on command 
    157162    def env(self): 
    158163        try: 
    159164            if not self.__env: 
    160                 self.__env = Environment(self.envname) 
     165                self._init_env() 
    161166            return self.__env 
    162167        except Exception, e: 
    163168            printerr(_("Failed to open environment: %(err)s", 
    164169                       err=exception_to_unicode(e, traceback=True))) 
    165170            sys.exit(1) 
    166171 
     172    def _init_env(self): 
     173        self.__env = env = Environment(self.envname) 
     174        # fixup language according to env settings 
     175        if Locale: 
     176            preferred = env.config.get('trac', 'default_language', 
     177                                       '').replace('_', '-') 
     178            if preferred: 
     179                available = [locale_id.replace('_', '-') for locale_id in 
     180                             translation.get_available_locales()] 
     181                negotiated = Locale.negotiate([preferred], available, sep='-') 
     182                translation.activate(negotiated) 
     183         
    167184    ## 
    168185    ## Utility methods 
    169186    ##