如何在 Django 中从管理站点更改用户语言?



我正在实现Django的I18N来翻译一个项目,并且工作非常流畅。问题是我正在处理别人的项目,用户配置文件中有一个名为"语言"的字段,这是一个充满"esp"或"eng"的字符字段。因此,可以从管理站点更改任何用户语言。

有没有办法使用 Django 的 I18N 从 django 管理站点更改任何用户语言?

注意:我没有尝试更改管理站点语言。我试图以用户 A 的身份进入管理站点并修改用户 B 以更改用户 B 看到该站点的语言。 在我的设置中,我有可用的"es"和"en"语言代码。

鉴于您在用户身上有一个语言字段,您可以像 request.user.language 一样访问该字段。

from django.utils import translation

class UserLanguageActivationMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
user = getattr(request, "user", None)
if user:
translation.activate(user, getattr(user, language, "Some meaning full default language"))
return self.get_response(request)

然后将其添加到中间件类中。

最新更新