Python Can';不要用django改变语言
此方法应使用语言代码设置语言:Python Can';不要用django改变语言,python,django,internationalization,Python,Django,Internationalization,此方法应使用语言代码设置语言: def set_language(request): if request.method == 'POST': response = HttpResponseRedirect(reverse('root')) lang_code = request.POST.get('language', None) if lang_code and check_for_language(lang_code):
def set_language(request):
if request.method == 'POST':
response = HttpResponseRedirect(reverse('root'))
lang_code = request.POST.get('language', None)
if lang_code and check_for_language(lang_code):
if hasattr(request, 'session'):
request.session['django_language'] = lang_code
else:
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
return response
return render(request, 'profile/change_language.html')
以下表单位于html change_language.html中
<form action="{% url 'profile:language' %}" method="post">
{% get_current_language as LANGUAGE_CODE %}
<label for="new_lang">{% trans "Choose your language:" %}</label>
<fieldset>
<input type="radio" id="de" name="language" value="de" {% if LANGUAGE_CODE == 'de' %} checked {% endif %} >
<label for="de">German</label>
<input type="radio" id="uk" name="language" value="en" {% if LANGUAGE_CODE == 'en' %} checked {% endif %} >
<label for="en">English</label>
</fieldset>
{{ form.newlang }}
<input type="submit" value="Change language">
{% csrf_token %}
</form>
当我启动网站时,我的语言是德语(我在德国)。当我转到change_language页面并尝试将语言从德语设置为英语时,它不会改变任何东西。有什么我可能忘记的吗?您需要先激活该语言。您所需要的只是:
from django.utils import translation
from django.shortcuts import redirect
from django.conf import settings
def set_language(request):
language = request.POST.get('language', settings.LANGUAGE_CODE)
translation.activate(language)
request.session[translation.LANGUAGE_SESSION_KEY] = language
return redirect('root')
你需要先激活语言。您所需要的只是:
from django.utils import translation
from django.shortcuts import redirect
from django.conf import settings
def set_language(request):
language = request.POST.get('language', settings.LANGUAGE_CODE)
translation.activate(language)
request.session[translation.LANGUAGE_SESSION_KEY] = language
return redirect('root')
为什么不用?为什么不用?谢谢你的帮助。我在我的代码中添加了
translation.activate(lang\u code)
,但这并没有改变任何事情对不起,我忘记了translation.LANGUAGE\u SESSION\u KEY
谢谢您的帮助。我在我的代码中添加了translation.activate(lang\u code)
,但这并没有改变任何事情对不起,我忘记了translation.LANGUAGE\u SESSION\u KEY