2012-05-10 2 views
2

Я знаю, это звучит глупо, но я не могу найти, что не так. Я использую встроенные представления для авторизации пользователя, а вход в систему и выход из системы соответственно переключает язык на язык, не используемый по умолчанию для текущего сеанса.Django:/logout switch language

У меня есть два языка, настройка в соответствии с документацией на сайте Djangoproject i.e в папке locale и есть файлы .mo и все такое. Хорошо.

У меня есть переключатель языка формы на основе, которая позволяет переключение языка для любого пользователя, сообщения в/i18n/setlang

Итак, мой вопрос, как же это, кажется, «POST» для переключения языка, когда я делаю logout или логин (который, как я полагаю, оба являются POST).

Благодарим вас за то, что вы выбрали любой свет.

EDIT: Я должен добавить, что он никогда не отключается. Он только переключает языки в одном направлении, то есть на язык, который не является стандартным.

EDIT2: Не думаю, что он будет привлекать больше ответов, но вот код для моего языкового коммутатора (он переключается на лету через jQuery. Проблемы STILL в том, что он идет на язык Deutch и остается там, когда я выхожу из системы (выход из системы осуществляется с помощью зрения выхода из системы в Django).

<ul>    
    <li> 
     <form name="setLangen" action="/i18n/setlang/" method="POST"><div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='871Y71JyfG9WcieiKr8jjwe4j37IkIfq' /></div> 
     <input name="next" type="hidden" value="/" /> 
     <input type="hidden" name="language" value="en" /> 
     <a href="#" onclick="document.setLangen.submit();return false;">English</a> 
     </form> 
    </li> 

    <li> 
     <form name="setLangde" action="/i18n/setlang/" method="POST"><div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='871Y71JyfG9WcieiKr8jjwe4j37IkIfq' /></div> 
     <input name="next" type="hidden" value="/" /> 
     <input type="hidden" name="language" value="de" /> 
     <a href="#" onclick="document.setLangde.submit();return false;">Deutch</a> 
     </form> 
    </li> 

</ul> 

ответ

0

ОК. Итак, вот ответ. Я думал, что напишу его, так как кто-то еще может оказаться в этой ситуации.

Проблема заключалась в том, что я переключил порядок между промежуточным программным обеспечением django locale и промежуточным программным обеспечением, собственным собственным, которое отображает выбранный язык. Вам нужно сохранить свой собственный перехват до того, как Django возьмет его на себя и задает язык независимо от того, что браузер сообщает ему (что в любом случае является действительно странным поведением по умолчанию).

Надеюсь, это поможет кому-то.

'myapp.middleware.ForceDefaultLanguageMiddleware', # <-- BEFORE django locale!! 
'django.middleware.locale.LocaleMiddleware', 
2

Я предположил бы, что вы сохраняете настройки языка на сессии, а когда пользователь выходит из системы, сеанс ушел, и вы вернулись к невыполнению языки.

+0

Нет, это все. Он никогда не меняется. Он переходит на второй язык, установленный и остается там. – Adergaard