2017-10-17 3 views
0

내 페이지의 현재 언어를 변경하고 싶습니다.Django : 현재 언어 변경 문제

<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> 

내가하려고 할 때 나는 스페인어 'ES'미국 영어 'EN-US'로 전환하고있어 아무런 문제가 없지만 :

나는 버튼을 만들기 위해이 HTML 코드를 사용하고 있습니다 찾을 수 없음

: 스페인어 영어 (미국)로 전환하는 것은 나에게 오류를 보내/국제화/setlang/- 미국/

답변

0

당신의 djangp 응용 프로그램에서 teamplatetags는 아래와 같이 확인 :

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/