We did this by running a piece of middleware to activate the desired language by analyzing it from the request URL.
Something like that:
class LanguageInPathMiddleware(object): def __init__(self): self.language_codes = set(dict(settings.LANGUAGES).keys()) def process_request(self, request): language_code = request.path_info.lstrip('/').split('/', 1)[0] if language_code in self.language_codes: translation.activate(language_code) request.LANGUAGE_CODE = translation.get_language()
source share