|
1 from django import http |
|
2 from django.utils.translation import check_for_language, activate, to_locale, get_language |
|
3 from django.utils.text import javascript_quote |
|
4 from django.conf import settings |
|
5 import os |
|
6 import gettext as gettext_module |
|
7 |
|
8 # taken from django/views/i18n.py |
|
9 # to allow GET change (flickr does it) |
|
10 def set_language(request, lang_code): |
|
11 """ |
|
12 Redirect to a given url while setting the chosen language in the |
|
13 session or cookie. The url and the language code need to be |
|
14 specified in the request parameters. |
|
15 |
|
16 Since this view changes how the user will see the rest of the site, it must |
|
17 only be accessed as a POST request. If called as a GET request, it will |
|
18 redirect to the page in the request (the 'next' parameter) without changing |
|
19 any state. |
|
20 """ |
|
21 next = request.REQUEST.get('next', None) |
|
22 if not next: |
|
23 next = request.META.get('HTTP_REFERER', None) |
|
24 if not next: |
|
25 next = '/' |
|
26 response = http.HttpResponseRedirect(next) |
|
27 if request.method == 'GET': |
|
28 #lang_code = request.GET.get('language', None) |
|
29 if lang_code and check_for_language(lang_code): |
|
30 if hasattr(request, 'session'): |
|
31 request.session['django_language'] = lang_code |
|
32 else: |
|
33 response.set_cookie('django_language', lang_code) |
|
34 return response |