/[opental]/opental/PlacelessTranslationService/Negotiator.py
ViewVC logotype

Diff of /opental/PlacelessTranslationService/Negotiator.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6 by lalo, Sun Jan 26 22:59:30 2003 UTC revision 1.7 by lalo, Fri Feb 21 23:29:40 2003 UTC
# Line 47  class BrowserLanguages: Line 47  class BrowserLanguages:
47          get = context.get          get = context.get
48                            
49          try:          try:
50              req_langs = get('user_language', None) or \              user_langs = get('user_language', '')
51                          get('HTTP_ACCEPT_LANGUAGE', '')              http_langs = get('HTTP_ACCEPT_LANGUAGE', '')
52          except:          except:
53              from traceback import print_exc              from traceback import print_exc
54              print_exc()              print_exc()
55              self.langs = ()              self.langs = ()
56              return              return
57            if user_langs and http_langs and user_langs == context.cookies.get('user_language'):
58                user_langs = user_langs.split(',')
59                http_langs = http_langs.split(',')
60                for l in user_langs:
61                    if l not in http_langs:
62                        req_langs = user_langs + http_langs
63                        break
64                    else:
65                        # user_langs is a subset of http_langs
66                        context.RESPONSE.expireCookie('user_language', path='/')
67                        req_langs = http_langs
68            else:
69                req_langs = (user_langs +','+ http_langs).split(',')
70          langs = []          langs = []
71          for lang in req_langs.split(','):          for lang in req_langs:
72              lang = lang.strip().lower().replace('_', '-')              lang = lang.strip().lower().replace('_', '-')
73              if lang:              if lang:
74                  langs.append(lang.split(';')[0])                  langs.append(lang.split(';')[0])
# Line 72  class Negotiator: Line 85  class Negotiator:
85    
86    
87      def getLanguage(self, langs, env):      def getLanguage(self, langs, env):
88            langs = tuple(langs)
89          try:          try:
90              return env.other['_pts_negotiator_cache']              cache = env.other['_pts_negotiator_cache']
91          except KeyError:          except KeyError:
92              # Store cache in request object              # Store cache in request object
93              env.set('_pts_negotiator_cache', self._getLanguage(langs, env))              cache = {}
94              return env.other['_pts_negotiator_cache']              env.set('_pts_negotiator_cache', cache)
95            try:
96                return cache[langs]
97            except KeyError:
98                cache[langs] = self._getLanguage(langs, env)
99                return cache[langs]
100    
101      def _getLanguage(self, langs, env):      def _getLanguage(self, langs, env):
102          envprefs = getLangPrefsMethod(env)          envprefs = getLangPrefsMethod(env)
# Line 98  class Negotiator: Line 117  class Negotiator:
117    
118    
119  negotiator = Negotiator()  negotiator = Negotiator()
120    
121    def negotiate(langs, request):
122        return negotiator.getLanguage(langs, request)

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26