1

django-multilingual と localeurl を使用します。

私のメインページビューの小さなサンプル:

def main(request): #View for http://www.mysite.com/
    name = Dog.objects.all()[0].full_name #this is a translated field
    return render_to_response("home.html", {"name" : name})

http://www.mysite.com/と入力するとhttp://www.mysite.com/ru/にリダイレクトされ、"name" 変数はロシア語のローカライズを取得します。今のところ大丈夫です...

しかし...

http://www.mysite.com/en/と入力すると、同じロシア語のローカライズされた変数が表示されます。

デバッガーでの実験中に、次のことを発見しました。

  • request.LANGUAGE_CODE は、/en/ または /ru/ url サフィックスに従って適切に変更されています (localeurl に感謝)
  • multilingual.languages.set_default_language() を呼び出すと、「name」変数が変更されます。

問題は、自分の各ビューで django-multilingual の言語を request.LANGUAGE_CODE に変更する必要があるか、それとも自動的に解決する必要があり、何か間違ったことをしたのでしょうか?

4

2 に答える 2

3

私は同じ問題を抱えています.MIDDLEWARE_CLASSESの位置でローテーションした後、正しい順序になりました:

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    #'django.middleware.locale.LocaleMiddleware',
    'localeurl.middleware.LocaleURLMiddleware',
    'multilingual.middleware.DefaultLanguageMiddleware',
    'multilingual.flatpages.middleware.FlatpageFallbackMiddleware',
    'django.middleware.common.CommonMiddleware', 
)

#'django.middleware.locale.LocaleMiddleware' は、'localeurl.middleware.LocaleURLMiddleware' と同じことをしているとコメントしています。

于 2010-02-23T22:38:36.077 に答える
1

django.middleware.locale.LocaleMiddleware を削除した後も機能しました...

于 2010-04-19T11:26:18.950 に答える