diff options
Diffstat (limited to 'tmpl.py')
-rw-r--r-- | tmpl.py | 16 |
1 files changed, 14 insertions, 2 deletions
@@ -22,7 +22,9 @@ def select_language(): lang = cherrypy.thread_data.lang return languages[lang if languages.has_key(lang) else 'en'] accept = cherrypy.request.headers['Accept-Language'] - if isinstance(accept, str): + try: accept = str(accept) + except: accept = None + if accept is not None: for group in accept.split(';'): for lang in group.split(','): if lang.find('=') >= 0: @@ -65,10 +67,20 @@ def expose(filename, method='html', encoding='utf-8', **options): cherrypy.thread_data.template = loader.load(filename) cherrypy.thread_data.func = func cherrypy.thread_data.lang = None + if cherrypy.request.cookie.has_key('lang'): + cherrypy.thread_data.lang = cherrypy.request.cookie['lang'].value + if cherrypy.request.params.has_key('lang'): + cherrypy.thread_data.lang = cherrypy.request.params['lang'] + if cherrypy.thread_data.lang != None: + cherrypy.response.cookie['lang'] = cherrypy.thread_data.lang + cherrypy.response.cookie['lang']['path'] = '/' + cherrypy.response.cookie['lang']['max-age'] = 2419200 + cherrypy.response.cookie['lang']['version'] = 1 if kwargs.has_key('lang'): - cherrypy.thread_data.lang = kwargs['lang'] del kwargs['lang'] + cherrypy.thread_data.translations = select_language() + cherrypy.response.headers['Vary'] = 'Accept-Language' opt = options.copy() if method == 'html': |