这里是我的解决方案:作出这样的检查网站的当前语言中间件和用户的数据库语言。如果它们不同,请记住数据库中的语言。仅供参考,我有我自己的模型Langue
其中包含有关特定语言的信息,包括locale
这是两个字母的地方(如en
,fr
,...)
class CheckIfLanguageChangedMiddleware(object):
"""
Middleware to check if language has changed.
Used for remembering the user's choice for batchs files:
batchs files can't guess each user's language.
Adds a bit overhead but can't avoid that (I guess).
"""
@staticmethod
def process_request(request):
try:
p = Personne.objects.get(user__pk=request.user.pk)
langue = translation.get_language()
if not p.site_language or p.site_language.locale != langue:
try:
p.site_language = Langue.objects.get(locale__exact=langue)
p.save()
except Langue.DoesNotExist:
pass
except Personne.DoesNotExist:
pass
保存在你的数据库时,您的网站用户注册。 – Gocht
@Gocht用户可以随时在注册后更改他的语言。这不是一个有效的解决方案。 –
您可以在模型中创建不可编辑的字段。 – Gocht