设置.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”语言?
你正在用LocaleMiddleware吗 ?请参阅:Django 如何发现语言偏好:
\n\nLocaleMiddleware尝试通过以下算法确定用户\xe2\x80\x99s 的语言首选项:
\n\n
\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
| 归档时间: |
|
| 查看次数: |
6991 次 |
| 最近记录: |