2

私はDjangoを使用して、英語とドイツ語の2つの言語でWebプロジェクトを作成しています。ドキュメントのデフォルト言語は英語で、私はそれを自分でドイツ語に翻訳し、.poファイルを作成しました。

私の考えでは、誰かがドイツ語を話し、ブラウザのロケールが「de」に設定されている場合、Djangoはドイツ語(私が提供する翻訳)に切り替える必要があります。ただし、それ以外の場合は、英語に切り替える必要があります。

問題は、それがまったく逆に機能することであり、理由がわかりません。

現状:ブラウザのロケールが英語に設定されている場合、Webサイトは英語で表示されます。ただし、それ以外の場合はドイツ語で表示されます。

LANGUAGE_CODE = 'en-us'

_ = lambda s: s
LANGUAGES = (
      ('en', _('English')),
      ('de', _('German')),
)

ミドルウェアは正しく設定されており、ロケールパスも正しく設定されています。Webサイトをテストするとき、すべてのCookieとキャッシュをクリアします。私は2つの翻訳(すでに英語で書かれているにもかかわらず、ドイツ語と英語)を提供しようとしましたが、それでも同じ効果があります。

ご協力いただきありがとうございます。

4

1 に答える 1

0

ユーザーが言語を指定できるようにする場合は、LocaleMiddleware が有効になっていることを確認してください。

MIDDLEWARE_CLASSES = (
   ...
   'django.middleware.locale.LocaleMiddleware',
   ...
)

次に、Django はユーザーの言語設定を次の順序で探します。

したがって、Django セッションで言語を明示的に設定する最も簡単な方法は、request.session['django_language'] を書き直すことです。

def someview (request):
    ...
    request.session['django_language'] = 'en'
    ...
于 2012-04-25T09:25:25.607 に答える