python - Can't change language in django -


this method should set language language code:

def set_language(request):     if request.method == 'post':         response = httpresponseredirect(reverse('root'))         lang_code = request.post.get('language', none)         if lang_code , 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') 

the following form in html change_language.html

<form action="{% url 'profile:language' %}" method="post">             {% get_current_language language_code %}                 <label for="new_lang">{% trans "choose 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> 

in settings.py have following relevant settings:

middleware_classes = (     'django.contrib.sessions.middleware.sessionmiddleware',     'django.contrib.auth.middleware.authenticationmiddleware',     'django.contrib.auth.middleware.sessionauthenticationmiddleware',     'django.contrib.messages.middleware.messagemiddleware',     'django.middleware.clickjacking.xframeoptionsmiddleware',     'django.middleware.common.commonmiddleware',     'django.middleware.csrf.csrfviewmiddleware',     'django.middleware.locale.localemiddleware',     'django.middleware.security.securitymiddleware', )   language_code = 'en' time_zone = 'cet' use_i18n = true use_l10n = true use_tz = true  # languages available languages = (     ('de', 'german'),     ('en', 'english'), ) 

when start website, language german (i in germany). when go change_language page , try set language german english, won't change anything. there maybe forgot?

you need activate language first. need is:

from django.utils import translation django.shortcuts import redirect 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') 

Comments