Browse Source

Added admin language switcher (j@thing.net).

master
Erik Stein 7 years ago
parent
commit
9995394b53
  1. 46
      shared/multilingual/static/multilingual/js/switch_language.js
  2. 24
      shared/multilingual/templates/multilingual/admin/switch_language.html

46
shared/multilingual/static/multilingual/js/switch_language.js

@ -0,0 +1,46 @@
// TODO Add lang attribute to form fields, use lang attribute to query fields
function showLanguages(languages) {
document.querySelectorAll('.form-row, .field-box').forEach(function(row) {
var lang = [];
row.classList.forEach(function(cls) {
if (cls) {
var l = cls.split('_').pop();
if (l.length == 2 || l.length == 3) {
lang.push(l)
}
}
});
if (lang.length) {
var display = 'none';
if (lang.filter(function(l) { return languages.includes(l); }).length > 0) {
display = 'block'
}
row.style.display = display;
}
})
localStorage.admin_languages = languages.join(' ')
document.querySelectorAll('.language-select').forEach(function(a) {
if (a.dataset.languages == localStorage.admin_languages) {
a.classList.add('selected')
} else {
a.classList.remove('selected')
}
})
}
(function($) {
$(document).ready(function() {
$('.language-select').on({
click: function() {
showLanguages(this.dataset.languages.split(' '))
}
})
var languages = $('.language-select.selected').data('languages')
if (localStorage.admin_languages) {
languages = localStorage.admin_languages
}
if (languages) {
showLanguages(languages.split(' '))
}
})
})(django.jQuery);

24
shared/multilingual/templates/multilingual/admin/switch_language.html

@ -0,0 +1,24 @@
{% load i18n %}
<style>
.language-switch .selected { background-color: #417690 }
.language-switch.end-group { margin-right: 1em; }
</style>
{% get_available_languages as languages %}
<li class="language-switch">
<a class="language-select" href="#" data-languages="{% for lang_code, _ in languages %}{{ lang_code }}{% if not forloop.last %} {% endif %}{% endfor %}">
{% trans 'All' %}
</a>
</li>
{% for lang_code, lang_name in languages %}
<li class="language-switch{% if forloop.last %} end-group{% endif %}">
<a class="language-select{% if request.LANGUAGE_CODE == lang_code %} selected{% endif %}"
href="#"
data-languages="{{ lang_code }}">
{{ lang_name }}
</a>
</li>
{% endfor %}
Loading…
Cancel
Save