我有一个多语言网站。改变语言很容易,Django完美地处理了这个问题。问题在于批次。 documentation is perfectly clear about this。{{3}}。但我需要发送mail = batch =命令行关于“网站的新内容”。
所以:
第二点在文档中解决。问题是#1。我想知道是否有一些我错过的关于多语言的东西,如果Django 确实记住当前用户他/她的语言,如果我们必须自己做。如果是这样,你能让我按计划进行吗?
谢谢
答案 0 :(得分:0)
这是我的解决方案:制作一个中间件,用于检查网站的当前语言以及数据库中用户的语言。如果它们不同,请记住数据库中的语言。仅供参考我拥有自己的模型Langue
,其中包含有关特定语言的信息,包括locale
,这是本地的两个字母(例如en
,fr
,...)< / p>
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