src/cm/views/i18n.py
author rbernard
Sat, 13 Feb 2010 12:02:23 +0100
changeset 175 4f072edc51a1
parent 0 40c8f766c9b8
permissions -rw-r--r--
BUG FIX : handling html
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     1
from django import http
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     2
from django.utils.translation import check_for_language, activate, to_locale, get_language
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     3
from django.utils.text import javascript_quote
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     4
from django.conf import settings
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     5
import os
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     6
import gettext as gettext_module
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     7
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     8
# taken from django/views/i18n.py
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
     9
# to allow GET change (flickr does it)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    10
def set_language(request, lang_code):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    11
    """
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    12
    Redirect to a given url while setting the chosen language in the
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    13
    session or cookie. The url and the language code need to be
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    14
    specified in the request parameters.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    15
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    16
    Since this view changes how the user will see the rest of the site, it must
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    17
    only be accessed as a POST request. If called as a GET request, it will
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    18
    redirect to the page in the request (the 'next' parameter) without changing
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    19
    any state.
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    20
    """
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    21
    next = request.REQUEST.get('next', None)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    22
    if not next:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    23
        next = request.META.get('HTTP_REFERER', None)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    24
    if not next:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    25
        next = '/'
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    26
    response = http.HttpResponseRedirect(next)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    27
    if request.method == 'GET':
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    28
        #lang_code = request.GET.get('language', None)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    29
        if lang_code and check_for_language(lang_code):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    30
            if hasattr(request, 'session'):
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    31
                request.session['django_language'] = lang_code
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    32
            else:
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    33
                response.set_cookie('django_language', lang_code)
40c8f766c9b8 import from internal svn r 4007
raph
parents:
diff changeset
    34
    return response