23 lines
783 B
Python
23 lines
783 B
Python
|
from django.utils import httpwrappers
|
||
|
from django.utils.translation import check_for_language
|
||
|
|
||
|
def set_language(request):
|
||
|
"""
|
||
|
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 GET paramters.
|
||
|
"""
|
||
|
lang_code = request.GET['language']
|
||
|
next = request.GET.get('next', None)
|
||
|
if not next:
|
||
|
next = request.META.get('HTTP_REFERER', None)
|
||
|
if not next:
|
||
|
next = '/'
|
||
|
response = httpwrappers.HttpResponseRedirect(next)
|
||
|
if 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
|