Make cookie modal fully locale-aware via settings-aware resolver
This commit is contained in:
@@ -1,19 +1,21 @@
|
||||
{% load i18n %}
|
||||
{% load mandelstudio_i18n %}
|
||||
{% load wagtailcore_tags ocyanjson %}
|
||||
|
||||
{% with settings.cookie_jar.CookieSettings as cookie_settings %}
|
||||
{% if cookie_jar.needs_approval or cookie_jar.site_settings.strict_cookies %}
|
||||
{% if cookie_jar.needs_display or cookie_jar.cookie is None %}
|
||||
<div id="cookie_popup_body" class="cookie-consent-overlay" role="region" aria-label="{% trans 'Cookie settings' %}">
|
||||
<div id="cookie_popup_body" class="cookie-consent-overlay" role="region" aria-label="{% cookie_ui_text 'cookie_settings' %}">
|
||||
<div class="cookie-consent-modal" role="dialog" aria-modal="true" aria-labelledby="cookie-consent-title">
|
||||
<div class="cookie-consent-panel is-active" id="cookie-consent-main-panel">
|
||||
<div class="cookie-banner-title" id="cookie-consent-title">
|
||||
<i class="fa fa-shield-halved" aria-hidden="true"></i>
|
||||
<span>{% trans 'Privacy & Cookies' %}</span>
|
||||
<span>{% cookie_ui_text 'cookie_title' %}</span>
|
||||
</div>
|
||||
<div id="cookie_popup_content">
|
||||
{% if cookie_settings.cookie_message %}
|
||||
{{ cookie_settings.cookie_message|richtext }}
|
||||
{% localized_cookie_text cookie_settings "cookie_message" as cookie_message_text %}
|
||||
{% if cookie_message_text %}
|
||||
{{ cookie_message_text|richtext }}
|
||||
{% else %}
|
||||
<p>
|
||||
{% blocktrans %}
|
||||
@@ -23,26 +25,27 @@
|
||||
{% endif %}
|
||||
</div>
|
||||
<div id="cookie_buttons" class="cookie-consent-actions">
|
||||
<button type="button" id="cookie_popup_acceptButton" data-cookie-key="{{ cookie_jar.cookie_key }}">{% trans 'Accept' %}</button>
|
||||
<button type="button" id="cookie_popup_settingsToggle">{% trans 'Settings' %}</button>
|
||||
<button type="button" id="cookie_popup_acceptButton" data-cookie-key="{{ cookie_jar.cookie_key }}">{% cookie_ui_text 'accept' %}</button>
|
||||
<button type="button" id="cookie_popup_settingsToggle">{% cookie_ui_text 'settings' %}</button>
|
||||
</div>
|
||||
<div class="cookie-consent-hint">
|
||||
{% trans 'You can update your cookie preferences at any time.' %}
|
||||
{% cookie_ui_text 'hint' %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="cookie-consent-panel" id="cookie-consent-settings-panel">
|
||||
<button type="button" class="cookie-consent-back" id="cookie_popup_backButton">
|
||||
<i class="fa fa-arrow-left" aria-hidden="true"></i>
|
||||
<span>{% trans 'Back' %}</span>
|
||||
<span>{% cookie_ui_text 'back' %}</span>
|
||||
</button>
|
||||
<div class="cookie-banner-title">
|
||||
<i class="fa fa-sliders" aria-hidden="true"></i>
|
||||
<span>{% trans 'Cookie settings' %}</span>
|
||||
<span>{% cookie_ui_text 'cookie_settings' %}</span>
|
||||
</div>
|
||||
<div id="cookie_popup_content_modal">
|
||||
{% if cookie_settings.popup_cookie_message %}
|
||||
{{ cookie_settings.popup_cookie_message|richtext }}
|
||||
{% localized_cookie_text cookie_settings "popup_cookie_message" as popup_cookie_message_text %}
|
||||
{% if popup_cookie_message_text %}
|
||||
{{ popup_cookie_message_text|richtext }}
|
||||
{% else %}
|
||||
<p>
|
||||
{% blocktrans %}
|
||||
@@ -53,8 +56,8 @@
|
||||
</div>
|
||||
{% include "cookie_jar/partials/cookie_checkboxes.html" %}
|
||||
<div class="cookie-consent-actions cookie-consent-actions-settings">
|
||||
<button type="button" id="cookie_popup_acceptButton_settings">{% trans 'Accept' %}</button>
|
||||
<button type="button" id="cookie_model_saveButton" data-cookie-key="{{ cookie_jar.cookie_key }}">{% trans 'Save preferences' %}</button>
|
||||
<button type="button" id="cookie_popup_acceptButton_settings">{% cookie_ui_text 'accept' %}</button>
|
||||
<button type="button" id="cookie_model_saveButton" data-cookie-key="{{ cookie_jar.cookie_key }}">{% cookie_ui_text 'save_preferences' %}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -17,14 +17,113 @@ SKIP_TO_CONTENT = {
|
||||
"ru": "Перейти к содержанию",
|
||||
}
|
||||
|
||||
COOKIE_UI_TEXT = {
|
||||
"cookie_title": {
|
||||
"nl": "Privacy & Cookies",
|
||||
"en": "Privacy & Cookies",
|
||||
"de": "Datenschutz & Cookies",
|
||||
"fr": "Confidentialité & Cookies",
|
||||
"es": "Privacidad y Cookies",
|
||||
"it": "Privacy e Cookie",
|
||||
"pt": "Privacidade e Cookies",
|
||||
"ru": "Конфиденциальность и файлы cookie",
|
||||
},
|
||||
"accept": {
|
||||
"nl": "Accepteer",
|
||||
"en": "Accept",
|
||||
"de": "Akzeptieren",
|
||||
"fr": "Accepter",
|
||||
"es": "Aceptar",
|
||||
"it": "Accetta",
|
||||
"pt": "Aceitar",
|
||||
"ru": "Принять",
|
||||
},
|
||||
"settings": {
|
||||
"nl": "Instellingen",
|
||||
"en": "Settings",
|
||||
"de": "Einstellungen",
|
||||
"fr": "Paramètres",
|
||||
"es": "Configuración",
|
||||
"it": "Impostazioni",
|
||||
"pt": "Definições",
|
||||
"ru": "Настройки",
|
||||
},
|
||||
"hint": {
|
||||
"nl": "U kunt uw cookievoorkeuren op elk moment aanpassen.",
|
||||
"en": "You can update your cookie preferences at any time.",
|
||||
"de": "Sie können Ihre Cookie-Einstellungen jederzeit aktualisieren.",
|
||||
"fr": "Vous pouvez mettre à jour vos préférences de cookies à tout moment.",
|
||||
"es": "Puede actualizar sus preferencias de cookies en cualquier momento.",
|
||||
"it": "Puoi aggiornare le tue preferenze sui cookie in qualsiasi momento.",
|
||||
"pt": "Pode atualizar as suas preferências de cookies a qualquer momento.",
|
||||
"ru": "Вы можете изменить свои настройки cookie в любое время.",
|
||||
},
|
||||
"back": {
|
||||
"nl": "Terug",
|
||||
"en": "Back",
|
||||
"de": "Zurück",
|
||||
"fr": "Retour",
|
||||
"es": "Volver",
|
||||
"it": "Indietro",
|
||||
"pt": "Voltar",
|
||||
"ru": "Назад",
|
||||
},
|
||||
"cookie_settings": {
|
||||
"nl": "Cookie instellingen",
|
||||
"en": "Cookie settings",
|
||||
"de": "Cookie-Einstellungen",
|
||||
"fr": "Paramètres des cookies",
|
||||
"es": "Configuración de cookies",
|
||||
"it": "Impostazioni cookie",
|
||||
"pt": "Definições de cookies",
|
||||
"ru": "Настройки cookie",
|
||||
},
|
||||
"save_preferences": {
|
||||
"nl": "Voorkeuren opslaan",
|
||||
"en": "Save preferences",
|
||||
"de": "Einstellungen speichern",
|
||||
"fr": "Enregistrer les préférences",
|
||||
"es": "Guardar preferencias",
|
||||
"it": "Salva preferenze",
|
||||
"pt": "Guardar preferências",
|
||||
"ru": "Сохранить настройки",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
def _active_language(context) -> str:
|
||||
request = context.get("request")
|
||||
language_code = getattr(request, "LANGUAGE_CODE", "nl") or "nl"
|
||||
return language_code.split("-")[0].lower()
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def skip_to_content_text(context) -> str:
|
||||
request = context.get("request")
|
||||
language_code = getattr(request, "LANGUAGE_CODE", "nl")
|
||||
language_code = _active_language(context)
|
||||
return SKIP_TO_CONTENT.get(language_code, SKIP_TO_CONTENT["en"])
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def cookie_ui_text(context, key: str) -> str:
|
||||
language_code = _active_language(context)
|
||||
options = COOKIE_UI_TEXT.get(key, {})
|
||||
return options.get(language_code, options.get("en", ""))
|
||||
|
||||
|
||||
@register.simple_tag(takes_context=True)
|
||||
def localized_cookie_text(context, cookie_settings, base_field: str) -> str:
|
||||
"""Read cookie settings text for active language with safe fallbacks."""
|
||||
language_code = _active_language(context)
|
||||
suffix_field = f"{base_field}_{language_code}"
|
||||
english_field = f"{base_field}_en"
|
||||
|
||||
for candidate in (suffix_field, base_field, english_field):
|
||||
value = getattr(cookie_settings, candidate, None)
|
||||
if value:
|
||||
return value
|
||||
return ""
|
||||
|
||||
|
||||
@register.filter(name="language_neutral_path")
|
||||
def language_neutral_path(value: str | None) -> str:
|
||||
"""Normalize a path for set_language by removing any leading language prefix."""
|
||||
|
||||
Reference in New Issue
Block a user