2017-10-17 6 views
0

Je souhaite changer la langue actuelle de ma page.Django: Problèmes de modification de la langue en cours

J'utilise ce code HTML pour faire les boutons:

<form action="{% url 'set_language' %}" method="post"> 
    {% csrf_token %} 
    <input name="next" type="hidden" value="{{ request.get_full_path|slice:'3:' }}" /> 
    <ul class="nav navbar-nav navbar-right language menu"> 
     {% get_current_language as LANGUAGE_CODE %} 
     {% get_available_languages as LANGUAGES %} 
     {% get_language_info_list for LANGUAGES as languages %} 
     {% for language in languages %} 
      <li> 
       <h1>{{ language }}</h1> 
       <button type="submit" 
         name="language" 
         value="{{ language.code }}" 
         class="{% if language.code == LANGUAGE_CODE %}selected{% endif %}"> 
        {{ language.name_local }} 
       </button> 

      </li> 
     {% endfor %} 
    </ul> 
</form> 

Je n'ai pas de problème quand je passe de l'espagnol « es » anglais américain « en-us », mais lorsque je tente de passer de l'anglais américain Espagnol me envoyer cette erreur:

Introuvable:/i18n/setlang/-nous/

Répondre

0

Faire teamplatetags dans vos applications djangp comme ci-dessous:

fichier Templatetag

from django import template 
from django.core.urlresolvers import resolve, reverse, Resolver404 
from django.utils.translation import get_language, activate 

register = template.Library() 
@register.simple_tag(takes_context=True) 
def change_lang(context, lang=None, *args, **kwargs): 
    """ 
    Get active page's url by a specified language 
    Usage: {% change_lang 'en' %} 
    """ 
    path = context['request'].path 
    full_path = context['request'].get_full_path() 
    try: 
     url_parts = resolve(path) 
     cur_language = get_language() 
     try: 
      activate(lang) 
      url = reverse(url_parts.view_name, kwargs=url_parts.kwargs) 
      activate(cur_language) 
      parameters = "?{0}".format(full_path.split('?')[1]) if len(full_path.split('?')) == 2 else "" 
      return "{0}{1}".format(url, parameters) 
     except Exception: 
      pass 
    except Resolver404: 
     pass 
    return full_path 

HTML

{% load <templatetag file> %} 
{% get_language_info_list for LANGUAGES as languages %} 
<ul> 
{% for language in languages %} 
    {% if not language.code == LANGUAGE_CODE %} 
    <li> 
     <a href="{% change_lang language.code %}">{{ language.name_local }}</a> 
    </li> 
    {% endif %} 
{% endfor %} 
</ul> 

http://www.neerajbyte.com/snippet/change-language-in-template-using-templatetag-in-d/