From 1f6882c69af3918d81ded8ac1c61a79d040b236b Mon Sep 17 00:00:00 2001 From: equinox Date: Tue, 27 Sep 2011 08:39:35 +0200 Subject: language switch --- tmpl.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'tmpl.py') diff --git a/tmpl.py b/tmpl.py index b729a2f..b761ec2 100644 --- a/tmpl.py +++ b/tmpl.py @@ -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': -- cgit v1.2.1