2012-05-10 2 views
2

나는 이것이 어리석게 들리 겠지만 나는 틀린 것을 발견 할 수 없다는 것을 알고있다. 사용자 인증 및 로그인을 위해 기본 제공보기를 사용 중이며 loggin out은 현재 세션의 비 기본 언어로 언어를 각각 전환합니다.Django :/logout switches languages ​​

Djangoproject 사이트의 문서 (예 : 로케일 폴더)에 따라 두 가지 언어가 설정되어 있으며 .mo 파일과 모든 것이 있습니다. 벌금.

나는 모든 사용자에 대해 언어 스위치를 수있는 형태 기반 언어 스위치가 그 게시물에/국제화/

그래서, 내 질문은, 올 어떻게 내가 할 때 "POST는"언어를 전환 할 것으로 보인다 setlang 로그 아웃 또는 로그인 (나는 POST의 둘 다 같다).

빛을 비추어 주셔서 감사합니다.

편집 : 나는 결코 되돌아 가지 않는다고 덧붙여 야합니다. 한 방향으로, 즉 기본 언어가 아닌 언어로만 언어를 전환합니다.

EDIT2 : 더 이상 답변을 얻지는 못 하겠지만 여기 언어 변환 프로그램의 코드가 있습니다. (jQuery를 사용하여 즉시 전환됩니다. 문제는 여전히 Deutch 언어로 이동하고 로그 아웃 할 때마다 그대로 있습니다. 로그 아웃은 장고에서 로그 아웃보기)에 의해 처리됩니다.

<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

좋아, 답은 다음과 같습니다. 다른 사람이이 상황에 처할 수 있기 때문에 필자가 적어 두었습니다.

문제는 내가 장고 로케일 미들웨어와 미들웨어 사이의 순서를 바꿨다는 것이다. 장고가 그것을 처리하기 전에 당신이 가로 채기를 할 필요가있다. 그리고 브라우저가 지시 한대로 언어를 설정한다. (어쨌든 정말 이상한 기본 동작이다.)

누군가 도움이되기를 바랍니다.

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

난 당신이 세션에서 언어 설정을 유지하고, 사용자가 로그 아웃 할 때, 세션이 사라지고 다시 기본에 걸 추측 할 LANG.

+0

아니요, 그게 전부입니다. 결코 다시 바뀌지 않습니다. 설치된 두 번째 언어로 이동하여 그대로 있습니다. – Adergaard