【问题标题】:Django - Could i18n.set_language() store in User profileDjango - i18n.set_language() 可以存储在用户配置文件中吗
【发布时间】:2012-08-24 09:12:37
【问题描述】:

当用户选择一种语言时,我希望 i18n.set_language() 将该语言存储到最终可用的 user profile 中。

Django 也应该使用它来discover 我的语言。

这是个好主意吗?如果是,我该怎么做?

【问题讨论】:

  • django-user-accounts 负责处理。
  • 实际上我已经使用了 django-registration,它完成了 django-user-accounts 的部分功能,并且我已经配置了用户配置文件.这就是为什么我想知道如何手动操作。

标签: python django internationalization django-users


【解决方案1】:
  1. 请参阅 How to override a view from an external Django app -> How to override without forking -> Overriding a view 以制作“i18n.set_language() 以将语言存储到最终可用的用户配置文件中”

  2. 复制django-user-accounts middleware并更改get_language_for_user

  3. 将中间件放在django.middleware.locale.LocaleMiddleware之后,因为这会根据请求设置默认语言,因此对于匿名访问者仍然有用,因此您希望在您自己的中间件之前执行它。

【讨论】:

  • 我做到了,但我不知道在哪里把它放在 MIDDLEWARE_CLASSES 中,我必须删除 django.middleware.locale.LocaleMiddleware 吗?另外我不知道如何覆盖i18n.set_language() 以获取存储在配置文件中的语言。
  • 抱歉,我错过了关于 set_language 的部分,答案已更新(在再次阅读 Django 的源代码后,附上关于将中间件放入设置中的说明)。
  • 我会尝试视图覆盖。显然,中间件也必须放在django.contrib.auth.middleware.AuthenticationMiddleware 之后
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-01
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多