1

私は django.middleware.locale.LocaleMiddleware を使用して、ウェブサイトを i18n 化し、set_language redirectを介して言語の「スイッチャー」を作成します。

そして、私はいくつかのことを理解できません:

  1. process_responce 中にtranslation.deactivate( github のソース) を呼び出すのはなぜですか?

  2. このミドルウェアが使えないということですか?(一度別の言語でページを表示してから元に戻すだけです。)

4

1 に答える 1

2

translation.deactivateが呼び出されるのは、現在の言語がグローバル (スレッド ローカル) 変数に格納されているためです。リクエストが入ったときに設定され、次のリクエストに「リーク」するのを防ぐために、そのリクエストが終了したら設定を解除する必要があります(たとえば、スレッドがポルトガル語にローカライズする必要があるリクエストを処理し、次に別のリクエストをローカリゼーションが設定されていません。ポルトガル語のローカライズが無効になっていない場合、次のリクエストもポルトガル語にローカライズされます)。

于 2012-06-09T15:49:08.560 に答える