【问题标题】:Change language in custom middleware更改自定义中间件中的语言
【发布时间】:2022-10-18 10:14:05
【问题描述】:

我想更改自定义中间件中的语言。由于某种原因,下面的代码不起作用。

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

设置.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 响应,但我希望能够在我的中间件中以编程方式更改它。

【问题讨论】:

  • 你解决了吗?

标签: django django-rest-framework internationalization


【解决方案1】:

这对我有用:

def set_lang_middleware(get_response):

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

        return response

    return middleware

不要忘记在 settings.MIDDLEWARE 中添加你的中间件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 2014-11-05
    • 2021-12-20
    • 1970-01-01
    • 2015-04-22
    • 2019-08-24
    • 2010-12-25
    相关资源
    最近更新 更多