1

i18n 패턴의 URL이있는 앱의 전환 언어는 좋은 SEO를 얻기 위해 접두사로 번역하려는 모든 페이지와 같은 페이지와 다른 페이지 우리는 URL에 접두어를 사용하고 싶지 않습니다.Django i18n 패턴 및 일반 url_pattern을 사용하는 언어 전환

<form action="{% url 'set_language' %}" method="POST" class="langform" style="display:none;"> 
{% csrf_token %} 
<input name="next" type="hidden" value="{{ request.get_full_path|strip_lang }}" /> 
<input name="language" id="language" type="hidden" value="" /> 
</form> 
:

이 내 형태 :

그래서 나는 모든 괜찮아 내가 스위치 언어를 처리하는 형태를하고있을 때 난 단지 문제에 직면하고있어이 때까지, 2 개 패턴을 ​​분리

나는 자바 스크립트를 통해 유효성을 검사합니다. 모두 괜찮습니다. 언어 값을 채우면 양식이 잘 제출됩니다.

@register.filter(name="strip_lang") 
    def strip_lang(value): 
     lang = get_language() 
     return '/%s/' % value.lstrip('/%s/' % lang) 

이 필터의 목표는 URL이있는 경우 볼 수 있습니다 : 내 진짜 문제는 다음 값은 내가 너무 일반적인 다음 값을 필요로하기 때문에 나는이 같은 필터와 request.path했다입니다 언어 접두어를 사용하면 접두어가없는 URL 만 다음 값으로 갖도록 제거합니다. 이 필터의

출력은 다음과 같다 : 우리는/FR/페이지에있는 경우 /가/페이지/기본/

I 스위치 언어 아무것도하지만, 작업을 클릭됩니다 기본. 그것은 여전히 ​​같은 언어입니다. 그래서 나는 슬래시를 제거했다.하지만 그것은 올바른 길이 아니기 때문에 404 다 ...

내가 가진 2 가지 종류의 URL을 관리하려면 어떻게해야합니까? 하나는 URL 접두어이고 다른 하나는 접미사가없는 것입니다 ...

언어는 일부 상황에서 잘 작동합니다.

감사합니다.

답변

0

좋아, 그래서 나는 그것을 작동하도록 만들었고, 나는 단지 {% language lang_code %}를 내 링크에 추가해야만했다.

이제 일반적인 다음 값으로 작업하는 내 URL이 있습니다. 나를 위해

$('.lang-switch li a').click(function (e) { 
e.preventDefault; 
var lang = $(this).attr('rel'); 
$('.langform #language').val(lang); 
$('.langform').submit(); 
}); 
0
@register.filter(name="strip_lang") 
def strip_lang(value): 
    lang = get_language() 
    return value.replace('/{0}/'.format(lang), '/') 

작품 :

<ul class="lang-switch"> 
      {% get_language_info_list for LANGUAGES as languages %} 
       {% for language in languages %} 
       {% language lang_code %} 
       <li><a href="#" rel="{{ language.code }}">{{ language.code|upper }}</a></li> 
       {% endlanguage %} 
       {% endfor %} 
     </ul> 

난 그냥 당신이 그것을 작동하게 내가이 일을 관리하는 방법을 이해하는 데 도움이 작업을 수행 나의 작은 자바 스크립트를 게시 할 수 있습니다.