2016-07-04 4 views
-1

私は多言語のウェブサイトを持っています。言語を変更するのは簡単ですが、Djangoはこれを完全に処理します。問題はバッチである。 documentation is perfectly clear about this。しかし、私はmail = batch =コマンドラインを "ウェブサイトの新機能"に関して送る必要があります。だから、現在のユーザーの言語を記憶する簡単な方法はありますか?

  1. 私は、この言語に切り替える必要があり、現在のユーザー
  2. の言語を知っている必要があります。

2番目の点はドキュメントに記載されています。問題は#1です。私は多言語について忘れてしまったことがあるかどうか疑問に思っています.Django の場合は、現在のユーザの言語を思い出してください。もしそうなら、あなたはこれを行うために私を軌道に乗せることができますか?

はあなた

+0

2つの文字であるlocale含む特定の言語に関する情報が含まれて自分のモデルLangueを持っています。 – Gocht

+0

@Gochtユーザーはいつでも登録後に言語を変更できます。これは有効な解決策ではありません。 –

+0

モデルに編集可能なフィールドを作成することはできません。 – Gocht

答えて

0

ありがとうここに私のソリューションです:現在のウェブサイトの言語、データベース内のユーザーの言語をチェックするミドルウェアを作ります。それらが異なる場合は、データベースの言語を覚えておいてください。 FYI私は、ユーザーがサイトに登録するとき、あなたのDB内で保存ローカル(例えば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 
関連する問題