from django.utils.cache import patch_vary_headers 
from django.utils import translation 

class LocaleURLMiddleware: 
 
    def get_language_from_request (self,request): 
         from django.conf import settings 
         import re 
         supported = dict(settings.LANGUAGES) 
         lang = settings.LANGUAGE_CODE[:2] 
         check = re.match(r"/(\w\w)/.*", request.path) 
         if check is not None: 
             t = check.group(1) 
             if t in supported: 
                 lang = t 
         return lang 
 
    def process_request(self, request): 
         language = self.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',)) 
         translation.deactivate() 
         return response 


