2013-05-05 43 views
0

我開發了Django的文檔在一個多語種博客和示例代碼網頁中選擇語言對我的作品和Django

<form action="/i18n/setlang/" method="post"> 
     {% csrf_token %} 
     <select name="language"> 
      {% get_language_info_list for LANGUAGES as languages %} 
      {% for language in languages %} 
      <option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option> 
      {% endfor %} 
     </select> 
     <input type="submit" value="Go" /> 
    </form> 

這種形式讓用戶選擇他們想要的語言。但我真的想要以鏈接的形式表示: [EN] [VI] 如何在模板中實現該功能?

+0

你可以建立一個URL端點像'/ i18n中/ setlang /(FR | EN | VI)/'並使其'GET'-能。這是用戶選擇語言的選擇。沒有看到任何理由使其成爲「POST」。 – 2013-05-06 07:42:08

+0

你是怎麼做到的? – nam 2013-05-06 07:44:37

回答

3

使用jQuery:

<form action="/i18n/setlang/" method="post" style="display: none" id="change_language_form"> 
    {% csrf_token %} 
    <input type="hidden" value="" name="language" id="language" /> 
</form> 

{% get_language_info_list for LANGUAGES as languages %} 
{% for language in languages %} 
    <a href="#" lang_code="{{ language.code }}" class="change_language">{{ language.name_local }} ({{ language.code }})</a> 
{% endfor %} 

<script> 
    $('.change_language').click(function(e){ 
     e.preventDefault(); 
     $('#language').val($(this).attr('lang_code')); 
     $('#change_language_form').submit(); 
    }); 
</script> 
+0

這可能工作,但不是我想象的。也許我會開發一個視圖,在其中設置客戶端會話的語言代碼 – nam 2013-05-06 11:59:12