Django CMS language_chooser JQuery Template

In Django CMS by oesahLeave a Comment

Hier ein Beispiel, für das Template der language_chooser Funktion in Django CMS. Wenn ein Nutzer eine Sprache auswählt im Dropdown, wird dies automatisch umgestellt.

Speichere das Template entweder in menu/language_chooser.html oder erstelle das Template im eigenen Verzeichnis. Beim eigenen Verzeichnis muss dieses im Templatetag angegeben werden. In unserem Beispiel nutzen wir ein eigenes Verzeichnis und geben dies im Templatetag an.

#dashboard/snippets/choose_language.html

{% load i18n menu_tags %}

{% if languages|length > 1 %}
<small>{% trans 'Language:' %}</small>
<form action="/i18n/setlang/" method="post" style="display: inline;">{% csrf_token %}
    <div style="display: inline;">
        <select class="form-control" id="language-chooser" name="language">
            {% for lang in languages %}
                <option value="{% page_language_url lang.0 %}"{% if current_language == lang.0 %} selected="selected"{% endif %}>{{ lang.1 }}</option>
            {% endfor %}
        </select>
    </div>
</form>

<script>
    $(function(){
      // bind change event to select
      $('#language-chooser').on('change', function () {
          var url = $(this).val(); // get selected value
          if (url) { // require a URL
              window.location = url; // redirect
          }
          return false;
      });
    });
</script>

{% endif %}

Danach kann man die Sprachwahl überall einsetzen. Dafür immer menu tags laden:

{% load menu_tags %}

{% language_chooser 'dashboard/snippets/language_chooser.html' %}

Resultat: Bildschirmfoto 2016-05-31 um 16.24.34

Leave a Comment