- {% trans 'Privacy & Cookies' %}
+ {% cookie_ui_text 'cookie_title' %}
-
-
+
+
- {% trans 'You can update your cookie preferences at any time.' %}
+ {% cookie_ui_text 'hint' %}
- {% trans 'Cookie settings' %}
+ {% cookie_ui_text 'cookie_settings' %}
{% include "cookie_jar/partials/cookie_checkboxes.html" %}
-
-
+
+
diff --git a/mandelstudio/templatetags/mandelstudio_i18n.py b/mandelstudio/templatetags/mandelstudio_i18n.py
index f68d167..f3e7907 100644
--- a/mandelstudio/templatetags/mandelstudio_i18n.py
+++ b/mandelstudio/templatetags/mandelstudio_i18n.py
@@ -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."""