Изменение языка в пользовательском промежуточном ПО

Я хочу изменить язык в моем пользовательском промежуточном ПО. По какой-то причине приведенный ниже код не работает.

class LanguageMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        print('set language to spanish...')
        translation.activate("es")
        request.LANGUAGE_CODE = "es"
        response = self.get_response(request)
        translation.deactivate()

        return response

settings.py

LANGUAGES = (
    ("en", "English"),
    ("es", "Spanish"),
)
LOCALE_PATHS = (os.path.join(BASE_DIR, "locale"),)
USE_I18N = True
USE_L10N = True
LANGUAGE_CODE = "en"

если я изменю LANGUAGE_CODE в настройках на "es", я получу испаноязычные ответы API, но я хотел бы иметь возможность изменять его программно в моем промежуточном ПО.

Это работает для меня:

def set_lang_middleware(get_response):

    def middleware(request):
        translation.activate("es")
        response = get_response(request)

        return response

    return middleware

Не забудьте добавить ваше промежуточное ПО в settings.MIDDLEWARE.

Вернуться на верх