2016-07-04 85 views
-1

我有一個多語言網站。 Django可以很好地處理語言,這很容易改變語言。問題在於批次。 documentation is perfectly clear about this。但是我需要發送關於「網站新增功能」的mail = batch =命令行。有沒有簡單的方法來記住當前用戶的語言?

所以:

  1. 我需要知道當前用戶
  2. 我需要切換到該語言的語言。

第二點在文檔中解決。問題是#1。我想知道是否有一些我錯過了多語言,如果Django 確實記住當前用戶他/她的語言,如果我們必須自己做。如果是這樣,你能讓我走上正軌嗎?

謝謝

+0

保存在你的數據庫時,您的網站用戶註冊。 – Gocht

+0

@Gocht用戶可以隨時在註冊後更改他的語言。這不是一個有效的解決方案。 –

+0

您可以在模型中創建不可編輯的字段。 – Gocht

回答

0

這裏是我的解決方案:作出這樣的檢查網站的當前語言中間件和用戶的數據庫語言。如果它們不同,請記住數據庫中的語言。僅供參考,我有我自己的模型Langue其中包含有關特定語言的信息,包括locale這是兩個字母的地方(如enfr,...)

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 
相關問題