| "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 |