fix: robust language switcher links
This commit is contained in:
@@ -1,9 +1,7 @@
|
|||||||
{% load i18n localized_navigation %}
|
{% load i18n localized_navigation %}
|
||||||
|
|
||||||
<div class="header-right">
|
<div class="header-right">
|
||||||
{% get_current_language as current_language %}
|
|
||||||
{% get_available_languages as available_languages %}
|
{% get_available_languages as available_languages %}
|
||||||
{% get_language_info_list for available_languages as languages %}
|
|
||||||
{% request_language_options as language_options %}
|
{% request_language_options as language_options %}
|
||||||
|
|
||||||
<div class="dropdown language-dropdown me-2">
|
<div class="dropdown language-dropdown me-2">
|
||||||
@@ -29,16 +27,12 @@
|
|||||||
</button>
|
</button>
|
||||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="header-language-switcher">
|
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="header-language-switcher">
|
||||||
{% for option in language_options %}
|
{% for option in language_options %}
|
||||||
{% for language in languages %}
|
|
||||||
{% if language.code == option.code %}
|
|
||||||
<li>
|
<li>
|
||||||
<a class="dropdown-item d-flex align-items-center gap-2" href="{{ option.url }}">
|
<a class="dropdown-item d-flex align-items-center gap-2" href="{{ option.url }}">
|
||||||
{% include "oxyan/partials/flags/"|add:language.code|add:".svg" %}
|
{% include "oxyan/partials/flags/"|add:option.code|add:".svg" %}
|
||||||
<span>{{ language.name_local|title }}</span>
|
<span>{{ option.label|title }}</span>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -141,10 +141,13 @@ def page_language_options(page):
|
|||||||
|
|
||||||
@register.simple_tag(takes_context=True)
|
@register.simple_tag(takes_context=True)
|
||||||
def request_language_options(context):
|
def request_language_options(context):
|
||||||
|
try:
|
||||||
page = context.get("page") or context.get("self")
|
page = context.get("page") or context.get("self")
|
||||||
if page is None:
|
if page is None:
|
||||||
page = _resolve_page_from_request(context.get("request"))
|
page = _resolve_page_from_request(context.get("request"))
|
||||||
return page_language_options(page)
|
return page_language_options(page)
|
||||||
|
except Exception:
|
||||||
|
return page_language_options(None)
|
||||||
|
|
||||||
|
|
||||||
@register.simple_tag(takes_context=True)
|
@register.simple_tag(takes_context=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user