Django如何在i18n_patterns中设置默认语言?

Dim*_*rab 5 python django

设置.py

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

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'))
)
Run Code Online (Sandbox Code Playgroud)

中间件

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',
]
Run Code Online (Sandbox Code Playgroud)

所以我在这里设置的默认值是"hi",但每当我点击 URL[私有模式] 而不在其中附加任何语言时,它会在 URL 中使用“en”而不是“hi”进行重定向。我在这里缺少什么来使其默认指向“hi”语言?

Udi*_*Udi 4

你正在用LocaleMiddleware吗 ?请参阅:Django 如何发现语言偏好

\n
\n

LocaleMiddleware尝试通过以下算法确定用户\xe2\x80\x99s 的语言首选项:

\n
    \n
  • 首先,它在请求的 URL 中查找语言前缀。仅当您在根 URLconf 中使用i18n_patterns函数时,才会执行此操作。[...]

    \n
  • \n
  • 如果失败,它将查找 cookie。\n所使用的 cookie 的名称由 LANGUAGE_COOKIE_NAME 设置\ n设置。(默认名称是django_language。)

    \n
  • \n
  • 如果失败,它会查看Accept-Language HTTP 标头。此标头由您的浏览器发送,并按优先级顺序告诉服务器您更喜欢哪种语言。Django 会尝试标头中的每种语言,直到找到具有可用翻译的语言。

    \n
  • \n
  • 如果失败,它将使用全局LANGUAGE_CODE设置。

    \n
  • \n
\n
\n