Django语言切换器不持久
你好,我在语言切换器上遇到了一些问题。
这是我的设置文件 settings.py:
LANGUAGE_CODE = 'en'
LANGUAGES = [
('de','Deutsch'),
('en','English')
]
这是我的网址配置文件 urls.py:
path('setlang', views.setlang, name='setlang'),
这是我的首页模板 index.html:
<a href="{% url 'setlang' %}">{% trans "English" %}</a>
这是我的视图文件 views.py:
def setlang(request):
logger.error(get_language())
if get_language() == 'de':
activate('en')
else:
activate('de')
logger.error(get_language())
return redirect('index')
从日志中看到的错误信息是:logger.error(get_language()) -> 'de' 而不是 'en'。
每次都是 'de'!即使我把 LANGUAGE_CODE 设置成 'en'!我完全不知道 'de' 是从哪里来的。
问题可能出在重载上,这个是因为我使用了 return redirect('index')?
总体来说,翻译功能是正常的。
有没有人知道我该如何保持选择的语言,而不是总是回到默认语言?
1 个回答
1
activate(…)
[Django-doc] 这个功能并不是用来长期保持的。实际上,文档中提到:
它会获取一个特定语言的翻译对象,并将其激活为当前线程的翻译对象。
所以说,当这个线程结束后,它就“失效”了。
你可以设置一个名为 LANGUAGE_COOKIE_NAME
设置 [Django-doc] 的 cookie 来激活另一种语言:
from django.conf import settings
def setlang(request):
logger.error(get_language())
if get_language() == 'de':
lang = 'en'
else:
lang = 'de'
response = redirect('index')
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang)
return response