def set_lang(request): """Set current language """ lang = request.matchdict['lang'].lower() langs = dict(request.registry.settings['available_langs']) if lang not in langs: raise HTTPBadRequest('Not supported language %r' % lang) referrer = request.referer my_url = request.route_url('front.set_lang', lang=lang) if referrer == my_url or not referrer: # never use the set_lang itself as came_from # which could lead to a infinite loop referrer = '/' came_from = request.params.get('came_from', referrer) response = HTTPFound(location=came_from) response.set_cookie('_LOCALE_', normalize_locale_name(lang)) return response