有没有一种简单的方法来记住当前用户的语言?

时间:2016-07-04 21:48:41

标签: django

我有一个多语言网站。改变语言很容易,Django完美地处理了这个问题。问题在于批次。 documentation is perfectly clear about this。{{3}}。但我需要发送mail = batch =命令行关于“网站的新内容”。

所以:

  1. 我需要了解当前用户的语言
  2. 我需要切换到这种语言。
  3. 第二点在文档中解决。问题是#1。我想知道是否有一些我错过的关于多语言的东西,如果Django 确实记住当前用户他/她的语言,如果我们必须自己做。如果是这样,你能让我按计划进行吗?

    谢谢

1 个答案:

答案 0 :(得分:0)

这是我的解决方案:制作一个中间件,用于检查网站的当前语言以及数据库中用户的语言。如果它们不同,请记住数据库中的语言。仅供参考我拥有自己的模型Langue,其中包含有关特定语言的信息,包括locale,这是本地的两个字母(例如enfr,...)< / 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