Internationalizing Django with i18n: choosing a language in a template using jQuery

To internationalize my django project, I use django i18n and I like it.


To set the language in the template instead of using forms such as in this example:

  <form action="{{site_url}}i18n/setlang/" method="post">
    <input name="next" type="hidden" value="" />
    <select name="language">
      {% for language in languages %}
      <option value="{{language.0}}">{{language.1}}</option>
      {% endfor %}
    </select>
    <input type="submit" value="Ok" />
  </form>

I would like to use simple text links; something like that:

{% for language in languages %}
    {% ifnotequal language.0 lang %}
    <a href="{{site_url}}i18n/setlang/" >{{language.1}}</a>{% else %}{{language.1}}
    {% endifnotequal %}
    ...
{% endfor %}

To allow the previous template fragment to do its work, I created the following jQuery function:

var languageLink = $('#language-choser > a');

languageLink.click(function(e){
  var languageURL = languageLink.attr('href');
  var languageNow = languageLink.text();
  var lang = (languageNow=='English') ? 'en' : 'es';
  $.post(languageURL, {next: "", language:lang});
});

This function works with Firefox, but not with Chrome: it will simply reload the page without changing the language.

Can anyone tell me what happened? I talked with him for a long time, not finding a way out.


, . . ? ? ...

+3
1

debug (console.log() alert()) , , . document.ready()?

, $.post AJAX POST, , . Firebug/Chrome, , .

, , click() (true , , false ). , : Firefox true, , Chrome false POST, .

0

Source: https://habr.com/ru/post/1759429/


All Articles