django - 如何从 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)
然后将其添加到您的中间件类中。
推荐阅读
- javascript - 为什么单击链接时我的 React 应用程序会转到自定义 404 未找到页面?
- java - java 版本与 Eclipse 不匹配
- xaml - 如何使用现有的 ContentPages (Xamarin.Forms) 设置主详细信息?
- r - 为什么这段代码显示 dwapi::configure()?
- swift - Copy and pasting selected text from the current, from a Mac sandboxed application
- java - Gradle - dependencies with because statement
- selenium - SpreadJS 硒自动化问题
- python-3.x - 从脚本在 XFCE 中打开终端并激活 python virtualenv
- c# - Implementing open close principle when interfaces are different
- javascript - React Hooks : UseRef not recognizing Event from Material UI Select