From 0ff32da99aca0fd9aa5feb9c6c22cb56b90fad52 Mon Sep 17 00:00:00 2001 From: Mandel Olaiya Date: Sat, 16 May 2026 00:10:48 +0200 Subject: [PATCH] Fix multilingual cookie consent rendering and locale support --- locale/de/LC_MESSAGES/django.mo | Bin 0 -> 1399 bytes locale/de/LC_MESSAGES/django.po | 40 +++++++++++ locale/en/LC_MESSAGES/django.mo | Bin 0 -> 1283 bytes locale/es/LC_MESSAGES/django.mo | Bin 0 -> 1362 bytes locale/es/LC_MESSAGES/django.po | 40 +++++++++++ locale/fr/LC_MESSAGES/django.mo | Bin 0 -> 1395 bytes locale/fr/LC_MESSAGES/django.po | 40 +++++++++++ locale/it/LC_MESSAGES/django.mo | Bin 0 -> 1363 bytes locale/it/LC_MESSAGES/django.po | 40 +++++++++++ locale/nl/LC_MESSAGES/django.mo | Bin 0 -> 1346 bytes locale/pt/LC_MESSAGES/django.mo | Bin 0 -> 1372 bytes locale/pt/LC_MESSAGES/django.po | 40 +++++++++++ locale/ru/LC_MESSAGES/django.mo | Bin 0 -> 1643 bytes locale/ru/LC_MESSAGES/django.po | 40 +++++++++++ ...ttings_popup_cookie_message_de_and_more.py | 63 ++++++++++++++++++ mandelstudio/settings/base.py | 10 +++ .../templates/cookie_jar/cookie_banner.html | 18 +++-- 17 files changed, 326 insertions(+), 5 deletions(-) create mode 100644 locale/de/LC_MESSAGES/django.mo create mode 100644 locale/de/LC_MESSAGES/django.po create mode 100644 locale/en/LC_MESSAGES/django.mo create mode 100644 locale/es/LC_MESSAGES/django.mo create mode 100644 locale/es/LC_MESSAGES/django.po create mode 100644 locale/fr/LC_MESSAGES/django.mo create mode 100644 locale/fr/LC_MESSAGES/django.po create mode 100644 locale/it/LC_MESSAGES/django.mo create mode 100644 locale/it/LC_MESSAGES/django.po create mode 100644 locale/nl/LC_MESSAGES/django.mo create mode 100644 locale/pt/LC_MESSAGES/django.mo create mode 100644 locale/pt/LC_MESSAGES/django.po create mode 100644 locale/ru/LC_MESSAGES/django.mo create mode 100644 locale/ru/LC_MESSAGES/django.po create mode 100644 mandelstudio/i18nmigrations/cookie_jar/0008_cookiesettings_popup_cookie_message_de_and_more.py diff --git a/locale/de/LC_MESSAGES/django.mo b/locale/de/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..2823cc5a152282e7c15ee2edf85bad2fb1df240c GIT binary patch literal 1399 zcmY*YU27yo6fJfA8WBHG1o7eeA}*%KPIM(qh_H!?3~n&&M#K6dHQjf*Yp1)at&eFZ zzKF2ws~`&t`?l;q5EdWuHvhxlu)g^sc&a;-Yzi)?y6VYfg5N`p02fhh>1bhYfC-4{GDeyDk=JP_lk9h@r z4d3@(5aMOvAHWB|hroA$pM&IG;28KG@JC?O(*pkj-UV&~zkE>$lT6RB=W8*5dJaNh+!%%DNY$$enR>$5e zT{v-Q)m&x^`iS}+CvM3(Q)79`mUYHhSmhowMYdkJi#2OGV{!q?Ot9x7If7!HbLD)D6`jY^9KRGxqKpEi|LdW*7BTD;WucSrll=0#p)#Oow` zIx{)?H=@mn@`J-FSXm|e#@22`y6HaM_Qn?V)9sHneYj2QSGNY@`s@U*RPl+$55X=^ z;m+gb0nh-BKM5gY$l;gj?IM_1&MN1l*W9@=V(6ucW1gtbPIv)+I&pHv; fXUivAV`W@I(%IWwx*pwO^zQ^*w0w-iRu9GhU-Pjr literal 0 HcmV?d00001 diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po new file mode 100644 index 0000000..e6080a3 --- /dev/null +++ b/locale/de/LC_MESSAGES/django.po @@ -0,0 +1,40 @@ +msgid "" +msgstr "" +"Project-Id-Version: mandelstudio\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-05-15 00:00+0200\n" +"PO-Revision-Date: 2026-05-15 00:00+0200\n" +"Last-Translator: \n" +"Language-Team: German\n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Privacy & Cookies" +msgstr "Datenschutz & Cookies" + +msgid "We use cookies to make sure our website works as well as possible. If you continue using this website, we assume you agree." +msgstr "Wir verwenden Cookies, um sicherzustellen, dass unsere Website so gut wie möglich funktioniert. Wenn Sie diese Website weiter nutzen, gehen wir davon aus, dass Sie einverstanden sind." + +msgid "Accept" +msgstr "Akzeptieren" + +msgid "Settings" +msgstr "Einstellungen" + +msgid "You can update your cookie preferences at any time." +msgstr "Sie können Ihre Cookie-Einstellungen jederzeit ändern." + +msgid "Back" +msgstr "Zurück" + +msgid "Cookie settings" +msgstr "Cookie-Einstellungen" + +msgid "Choose which cookie categories you allow. Functional cookies are always enabled because they are required for the website to work." +msgstr "Wählen Sie aus, welche Cookie-Kategorien Sie erlauben. Funktionale Cookies sind immer aktiviert, da sie für den Betrieb der Website erforderlich sind." + +msgid "Save preferences" +msgstr "Einstellungen speichern" diff --git a/locale/en/LC_MESSAGES/django.mo b/locale/en/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..31340e83a4c90af61eee753aaa5ec8adc90781c2 GIT binary patch literal 1283 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 literal 0 HcmV?d00001 diff --git a/locale/it/LC_MESSAGES/django.po b/locale/it/LC_MESSAGES/django.po new file mode 100644 index 0000000..e3f5d0c --- /dev/null +++ b/locale/it/LC_MESSAGES/django.po @@ -0,0 +1,40 @@ +msgid "" +msgstr "" +"Project-Id-Version: mandelstudio\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-05-15 00:00+0200\n" +"PO-Revision-Date: 2026-05-15 00:00+0200\n" +"Last-Translator: \n" +"Language-Team: Italian\n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Privacy & Cookies" +msgstr "Privacy e cookie" + +msgid "We use cookies to make sure our website works as well as possible. If you continue using this website, we assume you agree." +msgstr "Utilizziamo i cookie per assicurarci che il nostro sito web funzioni nel miglior modo possibile. Se continui a utilizzare questo sito web, presumiamo che tu sia d'accordo." + +msgid "Accept" +msgstr "Accetta" + +msgid "Settings" +msgstr "Impostazioni" + +msgid "You can update your cookie preferences at any time." +msgstr "Puoi aggiornare le tue preferenze sui cookie in qualsiasi momento." + +msgid "Back" +msgstr "Indietro" + +msgid "Cookie settings" +msgstr "Impostazioni cookie" + +msgid "Choose which cookie categories you allow. Functional cookies are always enabled because they are required for the website to work." +msgstr "Scegli quali categorie di cookie consentire. I cookie funzionali sono sempre abilitati perché necessari al funzionamento del sito web." + +msgid "Save preferences" +msgstr "Salva preferenze" diff --git a/locale/nl/LC_MESSAGES/django.mo b/locale/nl/LC_MESSAGES/django.mo new file mode 100644 index 0000000000000000000000000000000000000000..7ac57fbfe3a8f5c25a31e62ce678c6c041299dab GIT binary patch literal 1346 zcmZuw&yN&E6fPA+ClCZrCLW#_Bat3^2Q-`6>|u9dlZ|ZL-~i!R)BUEWrmL&k`Z2>S z7vsUi8yEcpJehd(%8mbnzX5JsNc^gY*_{KGy#BhYUcK+DS6{!pe&J7n(L;QR(1Q&miUVjb zq+_fuIWQWu{`6;{4bCot^ zcfdBJK|c5)%fHXIZd1NB%=2&aL7w;SNguM2lg4Wqti#TG(o|7aoQ+sEL%I_~F+H0c zlF_~6qvN~hYPR}$?*P4EgF?#|Oo5+-?^-RD*`Z=89WHA3!RRpCKF>>pxSZ^+DQt=M z4QYF|!N;O!mWV;Wk&d zd*;d)|Dxx(YW6|OaBfW2>r_vtYGz=~pk^gO4|@o&S(juRTo#=&83?UbdA6Z)!#ThX1?-@z z#xu>sPTdKTR%@Vk{nMOUsw{q{##XG=tnNgj2YcG1CnayBj~GjL*gvo@VgJHjgnjWuQM?TN7WfkIXW(YB zoAtRs>;>LAF9M0>Gb1&fiQgO70~ zj>L9BQMb4=_U;o=u{^5F2jTQc4|U->P9pe-zo3P zOy>*bhsZXf?P~jjvbtGr-K44-Rn@!Ic2y0IImGhRvkiu$^SF7;wn^Mbc`DqFXpHEo zNfPAJGomgIPL56vt|)B{tHC}RA{NmW9nwYlG``mv)^?ZFls%@kcmMRT+_^fJvtmN! zfmNu>8sE>|oF2E+e$)gQFS&at;XAPIQB+mcK6lz$3Y0v(~Pz8GDx;pm4(*8)Na3 zq?ANTXb@6`#D@?SKOk}KHjN$kFU&sh+TQ?gNVF2?jvc3btaNk6Gxwfz?w!fqb7!u3 z_zH*@5i#OvL=VB=?}*0`e<02v{zPmd?jxQ-tUu&=&jG&yJ`21Kd;)j__yw>Bd=ohN zu;;yibqqX<-`kH2G`|Dh#qaCD=Ybm#c^mix@MYj{z;nRAfcJoBAN9OXfKR~`=$sZP z-3JQqNd!`y*T;d}7k}J?``!sdSx>zSB3$)ms!AD2jcOEDDO74Tk`#(mR+NsUp{B}6 z#Ib4=X*Ns3G*XF(hk1sCmN;#QrXiV#*cndmO6Je8Hp}~pq-WO|<>RPTyEt61U<0SVZNvt+7ZkV$s zRwbDX&QzvHVypze1{-nASXahGa9pIh71w2`63A!F2N!S}ak8^Ih6QR&R+EE)RJ4>u z?_jOK_Z&Wo*){9I3*h ztSg=R^QID&{R>&e_)Drpg@yP0MY$Gnf&VVlN;DBnyyXYy{qge@1f?K&J(viB!X;r+ ze@TnP#3EH1m6t?P$wWo^OH$NIw3wl9k&L!Wq_e{O-2BB;KjX!qFoS8x1XRsBv{Lzb z`bIq#Q8GngRcKt*^ao3`{^V&MOX7O`i%F=;7+{Gem!q_>5NBG%{;bk9Q=+8qewyit zDH<%NUrp$xX&QfRs^Hn5^L2Y@kMq5JGvD>>Pj=tlLbN^mZN6gH|-7EcLawgw_scO4q*#4_}j_1vFdPYk?gPeWqWLo@~^e#Btuk8{yd_Vaq)l zu<+)<@jwTfeY~13kA?3PH-U$SI&9w@ycA3VZ?MO+A5IaeEu6cn{?|B99}YKn6)(2W N@3X~^4`%j?-rwql;YR=f literal 0 HcmV?d00001 diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po new file mode 100644 index 0000000..d7645b4 --- /dev/null +++ b/locale/ru/LC_MESSAGES/django.po @@ -0,0 +1,40 @@ +msgid "" +msgstr "" +"Project-Id-Version: mandelstudio\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-05-15 00:00+0200\n" +"PO-Revision-Date: 2026-05-15 00:00+0200\n" +"Last-Translator: \n" +"Language-Team: Russian\n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +msgid "Privacy & Cookies" +msgstr "Конфиденциальность и файлы cookie" + +msgid "We use cookies to make sure our website works as well as possible. If you continue using this website, we assume you agree." +msgstr "Мы используем файлы cookie, чтобы наш сайт работал как можно лучше. Если вы продолжаете пользоваться этим сайтом, мы считаем, что вы согласны." + +msgid "Accept" +msgstr "Принять" + +msgid "Settings" +msgstr "Настройки" + +msgid "You can update your cookie preferences at any time." +msgstr "Вы можете изменить свои настройки cookie в любое время." + +msgid "Back" +msgstr "Назад" + +msgid "Cookie settings" +msgstr "Настройки cookie" + +msgid "Choose which cookie categories you allow. Functional cookies are always enabled because they are required for the website to work." +msgstr "Выберите, какие категории cookie вы разрешаете. Функциональные cookie всегда включены, так как они необходимы для работы сайта." + +msgid "Save preferences" +msgstr "Сохранить настройки" diff --git a/mandelstudio/i18nmigrations/cookie_jar/0008_cookiesettings_popup_cookie_message_de_and_more.py b/mandelstudio/i18nmigrations/cookie_jar/0008_cookiesettings_popup_cookie_message_de_and_more.py new file mode 100644 index 0000000..dd3234f --- /dev/null +++ b/mandelstudio/i18nmigrations/cookie_jar/0008_cookiesettings_popup_cookie_message_de_and_more.py @@ -0,0 +1,63 @@ +# Generated by Django 5.2.11 on 2026-05-15 00:00 + +from django.db import migrations + +import wagtail.fields + + +class Migration(migrations.Migration): + dependencies = [ + ("cookie_jar", "0007_cookiesettings_cookie_message_de_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="cookiesettings", + name="popup_cookie_message_de", + field=wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Popup cookie statement" + ), + ), + migrations.AddField( + model_name="cookiesettings", + name="popup_cookie_message_en", + field=wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Popup cookie statement" + ), + ), + migrations.AddField( + model_name="cookiesettings", + name="popup_cookie_message_es", + field=wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Popup cookie statement" + ), + ), + migrations.AddField( + model_name="cookiesettings", + name="popup_cookie_message_fr", + field=wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Popup cookie statement" + ), + ), + migrations.AddField( + model_name="cookiesettings", + name="popup_cookie_message_it", + field=wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Popup cookie statement" + ), + ), + migrations.AddField( + model_name="cookiesettings", + name="popup_cookie_message_pt", + field=wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Popup cookie statement" + ), + ), + migrations.AddField( + model_name="cookiesettings", + name="popup_cookie_message_ru", + field=wagtail.fields.RichTextField( + blank=True, null=True, verbose_name="Popup cookie statement" + ), + ), + ] diff --git a/mandelstudio/settings/base.py b/mandelstudio/settings/base.py index ca2bd3d..0ab0262 100644 --- a/mandelstudio/settings/base.py +++ b/mandelstudio/settings/base.py @@ -174,6 +174,16 @@ ACTIVE_VERTICAL = "agency" WAGTAIL_I18N_ENABLED = True WAGTAIL_CONTENT_LANGUAGES = LANGUAGES +# Ocyan i18n field mapping (language-aware columns per active language). +_translated_fields = dict(globals().get("OCYAN_I18N_TRANSLATED_FIELDS", {})) +_translated_fields.update( + { + "cookie_jar.cookiesettings.cookie_message": True, + "cookie_jar.cookiesettings.popup_cookie_message": True, + } +) +OCYAN_I18N_TRANSLATED_FIELDS = _translated_fields + CONTENT_GUARD_STRICT = True CONTENT_GUARD_BLOCK_MEDIUM = False CONTENT_GUARD_LOCALES = [code for code, _label in LANGUAGES] diff --git a/mandelstudio/templates/cookie_jar/cookie_banner.html b/mandelstudio/templates/cookie_jar/cookie_banner.html index c3625cf..87d29db 100644 --- a/mandelstudio/templates/cookie_jar/cookie_banner.html +++ b/mandelstudio/templates/cookie_jar/cookie_banner.html @@ -2,6 +2,8 @@ {% 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 %} + {% endif %} + {% endif %} {% endwith %}