gpt4 book ai didi

Django 设置语言

转载 作者:行者123 更新时间:2023-12-04 04:54:25 25 4
gpt4 key购买 nike

在我看来,我设置了这样的语言。

    if request.LANGUAGE_CODE == 'en':
translation.activate('en')
else:
translation.activate('pt')

当转到 url/pt/foo/faa/

它有效。

但是语言没有设置。一旦我点击了一个链接,比如 about 链接,url 就会变成/en/about/../而不是/pt/about../我认为应该的。

这是我的网址:
from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns

urlpatterns = i18n_patterns('',
(r'^i18n/', include('django.conf.urls.i18n')),
(r'^news/', include('news.urls')),
....

设置.py
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.locale.LocaleMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = ()

我是否以错误的方式理解这一点?

最佳答案

the docs 中所述

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.i18n,
)

你应该在你的 TEMPLATE_CONTEXT_PROCESSORS 中找到它设置。

现在尝试向上移动 Locale像这样的中间件:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)

中间件计数和语言环境的顺序应该在 session 之后。

真的很难猜测会出现什么问题,因为过程中有很多细节,但解释得很好 here .这就是 django 用来检测 i18n 的算法。仔细阅读它的链接。它一定是我们缺少的东西。

希望有帮助!

关于Django 设置语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16971794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com