Использование многоязычного и localeurl в Django - PullRequest
1 голос
/ 16 февраля 2010

Использование django-многоязычного и 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 (спасибо to localeurl)
  • вызов multilingual.languages.set_default_language () делает локализацию изменения переменной "name"

Вопрос в том, должен ли я изменить язык django-multilingual на request.LANGUAGE_CODE в каждом из моих представлений самостоятельно, или это должно быть решено автоматически, и я сделал что-то неправильно?

Ответы [ 2 ]

3 голосов
/ 24 февраля 2010

У меня та же проблема, после поворота с позициями в 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', я думаю.

1 голос
/ 19 апреля 2010

после удаления django.middleware.locale.LocaleMiddleware у меня тоже сработало ...

...