@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 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.
@@ -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;AAElF,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"}
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
  *
@@ -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;AAIlF;;;;;;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"}
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"}
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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
+ }
@@ -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
  }
@@ -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
  }
@@ -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
  }
@@ -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;AAUhD;;;;;;;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"}
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;CAC3B,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"}
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;
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@owlmeans/consent",
3
- "version": "0.1.18-rc.3",
3
+ "version": "0.1.18-rc.5",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "scripts": {
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
  }
@@ -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
@@ -1,12 +1,14 @@
1
1
  import { describe, test, expect, beforeEach } from 'bun:test'
2
2
  import {
3
- CONSENT_ANALYTICS, CONSENT_ESSENTIAL, CONSENT_KEY, CONSENT_MARKETING, CONSENT_SCHEMA_VERSION,
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 { defaultConsentTranslate, interpolate, normalizeLocale } from '../src/i18n.js'
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
- for (const lng of ['pl', 'ru', 'be', 'uk', 'es', 'de']) {
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