@owlmeans/consent 0.1.18-rc.3 → 0.1.18-rc.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/consts.d.ts +1 -1
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +1 -1
- package/build/consts.js.map +1 -1
- package/build/i18n/be.json +10 -1
- package/build/i18n/de.json +10 -1
- package/build/i18n/en.json +10 -1
- package/build/i18n/es.json +10 -1
- package/build/i18n/fr.json +34 -0
- package/build/i18n/pl.json +10 -1
- package/build/i18n/ru.json +10 -1
- package/build/i18n/uk.json +10 -1
- package/build/i18n.d.ts.map +1 -1
- package/build/i18n.js +2 -1
- package/build/i18n.js.map +1 -1
- package/build/types.d.ts +29 -0
- package/build/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/consts.ts +1 -1
- package/src/i18n/be.json +10 -1
- package/src/i18n/de.json +10 -1
- package/src/i18n/en.json +10 -1
- package/src/i18n/es.json +10 -1
- package/src/i18n/fr.json +34 -0
- package/src/i18n/pl.json +10 -1
- package/src/i18n/ru.json +10 -1
- package/src/i18n/uk.json +10 -1
- package/src/i18n.ts +2 -1
- package/src/types.ts +30 -0
- package/tests/consent.spec.ts +22 -4
- package/build/.gitkeep +0 -0
package/build/consts.d.ts
CHANGED
|
@@ -20,7 +20,7 @@ export declare const CONSENT_SETUP_FLAG = "cookieConsentSetup";
|
|
|
20
20
|
export declare const CONSENT_ESSENTIAL = "essential";
|
|
21
21
|
export declare const CONSENT_ANALYTICS = "analytics";
|
|
22
22
|
export declare const CONSENT_MARKETING = "marketing";
|
|
23
|
-
export declare const CONSENT_LOCALES: readonly ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de'];
|
|
23
|
+
export declare const CONSENT_LOCALES: readonly ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de', 'fr'];
|
|
24
24
|
export type ConsentLocale = (typeof CONSENT_LOCALES)[number];
|
|
25
25
|
/**
|
|
26
26
|
* The categories every OwlMeans surface starts with.
|
package/build/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,wBAAwB,CAAA;AAEhD,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AAEtD,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAE5C,eAAO,MAAM,eAAe,YAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,wBAAwB,CAAA;AAEhD,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAEvC,2FAA2F;AAC3F,eAAO,MAAM,kBAAkB,uBAAuB,CAAA;AAEtD,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAC5C,eAAO,MAAM,iBAAiB,cAAc,CAAA;AAE5C,eAAO,MAAM,eAAe,YAAI,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAExF,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAE5D;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,EAAE,eAAe,EAmBvD,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAQxE,CAAA"}
|
package/build/consts.js
CHANGED
|
@@ -19,7 +19,7 @@ export const CONSENT_SETUP_FLAG = 'cookieConsentSetup';
|
|
|
19
19
|
export const CONSENT_ESSENTIAL = 'essential';
|
|
20
20
|
export const CONSENT_ANALYTICS = 'analytics';
|
|
21
21
|
export const CONSENT_MARKETING = 'marketing';
|
|
22
|
-
export const CONSENT_LOCALES = ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de'];
|
|
22
|
+
export const CONSENT_LOCALES = ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de', 'fr'];
|
|
23
23
|
/**
|
|
24
24
|
* The categories every OwlMeans surface starts with.
|
|
25
25
|
*
|
package/build/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAEvC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAA;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAEvC,2FAA2F;AAC3F,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAA;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAA;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AAIxF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAsB;IAC3D;QACE,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,IAAI;QACtC,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,kBAAkB,EAAE,uBAAuB,CAAC;KACvD;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,mBAAmB,CAAC;KAC/B;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe;QACtD,SAAS,EAAE,qBAAqB;QAChC,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,oBAAoB,CAAC;KAC9D;CACF,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAyC;IAC3E,UAAU,EAAE,QAAQ;IACpB,YAAY,EAAE,QAAQ;IACtB,kBAAkB,EAAE,QAAQ;IAC5B,iBAAiB,EAAE,QAAQ;IAC3B,qBAAqB,EAAE,QAAQ;IAC/B,uBAAuB,EAAE,QAAQ;IACjC,gBAAgB,EAAE,SAAS;CAC5B,CAAA"}
|
package/build/i18n/be.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Ваш выбар захоўваецца ў гэтым браўзеры пад ключом «{{key}}» — і ў лакальным сховішчы, і ў файле cookie.",
|
|
22
22
|
"policyRetention": "Запіс захоўваецца {{days}} дзён, пасля чаго мы спытаем зноў.",
|
|
23
23
|
"policyOperator": "Гэтая праграма належыць {{operator}}.",
|
|
24
|
-
"policyContact": "Азнаёмцеся з іх палітыкай прыватнасці і ўмовамі карыстання, каб даведацца, як яны апрацоўваюць вашы даныя."
|
|
24
|
+
"policyContact": "Азнаёмцеся з іх палітыкай прыватнасці і ўмовамі карыстання, каб даведацца, як яны апрацоўваюць вашы даныя.",
|
|
25
|
+
"policyServicesOf": "Сэрвісы — {{category}}",
|
|
26
|
+
"policyOtherServices": "Іншыя сэрвісы",
|
|
27
|
+
"policyOtherServicesDesc": "Сэрвісы, якія гэтая праграма выкарыстоўвае па-за пералічанымі вышэй катэгорыямі.",
|
|
28
|
+
"policyProvider": "Пастаўшчык",
|
|
29
|
+
"policyPurpose": "Мэта",
|
|
30
|
+
"policyCookies": "Файлы cookie",
|
|
31
|
+
"policyServicePrivacy": "Палітыка прыватнасці: {{provider}}",
|
|
32
|
+
"privacy": "Палітыка прыватнасці",
|
|
33
|
+
"terms": "Умовы карыстання"
|
|
25
34
|
}
|
package/build/i18n/de.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Ihre Auswahl wird in diesem Browser unter „{{key}}\" gespeichert — sowohl im lokalen Speicher als auch als Cookie.",
|
|
22
22
|
"policyRetention": "Der Eintrag wird {{days}} Tage aufbewahrt, danach werden Sie erneut gefragt.",
|
|
23
23
|
"policyOperator": "Diese Anwendung wird von {{operator}} betrieben.",
|
|
24
|
-
"policyContact": "Sehen Sie in deren Datenschutzerklärung und Bedingungen nach, wie Ihre Daten verarbeitet werden."
|
|
24
|
+
"policyContact": "Sehen Sie in deren Datenschutzerklärung und Bedingungen nach, wie Ihre Daten verarbeitet werden.",
|
|
25
|
+
"policyServicesOf": "Dienste — {{category}}",
|
|
26
|
+
"policyOtherServices": "Weitere Dienste",
|
|
27
|
+
"policyOtherServicesDesc": "Dienste, die diese Anwendung außerhalb der oben genannten Kategorien nutzt.",
|
|
28
|
+
"policyProvider": "Anbieter",
|
|
29
|
+
"policyPurpose": "Zweck",
|
|
30
|
+
"policyCookies": "Cookies",
|
|
31
|
+
"policyServicePrivacy": "Datenschutzerklärung von {{provider}}",
|
|
32
|
+
"privacy": "Datenschutzerklärung",
|
|
33
|
+
"terms": "Nutzungsbedingungen"
|
|
25
34
|
}
|
package/build/i18n/en.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Your choice is stored in this browser under \"{{key}}\", both in local storage and as a cookie.",
|
|
22
22
|
"policyRetention": "The record is kept for {{days}} days, after which you will be asked again.",
|
|
23
23
|
"policyOperator": "This application is operated by {{operator}}.",
|
|
24
|
-
"policyContact": "See their privacy policy and terms for how they handle your data."
|
|
24
|
+
"policyContact": "See their privacy policy and terms for how they handle your data.",
|
|
25
|
+
"policyServicesOf": "Services — {{category}}",
|
|
26
|
+
"policyOtherServices": "Other services",
|
|
27
|
+
"policyOtherServicesDesc": "Services this application runs outside the categories above.",
|
|
28
|
+
"policyProvider": "Provider",
|
|
29
|
+
"policyPurpose": "Purpose",
|
|
30
|
+
"policyCookies": "Cookies",
|
|
31
|
+
"policyServicePrivacy": "{{provider}} privacy policy",
|
|
32
|
+
"privacy": "Privacy Policy",
|
|
33
|
+
"terms": "Terms & Conditions"
|
|
25
34
|
}
|
package/build/i18n/es.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Tu elección se guarda en este navegador bajo «{{key}}», tanto en el almacenamiento local como en una cookie.",
|
|
22
22
|
"policyRetention": "El registro se conserva {{days}} días, tras los cuales se te preguntará de nuevo.",
|
|
23
23
|
"policyOperator": "Esta aplicación está gestionada por {{operator}}.",
|
|
24
|
-
"policyContact": "Consulta su política de privacidad y sus términos para saber cómo tratan tus datos."
|
|
24
|
+
"policyContact": "Consulta su política de privacidad y sus términos para saber cómo tratan tus datos.",
|
|
25
|
+
"policyServicesOf": "Servicios — {{category}}",
|
|
26
|
+
"policyOtherServices": "Otros servicios",
|
|
27
|
+
"policyOtherServicesDesc": "Servicios que esta aplicación utiliza fuera de las categorías anteriores.",
|
|
28
|
+
"policyProvider": "Proveedor",
|
|
29
|
+
"policyPurpose": "Finalidad",
|
|
30
|
+
"policyCookies": "Cookies",
|
|
31
|
+
"policyServicePrivacy": "Política de privacidad de {{provider}}",
|
|
32
|
+
"privacy": "Política de privacidad",
|
|
33
|
+
"terms": "Términos y condiciones"
|
|
25
34
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Préférences de cookies",
|
|
3
|
+
"description": "Nous utilisons des cookies pour améliorer votre navigation, proposer des publicités ou contenus personnalisés et analyser notre trafic. En cliquant sur « Tout accepter », vous consentez à leur utilisation.",
|
|
4
|
+
"essential": "Cookies essentiels",
|
|
5
|
+
"essentialDesc": "Nécessaires au fonctionnement du site : connexion, sécurité et mémorisation de ces préférences. Ils ne peuvent pas être désactivés.",
|
|
6
|
+
"analytics": "Cookies analytiques",
|
|
7
|
+
"analyticsDesc": "Nous aident à améliorer notre site en recueillant et en analysant des informations sur son utilisation.",
|
|
8
|
+
"marketing": "Cookies marketing",
|
|
9
|
+
"marketingDesc": "Utilisés pour suivre les visiteurs entre les sites et afficher des publicités pertinentes.",
|
|
10
|
+
"required": "Requis",
|
|
11
|
+
"acceptAll": "Tout accepter",
|
|
12
|
+
"acceptAndContinue": "Accepter et continuer",
|
|
13
|
+
"savePreferences": "Enregistrer les préférences",
|
|
14
|
+
"policyLink": "Politique relative aux cookies",
|
|
15
|
+
"openPreferences": "Préférences de cookies",
|
|
16
|
+
"close": "Fermer",
|
|
17
|
+
"loginReason": "La connexion enregistre un cookie de session. Acceptez les cookies essentiels pour continuer.",
|
|
18
|
+
"manage": "Gérer les préférences",
|
|
19
|
+
"policyTitle": "Politique relative aux cookies",
|
|
20
|
+
"policyIntro": "Cette page décrit les cookies et stockages similaires utilisés par cette application, ainsi que la façon de les contrôler.",
|
|
21
|
+
"policyStorage": "Votre choix est enregistré dans ce navigateur sous « {{key}} », dans le stockage local et dans un cookie.",
|
|
22
|
+
"policyRetention": "Ce choix est conservé {{days}} jours, après quoi il vous sera demandé de nouveau.",
|
|
23
|
+
"policyOperator": "Cette application est exploitée par {{operator}}.",
|
|
24
|
+
"policyContact": "Consultez leur politique de confidentialité et leurs conditions pour savoir comment vos données sont traitées.",
|
|
25
|
+
"policyServicesOf": "Services — {{category}}",
|
|
26
|
+
"policyOtherServices": "Autres services",
|
|
27
|
+
"policyOtherServicesDesc": "Services utilisés par cette application en dehors des catégories ci-dessus.",
|
|
28
|
+
"policyProvider": "Fournisseur",
|
|
29
|
+
"policyPurpose": "Finalité",
|
|
30
|
+
"policyCookies": "Cookies",
|
|
31
|
+
"policyServicePrivacy": "Politique de confidentialité de {{provider}}",
|
|
32
|
+
"privacy": "Politique de confidentialité",
|
|
33
|
+
"terms": "Conditions générales"
|
|
34
|
+
}
|
package/build/i18n/pl.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Twój wybór jest zapisywany w tej przeglądarce pod kluczem „{{key}}\" — zarówno w pamięci lokalnej, jak i w pliku cookie.",
|
|
22
22
|
"policyRetention": "Zapis jest przechowywany przez {{days}} dni, po czym zapytamy ponownie.",
|
|
23
23
|
"policyOperator": "Tę aplikację prowadzi {{operator}}.",
|
|
24
|
-
"policyContact": "Zapoznaj się z ich polityką prywatności i regulaminem, aby dowiedzieć się, jak przetwarzają Twoje dane."
|
|
24
|
+
"policyContact": "Zapoznaj się z ich polityką prywatności i regulaminem, aby dowiedzieć się, jak przetwarzają Twoje dane.",
|
|
25
|
+
"policyServicesOf": "Usługi — {{category}}",
|
|
26
|
+
"policyOtherServices": "Inne usługi",
|
|
27
|
+
"policyOtherServicesDesc": "Usługi, z których ta aplikacja korzysta poza powyższymi kategoriami.",
|
|
28
|
+
"policyProvider": "Dostawca",
|
|
29
|
+
"policyPurpose": "Cel",
|
|
30
|
+
"policyCookies": "Pliki cookie",
|
|
31
|
+
"policyServicePrivacy": "Polityka prywatności: {{provider}}",
|
|
32
|
+
"privacy": "Polityka prywatności",
|
|
33
|
+
"terms": "Regulamin"
|
|
25
34
|
}
|
package/build/i18n/ru.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Ваш выбор сохраняется в этом браузере под ключом «{{key}}» — и в локальном хранилище, и в файле cookie.",
|
|
22
22
|
"policyRetention": "Запись хранится {{days}} дней, после чего мы спросим снова.",
|
|
23
23
|
"policyOperator": "Это приложение принадлежит {{operator}}.",
|
|
24
|
-
"policyContact": "Ознакомьтесь с их политикой конфиденциальности и условиями использования, чтобы узнать, как они обрабатывают ваши данные."
|
|
24
|
+
"policyContact": "Ознакомьтесь с их политикой конфиденциальности и условиями использования, чтобы узнать, как они обрабатывают ваши данные.",
|
|
25
|
+
"policyServicesOf": "Сервисы — {{category}}",
|
|
26
|
+
"policyOtherServices": "Другие сервисы",
|
|
27
|
+
"policyOtherServicesDesc": "Сервисы, которые это приложение использует вне перечисленных выше категорий.",
|
|
28
|
+
"policyProvider": "Поставщик",
|
|
29
|
+
"policyPurpose": "Цель",
|
|
30
|
+
"policyCookies": "Файлы cookie",
|
|
31
|
+
"policyServicePrivacy": "Политика конфиденциальности: {{provider}}",
|
|
32
|
+
"privacy": "Политика конфиденциальности",
|
|
33
|
+
"terms": "Условия использования"
|
|
25
34
|
}
|
package/build/i18n/uk.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Ваш вибір зберігається в цьому браузері під ключем «{{key}}» — і в локальному сховищі, і у файлі cookie.",
|
|
22
22
|
"policyRetention": "Запис зберігається {{days}} днів, після чого ми запитаємо знову.",
|
|
23
23
|
"policyOperator": "Цей застосунок належить {{operator}}.",
|
|
24
|
-
"policyContact": "Ознайомтеся з їхньою політикою конфіденційності та умовами користування, щоб дізнатися, як вони обробляють ваші дані."
|
|
24
|
+
"policyContact": "Ознайомтеся з їхньою політикою конфіденційності та умовами користування, щоб дізнатися, як вони обробляють ваші дані.",
|
|
25
|
+
"policyServicesOf": "Сервіси — {{category}}",
|
|
26
|
+
"policyOtherServices": "Інші сервіси",
|
|
27
|
+
"policyOtherServicesDesc": "Сервіси, які цей застосунок використовує поза переліченими вище категоріями.",
|
|
28
|
+
"policyProvider": "Постачальник",
|
|
29
|
+
"policyPurpose": "Мета",
|
|
30
|
+
"policyCookies": "Файли cookie",
|
|
31
|
+
"policyServicePrivacy": "Політика конфіденційності: {{provider}}",
|
|
32
|
+
"privacy": "Політика конфіденційності",
|
|
33
|
+
"terms": "Умови користування"
|
|
25
34
|
}
|
package/build/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAWhD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAElF,CAAA;AAED,eAAO,MAAM,eAAe,YAAa,MAAM,KAAG,aAIjD,CAAA;AAED,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,YAAa,MAAM,WAC/C,MAAM,gBAAgB,MAAM,KAAG,MACqC,CAAA;AAE5E,oFAAoF;AACpF,eAAO,MAAM,WAAW,SAAU,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAAG,MAE5B,CAAA"}
|
package/build/i18n.js
CHANGED
|
@@ -6,6 +6,7 @@ import be from './i18n/be.json' with { type: 'json' };
|
|
|
6
6
|
import uk from './i18n/uk.json' with { type: 'json' };
|
|
7
7
|
import es from './i18n/es.json' with { type: 'json' };
|
|
8
8
|
import de from './i18n/de.json' with { type: 'json' };
|
|
9
|
+
import fr from './i18n/fr.json' with { type: 'json' };
|
|
9
10
|
/**
|
|
10
11
|
* The dialog's copy, in the box.
|
|
11
12
|
*
|
|
@@ -15,7 +16,7 @@ import de from './i18n/de.json' with { type: 'json' };
|
|
|
15
16
|
* overrides every one of these.
|
|
16
17
|
*/
|
|
17
18
|
export const DEFAULT_CONSENT_MESSAGES = {
|
|
18
|
-
en, pl, ru, be, uk, es, de,
|
|
19
|
+
en, pl, ru, be, uk, es, de, fr,
|
|
19
20
|
};
|
|
20
21
|
export const normalizeLocale = (locale) => {
|
|
21
22
|
const base = (locale ?? 'en').toLowerCase().split('-')[0];
|
package/build/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAkD;IACrF,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AACrD,OAAO,EAAE,MAAM,gBAAgB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAkD;IACrF,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;CAC/B,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAe,EAAiB,EAAE;IAChE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAEzD,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAqB,CAAC,CAAC,CAAC,CAAC,IAAqB,CAAC,CAAC,CAAC,IAAI,CAAA;AACvF,CAAC,CAAA;AAED,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAe,EAAE,EAAE,CACzD,CAAC,GAAW,EAAE,YAAoB,EAAU,EAAE,CAC5C,wBAAwB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,YAAY,CAAA;AAE5E,oFAAoF;AACpF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,MAAuC,EAAU,EAAE,CAC3F,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE,CACzD,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA"}
|
package/build/types.d.ts
CHANGED
|
@@ -33,6 +33,35 @@ export interface ConsentCategory {
|
|
|
33
33
|
/** dataLayer event pushed when this category transitions from denied to granted. */
|
|
34
34
|
event?: string;
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* One third-party service the site runs under a consent category, as the cookie policy discloses
|
|
38
|
+
* it.
|
|
39
|
+
*
|
|
40
|
+
* A category says WHY something is stored; a service says WHO receives it. A regulator reading
|
|
41
|
+
* the policy wants the second — "analytics cookies" discloses nothing about which company learns
|
|
42
|
+
* what a visitor did — so a site that runs a tag lists it here, beside the category that gates
|
|
43
|
+
* it. Plain data rather than keys: the name, the provider and the purpose are whatever the party
|
|
44
|
+
* adding the tag knows about it, and `@owlmeans/web-gtm`'s `googleTagServices(id)` is the
|
|
45
|
+
* disclosure for a Google tag.
|
|
46
|
+
*/
|
|
47
|
+
export interface ConsentService {
|
|
48
|
+
/** Display name: "Google Analytics". */
|
|
49
|
+
name: string;
|
|
50
|
+
/** Who receives the data: "Google LLC". */
|
|
51
|
+
provider: string;
|
|
52
|
+
/**
|
|
53
|
+
* The `ConsentCategory.key` this service runs under: `'analytics'`, `'marketing'`,
|
|
54
|
+
* `'essential'`, or a custom key. A service whose category is not in force is still disclosed,
|
|
55
|
+
* in a trailing group of its own — hiding it would hide something that may still run.
|
|
56
|
+
*/
|
|
57
|
+
category: string;
|
|
58
|
+
/** One sentence on what it does with the data. */
|
|
59
|
+
purpose?: string;
|
|
60
|
+
/** Cookie names it may set: `['_ga', '_ga_<ID>']`. */
|
|
61
|
+
cookies?: string[];
|
|
62
|
+
/** The provider's own privacy policy. */
|
|
63
|
+
privacyHref?: string;
|
|
64
|
+
}
|
|
36
65
|
/** `v` is the schema version; every other key is a category key. */
|
|
37
66
|
export interface ConsentRecord {
|
|
38
67
|
v?: number;
|
package/build/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACrB,YAAY,GAAG,cAAc,GAAG,oBAAoB,GACpD,mBAAmB,GAAG,uBAAuB,GAC7C,yBAAyB,GAAG,kBAAkB,CAAA;AAElD,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAA;IACX;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iGAAiG;IACjG,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;AAEnE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;AAE3D,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,YAAY,CAAA;IACvB,SAAS,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,MAAM,IAAI,CAAA;IACpD,oGAAoG;IACpG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;IACrC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,aAAa,KAAK,IAAI,CAAA;IACtC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,6DAA6D;IAC7D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,OAAO,EAAE,MAAM,cAAc,GAAG;QAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CACtF"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GACrB,YAAY,GAAG,cAAc,GAAG,oBAAoB,GACpD,mBAAmB,GAAG,uBAAuB,GAC7C,yBAAyB,GAAG,kBAAkB,CAAA;AAElD,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,GAAG,EAAE,MAAM,CAAA;IACX;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,iGAAiG;IACjG,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oDAAoD;IACpD,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,CAAC,CAAC,EAAE,MAAM,CAAA;IACV,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAA;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,eAAe,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0FAA0F;IAC1F,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,+EAA+E;AAC/E,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAA;AAEnE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;AAE3D,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,YAAY,CAAA;IACvB,SAAS,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,MAAM,IAAI,CAAA;IACpD,oGAAoG;IACpG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;IACrC,IAAI,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,aAAa,KAAK,IAAI,CAAA;IACtC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,6DAA6D;IAC7D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IACjC,OAAO,EAAE,MAAM,cAAc,GAAG;QAAE,UAAU,EAAE,eAAe,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAA;CACtF"}
|
package/package.json
CHANGED
package/src/consts.ts
CHANGED
|
@@ -26,7 +26,7 @@ export const CONSENT_ESSENTIAL = 'essential'
|
|
|
26
26
|
export const CONSENT_ANALYTICS = 'analytics'
|
|
27
27
|
export const CONSENT_MARKETING = 'marketing'
|
|
28
28
|
|
|
29
|
-
export const CONSENT_LOCALES = ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de'] as const
|
|
29
|
+
export const CONSENT_LOCALES = ['en', 'pl', 'ru', 'be', 'uk', 'es', 'de', 'fr'] as const
|
|
30
30
|
|
|
31
31
|
export type ConsentLocale = (typeof CONSENT_LOCALES)[number]
|
|
32
32
|
|
package/src/i18n/be.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Ваш выбар захоўваецца ў гэтым браўзеры пад ключом «{{key}}» — і ў лакальным сховішчы, і ў файле cookie.",
|
|
22
22
|
"policyRetention": "Запіс захоўваецца {{days}} дзён, пасля чаго мы спытаем зноў.",
|
|
23
23
|
"policyOperator": "Гэтая праграма належыць {{operator}}.",
|
|
24
|
-
"policyContact": "Азнаёмцеся з іх палітыкай прыватнасці і ўмовамі карыстання, каб даведацца, як яны апрацоўваюць вашы даныя."
|
|
24
|
+
"policyContact": "Азнаёмцеся з іх палітыкай прыватнасці і ўмовамі карыстання, каб даведацца, як яны апрацоўваюць вашы даныя.",
|
|
25
|
+
"policyServicesOf": "Сэрвісы — {{category}}",
|
|
26
|
+
"policyOtherServices": "Іншыя сэрвісы",
|
|
27
|
+
"policyOtherServicesDesc": "Сэрвісы, якія гэтая праграма выкарыстоўвае па-за пералічанымі вышэй катэгорыямі.",
|
|
28
|
+
"policyProvider": "Пастаўшчык",
|
|
29
|
+
"policyPurpose": "Мэта",
|
|
30
|
+
"policyCookies": "Файлы cookie",
|
|
31
|
+
"policyServicePrivacy": "Палітыка прыватнасці: {{provider}}",
|
|
32
|
+
"privacy": "Палітыка прыватнасці",
|
|
33
|
+
"terms": "Умовы карыстання"
|
|
25
34
|
}
|
package/src/i18n/de.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Ihre Auswahl wird in diesem Browser unter „{{key}}\" gespeichert — sowohl im lokalen Speicher als auch als Cookie.",
|
|
22
22
|
"policyRetention": "Der Eintrag wird {{days}} Tage aufbewahrt, danach werden Sie erneut gefragt.",
|
|
23
23
|
"policyOperator": "Diese Anwendung wird von {{operator}} betrieben.",
|
|
24
|
-
"policyContact": "Sehen Sie in deren Datenschutzerklärung und Bedingungen nach, wie Ihre Daten verarbeitet werden."
|
|
24
|
+
"policyContact": "Sehen Sie in deren Datenschutzerklärung und Bedingungen nach, wie Ihre Daten verarbeitet werden.",
|
|
25
|
+
"policyServicesOf": "Dienste — {{category}}",
|
|
26
|
+
"policyOtherServices": "Weitere Dienste",
|
|
27
|
+
"policyOtherServicesDesc": "Dienste, die diese Anwendung außerhalb der oben genannten Kategorien nutzt.",
|
|
28
|
+
"policyProvider": "Anbieter",
|
|
29
|
+
"policyPurpose": "Zweck",
|
|
30
|
+
"policyCookies": "Cookies",
|
|
31
|
+
"policyServicePrivacy": "Datenschutzerklärung von {{provider}}",
|
|
32
|
+
"privacy": "Datenschutzerklärung",
|
|
33
|
+
"terms": "Nutzungsbedingungen"
|
|
25
34
|
}
|
package/src/i18n/en.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Your choice is stored in this browser under \"{{key}}\", both in local storage and as a cookie.",
|
|
22
22
|
"policyRetention": "The record is kept for {{days}} days, after which you will be asked again.",
|
|
23
23
|
"policyOperator": "This application is operated by {{operator}}.",
|
|
24
|
-
"policyContact": "See their privacy policy and terms for how they handle your data."
|
|
24
|
+
"policyContact": "See their privacy policy and terms for how they handle your data.",
|
|
25
|
+
"policyServicesOf": "Services — {{category}}",
|
|
26
|
+
"policyOtherServices": "Other services",
|
|
27
|
+
"policyOtherServicesDesc": "Services this application runs outside the categories above.",
|
|
28
|
+
"policyProvider": "Provider",
|
|
29
|
+
"policyPurpose": "Purpose",
|
|
30
|
+
"policyCookies": "Cookies",
|
|
31
|
+
"policyServicePrivacy": "{{provider}} privacy policy",
|
|
32
|
+
"privacy": "Privacy Policy",
|
|
33
|
+
"terms": "Terms & Conditions"
|
|
25
34
|
}
|
package/src/i18n/es.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Tu elección se guarda en este navegador bajo «{{key}}», tanto en el almacenamiento local como en una cookie.",
|
|
22
22
|
"policyRetention": "El registro se conserva {{days}} días, tras los cuales se te preguntará de nuevo.",
|
|
23
23
|
"policyOperator": "Esta aplicación está gestionada por {{operator}}.",
|
|
24
|
-
"policyContact": "Consulta su política de privacidad y sus términos para saber cómo tratan tus datos."
|
|
24
|
+
"policyContact": "Consulta su política de privacidad y sus términos para saber cómo tratan tus datos.",
|
|
25
|
+
"policyServicesOf": "Servicios — {{category}}",
|
|
26
|
+
"policyOtherServices": "Otros servicios",
|
|
27
|
+
"policyOtherServicesDesc": "Servicios que esta aplicación utiliza fuera de las categorías anteriores.",
|
|
28
|
+
"policyProvider": "Proveedor",
|
|
29
|
+
"policyPurpose": "Finalidad",
|
|
30
|
+
"policyCookies": "Cookies",
|
|
31
|
+
"policyServicePrivacy": "Política de privacidad de {{provider}}",
|
|
32
|
+
"privacy": "Política de privacidad",
|
|
33
|
+
"terms": "Términos y condiciones"
|
|
25
34
|
}
|
package/src/i18n/fr.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"title": "Préférences de cookies",
|
|
3
|
+
"description": "Nous utilisons des cookies pour améliorer votre navigation, proposer des publicités ou contenus personnalisés et analyser notre trafic. En cliquant sur « Tout accepter », vous consentez à leur utilisation.",
|
|
4
|
+
"essential": "Cookies essentiels",
|
|
5
|
+
"essentialDesc": "Nécessaires au fonctionnement du site : connexion, sécurité et mémorisation de ces préférences. Ils ne peuvent pas être désactivés.",
|
|
6
|
+
"analytics": "Cookies analytiques",
|
|
7
|
+
"analyticsDesc": "Nous aident à améliorer notre site en recueillant et en analysant des informations sur son utilisation.",
|
|
8
|
+
"marketing": "Cookies marketing",
|
|
9
|
+
"marketingDesc": "Utilisés pour suivre les visiteurs entre les sites et afficher des publicités pertinentes.",
|
|
10
|
+
"required": "Requis",
|
|
11
|
+
"acceptAll": "Tout accepter",
|
|
12
|
+
"acceptAndContinue": "Accepter et continuer",
|
|
13
|
+
"savePreferences": "Enregistrer les préférences",
|
|
14
|
+
"policyLink": "Politique relative aux cookies",
|
|
15
|
+
"openPreferences": "Préférences de cookies",
|
|
16
|
+
"close": "Fermer",
|
|
17
|
+
"loginReason": "La connexion enregistre un cookie de session. Acceptez les cookies essentiels pour continuer.",
|
|
18
|
+
"manage": "Gérer les préférences",
|
|
19
|
+
"policyTitle": "Politique relative aux cookies",
|
|
20
|
+
"policyIntro": "Cette page décrit les cookies et stockages similaires utilisés par cette application, ainsi que la façon de les contrôler.",
|
|
21
|
+
"policyStorage": "Votre choix est enregistré dans ce navigateur sous « {{key}} », dans le stockage local et dans un cookie.",
|
|
22
|
+
"policyRetention": "Ce choix est conservé {{days}} jours, après quoi il vous sera demandé de nouveau.",
|
|
23
|
+
"policyOperator": "Cette application est exploitée par {{operator}}.",
|
|
24
|
+
"policyContact": "Consultez leur politique de confidentialité et leurs conditions pour savoir comment vos données sont traitées.",
|
|
25
|
+
"policyServicesOf": "Services — {{category}}",
|
|
26
|
+
"policyOtherServices": "Autres services",
|
|
27
|
+
"policyOtherServicesDesc": "Services utilisés par cette application en dehors des catégories ci-dessus.",
|
|
28
|
+
"policyProvider": "Fournisseur",
|
|
29
|
+
"policyPurpose": "Finalité",
|
|
30
|
+
"policyCookies": "Cookies",
|
|
31
|
+
"policyServicePrivacy": "Politique de confidentialité de {{provider}}",
|
|
32
|
+
"privacy": "Politique de confidentialité",
|
|
33
|
+
"terms": "Conditions générales"
|
|
34
|
+
}
|
package/src/i18n/pl.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Twój wybór jest zapisywany w tej przeglądarce pod kluczem „{{key}}\" — zarówno w pamięci lokalnej, jak i w pliku cookie.",
|
|
22
22
|
"policyRetention": "Zapis jest przechowywany przez {{days}} dni, po czym zapytamy ponownie.",
|
|
23
23
|
"policyOperator": "Tę aplikację prowadzi {{operator}}.",
|
|
24
|
-
"policyContact": "Zapoznaj się z ich polityką prywatności i regulaminem, aby dowiedzieć się, jak przetwarzają Twoje dane."
|
|
24
|
+
"policyContact": "Zapoznaj się z ich polityką prywatności i regulaminem, aby dowiedzieć się, jak przetwarzają Twoje dane.",
|
|
25
|
+
"policyServicesOf": "Usługi — {{category}}",
|
|
26
|
+
"policyOtherServices": "Inne usługi",
|
|
27
|
+
"policyOtherServicesDesc": "Usługi, z których ta aplikacja korzysta poza powyższymi kategoriami.",
|
|
28
|
+
"policyProvider": "Dostawca",
|
|
29
|
+
"policyPurpose": "Cel",
|
|
30
|
+
"policyCookies": "Pliki cookie",
|
|
31
|
+
"policyServicePrivacy": "Polityka prywatności: {{provider}}",
|
|
32
|
+
"privacy": "Polityka prywatności",
|
|
33
|
+
"terms": "Regulamin"
|
|
25
34
|
}
|
package/src/i18n/ru.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Ваш выбор сохраняется в этом браузере под ключом «{{key}}» — и в локальном хранилище, и в файле cookie.",
|
|
22
22
|
"policyRetention": "Запись хранится {{days}} дней, после чего мы спросим снова.",
|
|
23
23
|
"policyOperator": "Это приложение принадлежит {{operator}}.",
|
|
24
|
-
"policyContact": "Ознакомьтесь с их политикой конфиденциальности и условиями использования, чтобы узнать, как они обрабатывают ваши данные."
|
|
24
|
+
"policyContact": "Ознакомьтесь с их политикой конфиденциальности и условиями использования, чтобы узнать, как они обрабатывают ваши данные.",
|
|
25
|
+
"policyServicesOf": "Сервисы — {{category}}",
|
|
26
|
+
"policyOtherServices": "Другие сервисы",
|
|
27
|
+
"policyOtherServicesDesc": "Сервисы, которые это приложение использует вне перечисленных выше категорий.",
|
|
28
|
+
"policyProvider": "Поставщик",
|
|
29
|
+
"policyPurpose": "Цель",
|
|
30
|
+
"policyCookies": "Файлы cookie",
|
|
31
|
+
"policyServicePrivacy": "Политика конфиденциальности: {{provider}}",
|
|
32
|
+
"privacy": "Политика конфиденциальности",
|
|
33
|
+
"terms": "Условия использования"
|
|
25
34
|
}
|
package/src/i18n/uk.json
CHANGED
|
@@ -21,5 +21,14 @@
|
|
|
21
21
|
"policyStorage": "Ваш вибір зберігається в цьому браузері під ключем «{{key}}» — і в локальному сховищі, і у файлі cookie.",
|
|
22
22
|
"policyRetention": "Запис зберігається {{days}} днів, після чого ми запитаємо знову.",
|
|
23
23
|
"policyOperator": "Цей застосунок належить {{operator}}.",
|
|
24
|
-
"policyContact": "Ознайомтеся з їхньою політикою конфіденційності та умовами користування, щоб дізнатися, як вони обробляють ваші дані."
|
|
24
|
+
"policyContact": "Ознайомтеся з їхньою політикою конфіденційності та умовами користування, щоб дізнатися, як вони обробляють ваші дані.",
|
|
25
|
+
"policyServicesOf": "Сервіси — {{category}}",
|
|
26
|
+
"policyOtherServices": "Інші сервіси",
|
|
27
|
+
"policyOtherServicesDesc": "Сервіси, які цей застосунок використовує поза переліченими вище категоріями.",
|
|
28
|
+
"policyProvider": "Постачальник",
|
|
29
|
+
"policyPurpose": "Мета",
|
|
30
|
+
"policyCookies": "Файли cookie",
|
|
31
|
+
"policyServicePrivacy": "Політика конфіденційності: {{provider}}",
|
|
32
|
+
"privacy": "Політика конфіденційності",
|
|
33
|
+
"terms": "Умови користування"
|
|
25
34
|
}
|
package/src/i18n.ts
CHANGED
|
@@ -8,6 +8,7 @@ import be from './i18n/be.json' with { type: 'json' }
|
|
|
8
8
|
import uk from './i18n/uk.json' with { type: 'json' }
|
|
9
9
|
import es from './i18n/es.json' with { type: 'json' }
|
|
10
10
|
import de from './i18n/de.json' with { type: 'json' }
|
|
11
|
+
import fr from './i18n/fr.json' with { type: 'json' }
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* The dialog's copy, in the box.
|
|
@@ -18,7 +19,7 @@ import de from './i18n/de.json' with { type: 'json' }
|
|
|
18
19
|
* overrides every one of these.
|
|
19
20
|
*/
|
|
20
21
|
export const DEFAULT_CONSENT_MESSAGES: Record<ConsentLocale, Record<string, string>> = {
|
|
21
|
-
en, pl, ru, be, uk, es, de,
|
|
22
|
+
en, pl, ru, be, uk, es, de, fr,
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
export const normalizeLocale = (locale?: string): ConsentLocale => {
|
package/src/types.ts
CHANGED
|
@@ -38,6 +38,36 @@ export interface ConsentCategory {
|
|
|
38
38
|
event?: string
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
+
/**
|
|
42
|
+
* One third-party service the site runs under a consent category, as the cookie policy discloses
|
|
43
|
+
* it.
|
|
44
|
+
*
|
|
45
|
+
* A category says WHY something is stored; a service says WHO receives it. A regulator reading
|
|
46
|
+
* the policy wants the second — "analytics cookies" discloses nothing about which company learns
|
|
47
|
+
* what a visitor did — so a site that runs a tag lists it here, beside the category that gates
|
|
48
|
+
* it. Plain data rather than keys: the name, the provider and the purpose are whatever the party
|
|
49
|
+
* adding the tag knows about it, and `@owlmeans/web-gtm`'s `googleTagServices(id)` is the
|
|
50
|
+
* disclosure for a Google tag.
|
|
51
|
+
*/
|
|
52
|
+
export interface ConsentService {
|
|
53
|
+
/** Display name: "Google Analytics". */
|
|
54
|
+
name: string
|
|
55
|
+
/** Who receives the data: "Google LLC". */
|
|
56
|
+
provider: string
|
|
57
|
+
/**
|
|
58
|
+
* The `ConsentCategory.key` this service runs under: `'analytics'`, `'marketing'`,
|
|
59
|
+
* `'essential'`, or a custom key. A service whose category is not in force is still disclosed,
|
|
60
|
+
* in a trailing group of its own — hiding it would hide something that may still run.
|
|
61
|
+
*/
|
|
62
|
+
category: string
|
|
63
|
+
/** One sentence on what it does with the data. */
|
|
64
|
+
purpose?: string
|
|
65
|
+
/** Cookie names it may set: `['_ga', '_ga_<ID>']`. */
|
|
66
|
+
cookies?: string[]
|
|
67
|
+
/** The provider's own privacy policy. */
|
|
68
|
+
privacyHref?: string
|
|
69
|
+
}
|
|
70
|
+
|
|
41
71
|
/** `v` is the schema version; every other key is a category key. */
|
|
42
72
|
export interface ConsentRecord {
|
|
43
73
|
v?: number
|
package/tests/consent.spec.ts
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { describe, test, expect, beforeEach } from 'bun:test'
|
|
2
2
|
import {
|
|
3
|
-
CONSENT_ANALYTICS, CONSENT_ESSENTIAL, CONSENT_KEY,
|
|
4
|
-
DEFAULT_CONSENT_CATEGORIES,
|
|
3
|
+
CONSENT_ANALYTICS, CONSENT_ESSENTIAL, CONSENT_KEY, CONSENT_LOCALES, CONSENT_MARKETING,
|
|
4
|
+
CONSENT_SCHEMA_VERSION, DEFAULT_CONSENT_CATEGORIES,
|
|
5
5
|
} from '../src/consts.js'
|
|
6
6
|
import { migrateConsent, readConsent, writeConsent, clearConsent } from '../src/storage.js'
|
|
7
7
|
import { consentDefaults, consentUpdate, consentBootstrapScript } from '../src/gtm.js'
|
|
8
8
|
import { makeConsentStore } from '../src/store.js'
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
DEFAULT_CONSENT_MESSAGES, defaultConsentTranslate, interpolate, normalizeLocale,
|
|
11
|
+
} from '../src/i18n.js'
|
|
10
12
|
import type { ConsentCategory } from '../src/types.js'
|
|
11
13
|
|
|
12
14
|
/** A minimal browser: just the two stores this package writes to. */
|
|
@@ -186,13 +188,29 @@ describe('the built-in translations', () => {
|
|
|
186
188
|
// Without this, a language added to the bundle ships with English strings in it and nothing
|
|
187
189
|
// reports it — the readers who cannot tell us are exactly the ones affected.
|
|
188
190
|
const keys = Object.keys(require('../src/i18n/en.json') as Record<string, string>)
|
|
189
|
-
|
|
191
|
+
// Driven by the shipped locale list, so a language added there is checked without anyone
|
|
192
|
+
// remembering to add it here — French was once in the list and missing from this loop.
|
|
193
|
+
for (const lng of CONSENT_LOCALES.filter(locale => locale !== 'en')) {
|
|
190
194
|
const bundle = require(`../src/i18n/${lng}.json`) as Record<string, string>
|
|
191
195
|
expect({ lng, missing: keys.filter(key => bundle[key] == null) })
|
|
192
196
|
.toEqual({ lng, missing: [] })
|
|
193
197
|
}
|
|
194
198
|
})
|
|
195
199
|
|
|
200
|
+
test('every locale keeps every placeholder English has', () => {
|
|
201
|
+
// A translation that drops `{{provider}}` still renders — just without the name of the company
|
|
202
|
+
// the link belongs to, which is the one word of that line a reader needed.
|
|
203
|
+
const en = DEFAULT_CONSENT_MESSAGES.en
|
|
204
|
+
const placeholders = (text: string) => (text.match(/\{\{[a-z]+\}\}/gi) ?? []).sort()
|
|
205
|
+
for (const lng of CONSENT_LOCALES) {
|
|
206
|
+
const bundle = DEFAULT_CONSENT_MESSAGES[lng]
|
|
207
|
+
const drifted = Object.keys(en).filter(key =>
|
|
208
|
+
typeof bundle[key] === 'string'
|
|
209
|
+
&& placeholders(bundle[key]).join() !== placeholders(en[key]).join())
|
|
210
|
+
expect({ lng, drifted }).toEqual({ lng, drifted: [] })
|
|
211
|
+
}
|
|
212
|
+
})
|
|
213
|
+
|
|
196
214
|
test('an unknown locale falls back to English rather than to a raw key', () => {
|
|
197
215
|
expect(normalizeLocale('kl')).toBe('en')
|
|
198
216
|
expect(defaultConsentTranslate('kl')('title', 'fallback')).toBe('Cookie Preferences')
|
package/build/.gitkeep
DELETED
|
File without changes
|