7

国際化したい Django アプリ (Google App Engine 上) があります。

settings.py:

USE_I18N = True
LANGUAGE_CODE = 'en'

# Restrict supported languages (and JS media generation)
LANGUAGES = (
  ('en', 'English'),
  ('fr', 'French'),
)

MIDDLEWARE_CLASSES = (
  'ragendja.middleware.ErrorMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  # i18n
  'django.middleware.locale.LocaleMiddleware',
  ...

アプリの .po および .mo ファイルを locale/fr/LC_MESSAGES に生成しました (ただし、グローバル レベルではありません)。

ブラウザの Accept-Language 見出しを「fr」に設定すると、Django はそれを無視します。request.LANGUAGE_CODE を見ると、常に「en」です。

他の i18n 対応サイトにアクセスすると、フランス語が返されるため、ブラウザーが適切であることがわかります。

Django が自分の設定に欠けていると考えるものを見つけるにはどうすればよいですか?

この質問を見ましたが、役に立ちませんでした。

Google App Engine でアプリ エンジン パッチ 1.0.2.2 を使用して Django 1.0 を実行しています。

4

2 に答える 2

6

Django が i18n に関して行う処理には特定の順序があります。

まずチェックしますLANGUAGE_CODE。これはサイト全体の言語であり、他に何も設定されていない場合、これがユーザーに表示される言語になります。

次に、 を追加したので、ユーザー セッションで が設定されているかどうかがLocaleMiddlewareチェックされます。django_languageDB のセッション情報をクリアするか、まったく新しいユーザーを作成して試してみることをお勧めします。

3 番目に、Cookie セットがあるかどうかを確認しますdjango_language(または、実際には、Cookie の名前は によって定義されますLANGUAGE_COOKIE_NAME)。この Cookie を削除することをお勧めします。

4 番目に、Accept-LanguageHTTP ヘッダーを探します。これは、ブラウザの設定の出番です。

幸運を!

于 2009-11-03T10:20:46.247 に答える