Django 语言切换器不是持久的

问题描述 投票:0回答:1

你好,我正在努力使用我的语言切换器。

设置.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'。

每次都是“德”!即使我设置LANGUAGE_CODE = 'en'!我不知道“德”从何而来。

问题可能是重新加载,这是由返回重定向('index')强制的?

一般作品的翻译。

有谁知道如何坚持选择的语言而不是退回到默认语言?

python django localization internationalization
1个回答
0
投票

activate(…)
 [Django-doc] 不应该是持久的。事实上,正如文档所说:

获取给定语言的翻译对象并将其激活为当前线程的当前翻译对象。

线程完成后它就会“死亡”。

您可以设置

LANGUAGE_COOKIE_NAME

 设置的 cookie [Django-doc] 来激活不同的语言:

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
    
© www.soinside.com 2019 - 2024. All rights reserved.