Fix cookie popup text resolution per active language

This commit is contained in:
2026-05-17 15:23:11 +02:00
parent f21ce95d72
commit ffd8883915
2 changed files with 27 additions and 32 deletions

View File

@@ -1,5 +1,6 @@
{% load i18n %} {% load i18n %}
{% load wagtailcore_tags ocyanjson %} {% load wagtailcore_tags ocyanjson %}
{% load mandelstudio_i18n %}
{% with settings.cookie_jar.CookieSettings as cookie_settings %} {% with settings.cookie_jar.CookieSettings as cookie_settings %}
{% with request.LANGUAGE_CODE|default:'nl' as language_code %} {% with request.LANGUAGE_CODE|default:'nl' as language_code %}
@@ -14,22 +15,9 @@
<span>{% if lang == 'ru' %}Конфиденциальность и файлы cookie{% elif lang == 'de' %}Datenschutz & Cookies{% elif lang == 'fr' %}Confidentialité & Cookies{% elif lang == 'es' %}Privacidad y Cookies{% elif lang == 'it' %}Privacy e Cookie{% elif lang == 'pt' %}Privacidade & Cookies{% else %}Privacy & Cookies{% endif %}</span> <span>{% if lang == 'ru' %}Конфиденциальность и файлы cookie{% elif lang == 'de' %}Datenschutz & Cookies{% elif lang == 'fr' %}Confidentialité & Cookies{% elif lang == 'es' %}Privacidad y Cookies{% elif lang == 'it' %}Privacy e Cookie{% elif lang == 'pt' %}Privacidade & Cookies{% else %}Privacy & Cookies{% endif %}</span>
</div> </div>
<div id="cookie_popup_content"> <div id="cookie_popup_content">
{% if lang == 'en' and cookie_settings.cookie_message_en %} {% localized_setting_text cookie_settings "cookie_message" as cookie_message_text %}
{{ cookie_settings.cookie_message_en|richtext }} {% if cookie_message_text %}
{% elif lang == 'de' and cookie_settings.cookie_message_de %} {{ cookie_message_text|richtext }}
{{ cookie_settings.cookie_message_de|richtext }}
{% elif lang == 'fr' and cookie_settings.cookie_message_fr %}
{{ cookie_settings.cookie_message_fr|richtext }}
{% elif lang == 'es' and cookie_settings.cookie_message_es %}
{{ cookie_settings.cookie_message_es|richtext }}
{% elif lang == 'it' and cookie_settings.cookie_message_it %}
{{ cookie_settings.cookie_message_it|richtext }}
{% elif lang == 'pt' and cookie_settings.cookie_message_pt %}
{{ cookie_settings.cookie_message_pt|richtext }}
{% elif lang == 'ru' and cookie_settings.cookie_message_ru %}
{{ cookie_settings.cookie_message_ru|richtext }}
{% elif cookie_settings.cookie_message %}
{{ cookie_settings.cookie_message|richtext }}
{% else %} {% else %}
<p> <p>
{% blocktrans %} {% blocktrans %}
@@ -57,22 +45,9 @@
<span>{% if lang == 'ru' %}Настройки cookie{% elif lang == 'de' %}Cookie-Einstellungen{% elif lang == 'fr' %}Paramètres des cookies{% elif lang == 'es' %}Configuración de cookies{% elif lang == 'it' %}Impostazioni cookie{% elif lang == 'pt' %}Definições de cookies{% elif lang == 'en' %}Cookie settings{% else %}Cookie instellingen{% endif %}</span> <span>{% if lang == 'ru' %}Настройки cookie{% elif lang == 'de' %}Cookie-Einstellungen{% elif lang == 'fr' %}Paramètres des cookies{% elif lang == 'es' %}Configuración de cookies{% elif lang == 'it' %}Impostazioni cookie{% elif lang == 'pt' %}Definições de cookies{% elif lang == 'en' %}Cookie settings{% else %}Cookie instellingen{% endif %}</span>
</div> </div>
<div id="cookie_popup_content_modal"> <div id="cookie_popup_content_modal">
{% if lang == 'en' and cookie_settings.popup_cookie_message_en %} {% localized_setting_text cookie_settings "popup_cookie_message" as popup_cookie_message_text %}
{{ cookie_settings.popup_cookie_message_en|richtext }} {% if popup_cookie_message_text %}
{% elif lang == 'de' and cookie_settings.popup_cookie_message_de %} {{ popup_cookie_message_text|richtext }}
{{ cookie_settings.popup_cookie_message_de|richtext }}
{% elif lang == 'fr' and cookie_settings.popup_cookie_message_fr %}
{{ cookie_settings.popup_cookie_message_fr|richtext }}
{% elif lang == 'es' and cookie_settings.popup_cookie_message_es %}
{{ cookie_settings.popup_cookie_message_es|richtext }}
{% elif lang == 'it' and cookie_settings.popup_cookie_message_it %}
{{ cookie_settings.popup_cookie_message_it|richtext }}
{% elif lang == 'pt' and cookie_settings.popup_cookie_message_pt %}
{{ cookie_settings.popup_cookie_message_pt|richtext }}
{% elif lang == 'ru' and cookie_settings.popup_cookie_message_ru %}
{{ cookie_settings.popup_cookie_message_ru|richtext }}
{% elif cookie_settings.popup_cookie_message %}
{{ cookie_settings.popup_cookie_message|richtext }}
{% else %} {% else %}
<p> <p>
{% blocktrans %} {% blocktrans %}

View File

@@ -1,6 +1,7 @@
from __future__ import annotations from __future__ import annotations
from django import template from django import template
from django.utils.translation import get_language
from mandelstudio.i18n_utils import normalize_set_language_next from mandelstudio.i18n_utils import normalize_set_language_next
@@ -29,3 +30,22 @@ def skip_to_content_text(context) -> str:
def language_neutral_path(value: str | None) -> str: def language_neutral_path(value: str | None) -> str:
"""Normalize a path for set_language by removing any leading language prefix.""" """Normalize a path for set_language by removing any leading language prefix."""
return normalize_set_language_next(value) return normalize_set_language_next(value)
@register.simple_tag
def localized_setting_text(settings_obj, field_name: str, fallback_text: str = "") -> str:
"""
Resolve a translated settings field by active language and fallback to base field.
"""
if not settings_obj or not field_name:
return fallback_text
language = (get_language() or "").lower().split("-")[0]
if language and language != "nl":
translated_name = f"{field_name}_{language}"
translated_value = getattr(settings_obj, translated_name, None)
if translated_value:
return translated_value
base_value = getattr(settings_obj, field_name, None)
return base_value or fallback_text