2017-02-01 15 views
0

Djangoメザニンを使用してウェブサイトを開発しています。Django多言語対応の言語でページを無効にする

メザニンページモデルから翻訳されたフィールド(i18nを使用)を派生したモデルを使用しているページがあり、これが機能します。

しかし、特定の国のいくつかのイベントに関連するページがあるので、それらは1つの言語のみであり、翻訳可能なフィールドなしで言語属性を持つMezzanine Displayableモデルから派生したモデルを使用します。

リストでは、ページの言語(/ en/events/event/eventslugなど)を含むリンクを挿入しようとしました。 私はtranslation.activate(lang_code)をビューに追加しようとしました。

この方法では、私は希望の言語(私は{% trans %}テンプレートタグを使用して)でページを取得します。

他の言語のページにアクセスすると問題が発生します(たとえば、スペイン語のフィルタページにある場合、英語のイベントに行く場合など)。それから、言語スイッチ(メザニンフォームが/ i18n /にPOSTリクエストを送信する)がもう機能しません(私は英語でロックされています) スイッチは私がこのうちの1つにアクセスしない限り別の言語のページ。

どうすればこの問題を解決できますか? 私がなぜ...

アップデートのようなアイデアのうち、午前:それはもう国際化ではありませんので、私はURLPATTERNを変更(私はそれがより理にかなっていると思います)が、私はまだ私の問題はまだある{% trans %}タグのtranslation.activate(lang_code)を必要として同じ。

答えて

0

translation.activate(language)を使用すると、translation.deactivate()を使用する必要があるという問題が原因です。 これは、ミドルウェアを適切に機能させるためには、ミドルウェアを使用する必要がありました。

しかし、i18next moduleがテンプレートのロケールを上書きできるようになったので、私のビューでコンテキスト 'lang_code'を定義し、テンプレートに{% overridelocale lang_code %}を使用しました。