diff -r 000000000000 -r 40c8f766c9b8 src/cm/views/i18n.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cm/views/i18n.py Mon Nov 23 15:14:29 2009 +0100 @@ -0,0 +1,34 @@ +from django import http +from django.utils.translation import check_for_language, activate, to_locale, get_language +from django.utils.text import javascript_quote +from django.conf import settings +import os +import gettext as gettext_module + +# taken from django/views/i18n.py +# to allow GET change (flickr does it) +def set_language(request, lang_code): + """ + Redirect to a given url while setting the chosen language in the + session or cookie. The url and the language code need to be + specified in the request parameters. + + Since this view changes how the user will see the rest of the site, it must + only be accessed as a POST request. If called as a GET request, it will + redirect to the page in the request (the 'next' parameter) without changing + any state. + """ + next = request.REQUEST.get('next', None) + if not next: + next = request.META.get('HTTP_REFERER', None) + if not next: + next = '/' + response = http.HttpResponseRedirect(next) + if request.method == 'GET': + #lang_code = request.GET.get('language', None) + if lang_code and check_for_language(lang_code): + if hasattr(request, 'session'): + request.session['django_language'] = lang_code + else: + response.set_cookie('django_language', lang_code) + return response