feat: make the language dropdown items set the language cookie

Include i18n urls then add a form to set the cookie using the currently implemented items
This commit is contained in:
Francisco
2026-01-03 18:26:33 -05:00
parent 908278427f
commit 0cf336fcfa
3 changed files with 23 additions and 5 deletions

View File

@@ -1,11 +1,11 @@
{% load i18n static %} {% load i18n static %}
<li> <li>
<a class="dropdown-item" href="{{ i18n_path }}"> <button class="dropdown-item" type="button" data-language="{{ code }}">
<img src="{% static path %}" <img src="{% static path %}"
width="20" width="20"
alt="{% translate name %}" alt="{% translate name %}"
title="{% translate name %}"> title="{% translate name %}">
{% translate name %} / <small>{{ name }}</small> {% translate name %} / <small>{{ name }}</small>
</a> </button>
</li> </li>

View File

@@ -203,15 +203,32 @@
</button> </button>
<ul class="dropdown-menu language-menu" aria-labelledby="btnGroupLanguages"> <ul class="dropdown-menu language-menu" aria-labelledby="btnGroupLanguages">
<li> <li>
<a href="" class="dropdown-item"> <a href="" class="dropdown-item">
<span class="{% fa_class 'globe' %}"></span> <span class="{% fa_class 'globe' %}"></span>
<span>{% translate "Browser language" %}</span> <span>{% translate "Browser language" %}</span>
</a> </a>
</li> </li>
{% for language in languages %}
{% language_select language %} <form id="language-form" action="{% url 'set_language' %}" method="post">
{% endfor %} {% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}">
<input type="hidden" name="language" id="language-input">
{% for language in languages %}
{% language_select language %}
{% endfor %}
</form>
<script>
document.querySelectorAll('[data-language]').forEach(item => {
item.addEventListener('click', function(e) {
e.preventDefault();
document.getElementById('language-input').value = this.dataset.language;
document.getElementById('language-form').submit();
});
});
</script>
<li> <li>
<hr class="dropdown-divider"></hr> <hr class="dropdown-divider"></hr>
</li> </li>

View File

@@ -297,6 +297,7 @@ urlpatterns = i18n_patterns(
# URLs without language prefix # URLs without language prefix
# #
urlpatterns += [ urlpatterns += [
path("i18n/", include("django.conf.urls.i18n")),
path('robots.txt', TextTemplateView.as_view(template_name='robots.txt'), name='robots'), path('robots.txt', TextTemplateView.as_view(template_name='robots.txt'), name='robots'),
# API # API
path('api/v2/exercise/search/', exercises_api_views.search, name='exercise-search'), path('api/v2/exercise/search/', exercises_api_views.search, name='exercise-search'),