You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
25 lines
978 B
25 lines
978 B
"this is the locale selecting middleware that will look at accept headers" |
|
|
|
from django.utils.cache import patch_vary_headers |
|
from django.utils import translation |
|
|
|
class LocaleMiddleware(object): |
|
""" |
|
This is a very simple middleware that parses a request |
|
and decides what translation object to install in the current |
|
thread context. This allows pages to be dynamically |
|
translated to the language the user desires (if the language |
|
is available, of course). |
|
""" |
|
|
|
def process_request(self, request): |
|
language = translation.get_language_from_request(request) |
|
translation.activate(language) |
|
request.LANGUAGE_CODE = translation.get_language() |
|
|
|
def process_response(self, request, response): |
|
patch_vary_headers(response, ('Accept-Language',)) |
|
if 'Content-Language' not in response: |
|
response['Content-Language'] = translation.get_language() |
|
translation.deactivate() |
|
return response
|
|
|