2017-03-02 12 views
1

settings.pyDjango i18n_patterns에서 기본 언어를 설정하는 방법은 무엇입니까?

from django.utils.translation import ugettext_lazy as _ 
LANGUAGE_CODE = 'hi' 
# list of activated languages 
LANGUAGES = (
    ('hi', _('Hindi')), 
    ('en', _('English')), 
) 

urls.py

urlpatterns += i18n_patterns(
    url(r'^', include('howdy.urls')), 
    url(r'^', include('accounts.urls')), 
    url(r'^admin/', admin.site.urls), 
    url(r'^i18n/', include('django.conf.urls.i18n')), 
    url(r'^accounts/', include('allauth.urls')) 
) 

미들웨어

MIDDLEWARE = [ 
    'django.middleware.security.SecurityMiddleware', 
    'django.contrib.sessions.middleware.SessionMiddleware', 
    'django.middleware.common.CommonMiddleware', 
    'django.middleware.csrf.CsrfViewMiddleware', 
    'django.contrib.auth.middleware.AuthenticationMiddleware', 
    'django.contrib.messages.middleware.MessageMiddleware', 
    'django.middleware.clickjacking.XFrameOptionsMiddleware', 
    'debug_toolbar.middleware.DebugToolbarMiddleware', 
    'django.middleware.locale.LocaleMiddleware', 
] 

그래서 여기에서 설정 한 기본 "hi",하지만 때마다 내가 타격하고어떤 언어도 추가하지 않고 [개인 모드]의 URL, "hi"가 아니라 "en"을 URL로 리디렉션합니다. 내가 "hi"언어를 기본으로 삼기 위해 여기에 놓친 것은 무엇입니까?

+0

"URL [개인 모드]"란 무엇인가요? – Udi

+0

@udi, 사이트가 새로 열리도록 브라우저를 "시크릿 모드"로 엽니 다. –

답변

1

LocaleMiddleware을 사용하고 있습니까? 참조 : How Django discovers language preference :

LocaleMiddleware이 알고리즘은 다음 하여 사용자의 언어 설정을 결정하려고 :

  • 첫째, 요청 된 URL에서 언어 접두사를 찾습니다. 이것은 루트 URLconf에있는 i18n_patterns 함수를 사용할 때만 수행됩니다. 자세한 내용은 국제화 : URL 패턴에서 언어 접두어 및 URL 패턴을 국제화하는 방법을 참조하십시오.

  • 실패하면 현재 사용자 세션에서 LANGUAGE_SESSION_KEY 키를 찾습니다.

  • 실패하면 쿠키를 찾습니다. 사용 된 쿠키의 이름은 LANGUAGE_COOKIE_NAME 설정에 의해 설정됩니다. (기본 이름은 django_language입니다.)

  • Accept-Language HTTP 헤더를 보지 못했습니다. 이 헤더 은 브라우저에 의해 전송되어 서버에 우선 순위에 따라 이 선호하는 언어를 알려줍니다. Django는 사용 가능한 번역본을 찾을 때까지 머리글 에서 각 언어를 시도합니다.

  • 실패하면 글로벌 LANGUAGE_CODE 설정이 사용됩니다.

+0

네, 사용하고 있습니다, 제 대답을 편집했습니다.보세요. –

관련 문제