這裏是我的解決方案:作出這樣的檢查網站的當前語言中間件和用戶的數據庫語言。如果它們不同,請記住數據庫中的語言。僅供參考,我有我自己的模型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