@eifi1/ui-kit 0.27.1 → 0.28.0

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.
Files changed (109) hide show
  1. package/README.md +7 -5
  2. package/dist/chart.d.ts +1 -2
  3. package/dist/components/amount-input.d.ts +1 -2
  4. package/dist/components/button-group.d.ts +1 -2
  5. package/dist/components/calculator.d.ts +1 -2
  6. package/dist/components/confirm-dialog.d.ts +1 -2
  7. package/dist/components/copy-button.d.ts +1 -2
  8. package/dist/components/danger-confirm.d.ts +1 -2
  9. package/dist/components/facing-pair.d.ts +1 -2
  10. package/dist/components/file-button.d.ts +1 -2
  11. package/dist/components/file-dropzone.d.ts +1 -2
  12. package/dist/components/form-actions.d.ts +1 -2
  13. package/dist/components/iban-input.d.ts +1 -2
  14. package/dist/components/language-select.d.ts +1 -2
  15. package/dist/components/legal-page.d.ts +261 -0
  16. package/dist/components/legal-page.js +253 -0
  17. package/dist/components/legal-page.js.map +1 -0
  18. package/dist/components/legal.d.ts +70 -87
  19. package/dist/components/legal.js +187 -10
  20. package/dist/components/legal.js.map +1 -1
  21. package/dist/components/money-field.d.ts +1 -2
  22. package/dist/components/number-field.d.ts +1 -2
  23. package/dist/components/number-input.d.ts +1 -2
  24. package/dist/components/numpad-sheet.d.ts +1 -2
  25. package/dist/components/phone-input.d.ts +1 -2
  26. package/dist/components/series-chart.d.ts +1 -2
  27. package/dist/components/settings-fields.d.ts +1 -2
  28. package/dist/components/share-card.d.ts +1 -2
  29. package/dist/components/text-link.d.ts +1 -2
  30. package/dist/components/time-input.d.ts +1 -2
  31. package/dist/components/translation-review.d.ts +2 -1
  32. package/dist/components/translation-review.js.map +1 -1
  33. package/dist/components/ui.d.ts +1 -2
  34. package/dist/feedback/feedback-attachment.d.ts +1 -2
  35. package/dist/feedback/feedback-context.d.ts +1 -2
  36. package/dist/feedback/feedback-crash.d.ts +1 -2
  37. package/dist/feedback/feedback-dialog.d.ts +1 -2
  38. package/dist/feedback/feedback-inbox.d.ts +1 -2
  39. package/dist/feedback/feedback-labels.d.ts +1 -2
  40. package/dist/feedback/feedback-menu.d.ts +1 -2
  41. package/dist/feedback/feedback-record.d.ts +1 -2
  42. package/dist/feedback/feedback-row-detail.d.ts +1 -2
  43. package/dist/feedback/feedback-status-undo.d.ts +1 -2
  44. package/dist/feedback/feedback-submit.d.ts +1 -2
  45. package/dist/feedback/feedback-swipe.d.ts +1 -2
  46. package/dist/feedback/feedback-table.d.ts +1 -2
  47. package/dist/feedback/feedback-thread.d.ts +1 -2
  48. package/dist/feedback.d.ts +1 -2
  49. package/dist/hooks/use-file-drop.d.ts +1 -2
  50. package/dist/hooks/use-noindex.d.ts +26 -0
  51. package/dist/hooks/use-noindex.js +18 -0
  52. package/dist/hooks/use-noindex.js.map +1 -0
  53. package/dist/i18n/defaults.d.ts +1 -2
  54. package/dist/i18n/german.d.ts +1 -2
  55. package/dist/i18n/german.js +87 -1
  56. package/dist/i18n/german.js.map +1 -1
  57. package/dist/i18n/kit-labels.d.ts +1 -2
  58. package/dist/i18n/kit-labels.js.map +1 -1
  59. package/dist/i18n/languages.d.ts +1 -2
  60. package/dist/i18n/locales/de-CH.d.ts +1 -2
  61. package/dist/i18n/locales/en.d.ts +1 -2
  62. package/dist/i18n/locales/es.d.ts +1 -2
  63. package/dist/i18n/locales/es.js +87 -1
  64. package/dist/i18n/locales/es.js.map +1 -1
  65. package/dist/i18n/locales/fr.d.ts +1 -2
  66. package/dist/i18n/locales/fr.js +89 -1
  67. package/dist/i18n/locales/fr.js.map +1 -1
  68. package/dist/i18n/locales/hu.d.ts +1 -2
  69. package/dist/i18n/locales/hu.js +90 -1
  70. package/dist/i18n/locales/hu.js.map +1 -1
  71. package/dist/i18n/locales/it.d.ts +1 -2
  72. package/dist/i18n/locales/it.js +90 -1
  73. package/dist/i18n/locales/it.js.map +1 -1
  74. package/dist/i18n/locales/zh.d.ts +1 -2
  75. package/dist/i18n/locales/zh.js +87 -1
  76. package/dist/i18n/locales/zh.js.map +1 -1
  77. package/dist/i18n/review.d.ts +24 -5
  78. package/dist/i18n/review.js +24 -3
  79. package/dist/i18n/review.js.map +1 -1
  80. package/dist/index.d.ts +5 -4
  81. package/dist/index.js +11 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/{kit-labels-DQg82eHB.d.ts → kit-labels-SBN0biPl.d.ts} +305 -3
  84. package/dist/lib/translation-review.d.ts +26 -3
  85. package/dist/lib/translation-review.js +10 -2
  86. package/dist/lib/translation-review.js.map +1 -1
  87. package/dist/rhf/fields.d.ts +1 -2
  88. package/dist/rhf/form.d.ts +1 -2
  89. package/dist/rhf.d.ts +1 -2
  90. package/dist/shell/app-shell.d.ts +1 -2
  91. package/dist/shell/top-bar-brand.d.ts +1 -2
  92. package/dist/shell.d.ts +1 -2
  93. package/dist/wizard/stepper-nav.d.ts +1 -2
  94. package/dist/wizard.d.ts +1 -2
  95. package/package.json +1 -1
  96. package/src/components/legal-page.tsx +566 -0
  97. package/src/components/legal.tsx +451 -43
  98. package/src/components/translation-review.tsx +2 -1
  99. package/src/hooks/use-noindex.ts +37 -0
  100. package/src/i18n/german.ts +81 -0
  101. package/src/i18n/kit-labels.tsx +4 -1
  102. package/src/i18n/locales/es.ts +81 -0
  103. package/src/i18n/locales/fr.ts +83 -0
  104. package/src/i18n/locales/hu.ts +84 -0
  105. package/src/i18n/locales/it.ts +84 -0
  106. package/src/i18n/locales/zh.ts +81 -0
  107. package/src/i18n/review.ts +56 -3
  108. package/src/index.ts +32 -2
  109. package/src/lib/translation-review.ts +43 -4
@@ -757,8 +757,89 @@ export function germanLabels(numberLocale: string): UiKitLabels {
757
757
  waking: (appName) =>
758
758
  `Der Server schläft ein, wenn ${appName ?? "die App"} gerade niemand benutzt. Die erste Anfrage nach einer Pause muss ihn erst wieder starten. Das kann einen Moment dauern – es geht nichts verloren, die Seite füllt sich von selbst.`,
759
759
  },
760
+ // 0.28.0 — docs/legal-harmonization.md §4.3/§4.4: keksdose's reviewed de-CH wording,
761
+ // and Kurvenschmiede's for the browser section and the beta notice. None of it needs
762
+ // a "ß", so `swiss()` leaves it as the apps wrote it.
760
763
  legal: {
761
764
  navLabel: "Rechtliches",
765
+ links: {
766
+ impressum: "Impressum",
767
+ privacy: "Datenschutz",
768
+ terms: "Nutzungsbedingungen",
769
+ },
770
+ titles: {
771
+ impressum: "Impressum",
772
+ privacy: "Datenschutzerklärung",
773
+ terms: "Nutzungsbedingungen",
774
+ },
775
+ backHome: "Zurück zur Startseite",
776
+ accept: "Ich akzeptiere die {terms} und die {privacy}",
777
+ notice: {
778
+ beta: "Geschlossene Beta. Diese Texte sind noch nicht anwaltlich geprüft; das geschieht vor einem öffentlichen Start.",
779
+ privacy:
780
+ "Geschlossene Beta. Die rechtlichen Formulierungen unten sind noch nicht anwaltlich geprüft; das geschieht vor einem öffentlichen Start. Die technischen Angaben — was gespeichert wird, wo, und wer es lesen kann — beschreiben, was die Software heute tatsächlich tut, und sind ausdrücklich dazu da, daran überprüft zu werden.",
781
+ },
782
+ sections: {
783
+ impressum: {
784
+ operator: {
785
+ title: "Betreiber",
786
+ body: (o) =>
787
+ `${o.name}\n${o.postalCode} ${o.city}\n${o.country}\n\nDie vollständige Postanschrift wird auf Anfrage an alle Personen mit berechtigtem rechtlichem Interesse herausgegeben; wenden Sie sich dazu an die unten genannte Kontaktadresse.`,
788
+ },
789
+ contact: {
790
+ title: "Kontakt",
791
+ body: (o) => `E-Mail: ${o.email}`,
792
+ },
793
+ disclaimer: {
794
+ title: "Haftung für Inhalte und Links",
795
+ body: "Dies ist ein privates, nicht-kommerzielles Projekt, das im Rahmen einer geschlossenen Beta ohne Gewähr bereitgestellt wird. Für verlinkte externe Websites sind deren Betreiber verantwortlich; auf deren Inhalte haben wir keinen Einfluss.",
796
+ },
797
+ },
798
+ privacy: {
799
+ controller: {
800
+ title: "Verantwortlicher",
801
+ body: (o) =>
802
+ `Verantwortlich für die Verarbeitung personenbezogener Daten in diesem Dienst ist:\n${o.name}\n${o.postalCode} ${o.city}, ${o.country}\nE-Mail: ${o.email}\n\nDie vollständige Postanschrift wird betroffenen Personen und Aufsichtsbehörden auf Anfrage mitgeteilt.`,
803
+ },
804
+ legal_basis: {
805
+ title: "Rechtsgrundlage",
806
+ body: "Da der Betreiber in der Schweiz ansässig ist, richtet sich die Verarbeitung nach dem Schweizer Datenschutzgesetz (DSG). Soweit die EU-Datenschutz-Grundverordnung (DSGVO) auf Sie anwendbar ist, stützen wir uns auf die Vertragserfüllung zur Bereitstellung des Dienstes (Art. 6 Abs. 1 lit. b DSGVO) und unser berechtigtes Interesse am Betrieb und an der Sicherheit des Dienstes (Art. 6 Abs. 1 lit. f DSGVO).",
807
+ },
808
+ browser: {
809
+ title: "Was Ihr Browser speichert",
810
+ lead: "Keine Cookies. Die App legt Folgendes im Speicher Ihres Browsers ab:",
811
+ tail: "Nichts davon dient dazu, Sie zu verfolgen. Noch nicht gesendete Einträge werden an uns übermittelt, sobald das möglich ist; alles andere bleibt auf Ihrem Gerät. Das alles verschwindet, wenn Sie die Websitedaten löschen, und beim Abmelden werden die Anmeldetoken entfernt.",
812
+ },
813
+ rights: {
814
+ title: "Ihre Rechte",
815
+ lead: "Sie haben das Recht auf Auskunft, Berichtigung, Löschung, Einschränkung, Datenübertragbarkeit und Widerspruch.",
816
+ tail: "In der Schweiz können Sie sich an den Eidgenössischen Datenschutz- und Öffentlichkeitsbeauftragten (EDÖB) wenden; in der EU können Sie sich bei Ihrer zuständigen Aufsichtsbehörde beschweren.",
817
+ },
818
+ contact: {
819
+ title: "Kontakt zum Datenschutz",
820
+ body: (o) => `Für Datenschutzanfragen wenden Sie sich an: ${o.email}`,
821
+ },
822
+ },
823
+ terms: {
824
+ warranty: {
825
+ title: "Keine Gewährleistung",
826
+ body: "Der Dienst wird im gesetzlich zulässigen Rahmen „wie besehen“ und „wie verfügbar“ ohne jegliche Gewährleistung bereitgestellt. Als Beta kann er Fehler enthalten, sich ändern oder jederzeit unterbrochen werden – bewahren Sie eigene Sicherungskopien wichtiger Daten auf.",
827
+ },
828
+ liability: {
829
+ title: "Haftungsbeschränkung",
830
+ body: "Soweit gesetzlich zulässig, haftet der Betreiber nicht für indirekte Schäden oder Folgeschäden, die aus der Nutzung oder Nichtnutzbarkeit des Dienstes entstehen. Eine Haftung, die gesetzlich nicht ausgeschlossen werden kann, bleibt unberührt.",
831
+ },
832
+ changes: {
833
+ title: "Änderungen dieser Bedingungen",
834
+ body: "Diese Bedingungen können im Zuge der Weiterentwicklung des Dienstes angepasst werden. Wesentliche Änderungen werden per E-Mail oder in der App angekündigt; die weitere Nutzung nach einer Änderung gilt als Zustimmung.",
835
+ },
836
+ law: {
837
+ title: "Anwendbares Recht",
838
+ body: (o) =>
839
+ `Es gilt schweizerisches Recht unter Ausschluss des Kollisionsrechts. Soweit gesetzlich zulässig, ist Gerichtsstand ${o.city} (${o.region}), ${o.country}.`,
840
+ },
841
+ },
842
+ },
762
843
  },
763
844
  characterCount: {
764
845
  // "Zeichen" is the same in singular and plural.
@@ -318,7 +318,10 @@ export interface UiKitLabels {
318
318
  /** 0.19.0: the translation-review parts (`TranslationReviewPanel`, its editor, chip,
319
319
  * progress, locale tabs and export) — keksdose's /translations, for every app. */
320
320
  translationReview: TranslationReviewLabels;
321
- /** 0.19.0: `LegalLinks`' navigation name — the legal pages' shell, for every app. */
321
+ /** 0.19.0: `LegalLinks`' navigation name. 0.28.0: every kit-owned word of the legal
322
+ * pages — the link labels, titles, back link, terms checkbox and notices, and the
323
+ * sections that are the same in every app, filled in with the app's operator
324
+ * (docs/legal-harmonization.md §4.3/§4.4). */
322
325
  legal: LegalLabels;
323
326
  /** 0.22.0: the screen-reader words of `Input` / `Textarea`'s `showCount` counter. */
324
327
  characterCount: CharacterCountLabels;
@@ -737,8 +737,89 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
737
737
  waking: (appName) =>
738
738
  `El servidor se duerme cuando nadie usa ${appName ?? "la aplicación"}, así que la primera solicitud tras una pausa tiene que volver a arrancarlo. Puede tardar un momento; no se pierde nada y la página se completará sola.`,
739
739
  },
740
+ // 0.28.0 — docs/legal-harmonization.md §4.3/§4.4: Kurvenschmiede's reviewed Spanish
741
+ // (formal "usted"), brought into line with the kit's English; it goes back to
742
+ // Kurvenschmiede for review.
740
743
  legal: {
741
744
  navLabel: "Información legal",
745
+ links: {
746
+ impressum: "Aviso legal",
747
+ privacy: "Política de privacidad",
748
+ terms: "Condiciones de uso",
749
+ },
750
+ titles: {
751
+ impressum: "Aviso legal",
752
+ privacy: "Política de privacidad",
753
+ terms: "Condiciones de uso",
754
+ },
755
+ backHome: "Volver al inicio",
756
+ accept: "Acepto las {terms} y la {privacy}",
757
+ notice: {
758
+ beta: "Beta cerrada. Estos textos aún no han sido revisados por un abogado y lo serán antes de un lanzamiento público.",
759
+ privacy:
760
+ "Beta cerrada. La redacción jurídica que sigue aún no ha sido revisada por un abogado y lo será antes de un lanzamiento público. Las descripciones técnicas —qué se guarda, dónde y quién puede leerlo— describen lo que el software hace realmente hoy y están pensadas para que se contrasten con él.",
761
+ },
762
+ sections: {
763
+ impressum: {
764
+ operator: {
765
+ title: "Responsable del sitio",
766
+ body: (o) =>
767
+ `${o.name}\n${o.postalCode} ${o.city}\n${o.country}\n\nLa dirección postal completa se facilita, previa solicitud, a quien tenga un interés jurídico legítimo; escriba a la dirección de contacto indicada abajo.`,
768
+ },
769
+ contact: {
770
+ title: "Contacto",
771
+ body: (o) => `Correo electrónico: ${o.email}`,
772
+ },
773
+ disclaimer: {
774
+ title: "Responsabilidad por contenidos y enlaces",
775
+ body: "Este es un proyecto privado y sin fines comerciales, que se ofrece sin garantía durante una beta cerrada. Los sitios externos que enlazamos son responsabilidad de sus respectivos operadores; no tenemos control sobre su contenido.",
776
+ },
777
+ },
778
+ privacy: {
779
+ controller: {
780
+ title: "Responsable del tratamiento",
781
+ body: (o) =>
782
+ `El responsable del tratamiento de los datos personales en este servicio es:\n${o.name}\n${o.postalCode} ${o.city}, ${o.country}\nCorreo electrónico: ${o.email}\n\nLa dirección postal completa se facilita, previa solicitud, a los interesados y a las autoridades de control.`,
783
+ },
784
+ legal_basis: {
785
+ title: "Base jurídica",
786
+ body: "Como el responsable tiene su sede en Suiza, el tratamiento se rige por la Ley Federal suiza de Protección de Datos (LPD). Cuando le sea aplicable el Reglamento General de Protección de Datos de la UE (RGPD), nos basamos en la ejecución de un contrato para prestar el servicio (art. 6.1.b RGPD) y en nuestro interés legítimo en operarlo y protegerlo (art. 6.1.f RGPD).",
787
+ },
788
+ browser: {
789
+ title: "Qué guarda su navegador",
790
+ lead: "Ninguna cookie. La aplicación guarda lo siguiente en el almacenamiento de su navegador:",
791
+ tail: "Nada de ello se usa para seguirle. Las entradas pendientes de envío se nos envían en cuanto es posible; todo lo demás permanece en su dispositivo. Todo ello desaparece cuando borra los datos del sitio, y al cerrar sesión se eliminan los tokens de inicio de sesión.",
792
+ },
793
+ rights: {
794
+ title: "Sus derechos",
795
+ lead: "Tiene derecho de acceso, rectificación, supresión, limitación, portabilidad y oposición.",
796
+ tail: "Si se encuentra en Suiza, puede dirigirse al Comisionado Federal de Protección de Datos e Información (FDPIC); si se encuentra en la UE, puede presentar una reclamación ante su autoridad de control local.",
797
+ },
798
+ contact: {
799
+ title: "Contacto para la protección de datos",
800
+ body: (o) => `Para cualquier solicitud sobre privacidad, escriba a: ${o.email}`,
801
+ },
802
+ },
803
+ terms: {
804
+ warranty: {
805
+ title: "Sin garantía",
806
+ body: "El servicio se ofrece «tal cual» y «según disponibilidad», sin garantías de ningún tipo, en la medida en que lo permita la ley. Al ser una beta, puede contener errores, cambiar o interrumpirse en cualquier momento; conserve usted mismo copias de seguridad de los datos importantes.",
807
+ },
808
+ liability: {
809
+ title: "Limitación de responsabilidad",
810
+ body: "En la medida en que lo permita la legislación aplicable, el operador no responde de los daños indirectos o consecuentes derivados del uso o de la imposibilidad de uso del servicio. Nada de lo aquí dispuesto limita la responsabilidad que la ley no permite limitar.",
811
+ },
812
+ changes: {
813
+ title: "Cambios en estas condiciones",
814
+ body: "Estas condiciones pueden actualizarse a medida que evolucione el servicio. Los cambios importantes se anunciarán por correo electrónico o en la aplicación; si sigue usando el servicio después de un cambio, lo acepta.",
815
+ },
816
+ law: {
817
+ title: "Legislación aplicable",
818
+ body: (o) =>
819
+ `Estas condiciones se rigen por el derecho suizo, con exclusión de sus normas de conflicto de leyes. En la medida en que lo permita la ley, el fuero competente es ${o.city} (${o.region}), ${o.country}.`,
820
+ },
821
+ },
822
+ },
742
823
  },
743
824
  characterCount: {
744
825
  count: (used, max) => `${n(used)} de ${n(max)} ${plural(max, "carácter", "caracteres")}`,
@@ -753,8 +753,91 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
753
753
  waking: (appName) =>
754
754
  `Le serveur se met en veille quand personne n’utilise ${appName ?? "l’application"}, donc la première requête après une pause doit le redémarrer. Cela peut prendre un moment — rien n’est perdu, la page se remplira d’elle-même.`,
755
755
  },
756
+ // 0.28.0 — docs/legal-harmonization.md §4.3/§4.4: keksdose's reviewed French, and
757
+ // Kurvenschmiede's for the browser section and the beta notice; spaced as this
758
+ // catalogue writes it (\u00a0 before ":", \u202f before ";" and inside « »).
756
759
  legal: {
760
+ // Not keksdose's "Mentions légales": that is the Imprint link's label, and a screen
761
+ // reader would read it twice (§4.4).
757
762
  navLabel: "Informations légales",
763
+ links: {
764
+ impressum: "Mentions légales",
765
+ privacy: "Confidentialité",
766
+ terms: "Conditions d’utilisation",
767
+ },
768
+ titles: {
769
+ impressum: "Mentions légales",
770
+ privacy: "Politique de confidentialité",
771
+ terms: "Conditions d’utilisation",
772
+ },
773
+ backHome: "Retour à l’accueil",
774
+ accept: "J’accepte les {terms} et la {privacy}",
775
+ notice: {
776
+ beta: "Bêta fermée. Ces textes n’ont pas encore été relus par un avocat et le seront avant un lancement public.",
777
+ privacy:
778
+ "Bêta fermée. Les formulations juridiques ci-dessous n’ont pas encore été relues par un avocat\u202f; cela sera fait avant un lancement public. Les descriptions techniques — ce qui est stocké, où, et qui peut le lire — décrivent ce que fait réellement le logiciel aujourd’hui et sont faites pour être vérifiées par rapport à lui.",
779
+ },
780
+ sections: {
781
+ impressum: {
782
+ operator: {
783
+ title: "Exploitant",
784
+ body: (o) =>
785
+ `${o.name}\n${o.postalCode} ${o.city}\n${o.country}\n\nL’adresse postale complète est communiquée sur demande à toute personne ayant un intérêt juridique légitime\u202f; écrivez à l’adresse de contact ci-dessous.`,
786
+ },
787
+ contact: {
788
+ title: "Contact",
789
+ body: (o) => `E-mail\u00a0: ${o.email}`,
790
+ },
791
+ disclaimer: {
792
+ title: "Responsabilité pour les contenus et les liens",
793
+ body: "Il s’agit d’un projet privé et non commercial, proposé dans le cadre d’une bêta fermée, sans garantie. Les sites externes vers lesquels nous renvoyons relèvent de la responsabilité de leurs exploitants respectifs\u202f; nous n’avons aucun contrôle sur leur contenu.",
794
+ },
795
+ },
796
+ privacy: {
797
+ controller: {
798
+ title: "Responsable du traitement",
799
+ body: (o) =>
800
+ `Le responsable du traitement des données personnelles dans ce service est\u00a0:\n${o.name}\n${o.postalCode} ${o.city}, ${o.country}\nE-mail\u00a0: ${o.email}\n\nL’adresse postale complète est communiquée sur demande aux personnes concernées et aux autorités de surveillance.`,
801
+ },
802
+ legal_basis: {
803
+ title: "Base légale",
804
+ body: "L’exploitant étant établi en Suisse, le traitement est régi par la loi fédérale suisse sur la protection des données (LPD). Lorsque le Règlement général sur la protection des données de l’UE (RGPD) vous est applicable, nous nous fondons sur l’exécution d’un contrat pour fournir le service (art. 6, par. 1, let. b RGPD) et sur notre intérêt légitime à l’exploiter et à le sécuriser (art. 6, par. 1, let. f RGPD).",
805
+ },
806
+ browser: {
807
+ title: "Ce que votre navigateur enregistre",
808
+ lead: "Aucun cookie. L’app conserve les éléments suivants dans le stockage de votre navigateur\u00a0:",
809
+ tail: "Rien de tout cela ne sert à vous suivre. Les éléments en attente d’envoi nous sont transmis dès que possible\u202f; tout le reste demeure sur votre appareil. Tout cela disparaît lorsque vous effacez les données du site, et la déconnexion supprime les jetons de connexion.",
810
+ },
811
+ rights: {
812
+ title: "Vos droits",
813
+ lead: "Vous disposez d’un droit d’accès, de rectification, d’effacement, de limitation, de portabilité des données et d’opposition.",
814
+ tail: "Si vous êtes en Suisse, vous pouvez vous adresser au Préposé fédéral à la protection des données et à la transparence (PFPDT)\u202f; si vous êtes dans l’UE, vous pouvez déposer une plainte auprès de votre autorité de surveillance locale.",
815
+ },
816
+ contact: {
817
+ title: "Contact pour la protection des données",
818
+ body: (o) => `Pour toute demande relative à la confidentialité, contactez\u00a0: ${o.email}`,
819
+ },
820
+ },
821
+ terms: {
822
+ warranty: {
823
+ title: "Absence de garantie",
824
+ body: "Le service est fourni «\u202ftel quel\u202f» et «\u202fselon disponibilité\u202f», sans garantie d’aucune sorte dans la mesure permise par la loi. En tant que bêta, il peut contenir des erreurs, changer ou être interrompu à tout moment — conservez vos propres sauvegardes des données importantes.",
825
+ },
826
+ liability: {
827
+ title: "Limitation de responsabilité",
828
+ body: "Dans la mesure permise par le droit applicable, l’exploitant n’est pas responsable des dommages indirects ou consécutifs résultant de l’utilisation ou de l’impossibilité d’utiliser le service. Rien ici ne limite une responsabilité qui ne peut pas être limitée par la loi.",
829
+ },
830
+ changes: {
831
+ title: "Modifications des présentes conditions",
832
+ body: "Ces conditions peuvent être mises à jour au fil de l’évolution du service. Les modifications importantes seront annoncées par e-mail ou dans l’app\u202f; continuer à utiliser le service après une modification vaut acceptation.",
833
+ },
834
+ law: {
835
+ title: "Droit applicable",
836
+ body: (o) =>
837
+ `Les présentes conditions sont régies par le droit suisse, à l’exclusion de ses règles de conflit de lois. Dans la mesure où la loi le permet, le for est ${o.city} (${o.region}), ${o.country}.`,
838
+ },
839
+ },
840
+ },
758
841
  },
759
842
  characterCount: {
760
843
  count: (used, max) => `${n(used)} sur ${n(max)} ${plural(max, "caractère", "caractères")}`,
@@ -742,8 +742,92 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
742
742
  waking: (appName) =>
743
743
  `A szerver elalszik, ha senki sem használja ${appName ? `a(z) ${appName} alkalmazást` : "az alkalmazást"}, ezért egy szünet utáni első kérésnek újra el kell indítania. Ez eltarthat egy ideig – semmi sem vész el, az oldal magától betöltődik.`,
744
744
  },
745
+ // 0.28.0 — docs/legal-harmonization.md §4.3/§4.4: Kurvenschmiede's reviewed Hungarian
746
+ // (formal "Ön"), brought into line with the kit's English; it goes back to
747
+ // Kurvenschmiede for review.
745
748
  legal: {
746
749
  navLabel: "Jogi információk",
750
+ links: {
751
+ impressum: "Impresszum",
752
+ privacy: "Adatvédelmi tájékoztató",
753
+ terms: "Felhasználási feltételek",
754
+ },
755
+ titles: {
756
+ impressum: "Impresszum",
757
+ privacy: "Adatvédelmi tájékoztató",
758
+ terms: "Felhasználási feltételek",
759
+ },
760
+ backHome: "Vissza a kezdőlapra",
761
+ // The accusative ending is glued to the link, as Italian glues its article: "a
762
+ // Felhasználási feltételeket és az Adatvédelmi tájékoztatót". Nothing is added around
763
+ // a placeholder, and the articles fit these two titles (a F…, az A…).
764
+ accept: "Elfogadom a {terms}et és az {privacy}t",
765
+ notice: {
766
+ beta: "Zárt béta. Ezeket a szövegeket ügyvéd még nem ellenőrizte; erre a nyilvános indulás előtt sor kerül.",
767
+ privacy:
768
+ "Zárt béta. Az alábbi jogi szövegezést ügyvéd még nem ellenőrizte; erre a nyilvános indulás előtt sor kerül. A műszaki leírások – mit tárolunk, hol és ki olvashatja – azt írják le, amit a szoftver ma ténylegesen tesz, és arra valók, hogy a szoftverrel össze lehessen vetni őket.",
769
+ },
770
+ sections: {
771
+ impressum: {
772
+ operator: {
773
+ title: "Üzemeltető",
774
+ body: (o) =>
775
+ `${o.name}\n${o.postalCode} ${o.city}\n${o.country}\n\nA teljes postai címet kérésre megadjuk mindenkinek, akinek jogos jogi érdeke fűződik hozzá; ehhez írjon az alábbi kapcsolattartási címre.`,
776
+ },
777
+ contact: {
778
+ title: "Kapcsolat",
779
+ body: (o) => `E-mail: ${o.email}`,
780
+ },
781
+ disclaimer: {
782
+ title: "Felelősség a tartalmakért és a hivatkozásokért",
783
+ body: "Ez egy magán, nem kereskedelmi projekt, amelyet zárt béta keretében, szavatosság nélkül kínálunk. Az általunk hivatkozott külső oldalakért azok üzemeltetői felelősek; tartalmukra nincs befolyásunk.",
784
+ },
785
+ },
786
+ privacy: {
787
+ controller: {
788
+ title: "Adatkezelő",
789
+ body: (o) =>
790
+ `A szolgáltatásban a személyes adatok kezeléséért felelős:\n${o.name}\n${o.postalCode} ${o.city}, ${o.country}\nE-mail: ${o.email}\n\nA teljes postai címet kérésre megadjuk az érintetteknek és a felügyeleti hatóságoknak.`,
791
+ },
792
+ legal_basis: {
793
+ title: "Jogalap",
794
+ body: "Mivel az üzemeltető székhelye Svájcban van, az adatkezelésre a svájci szövetségi adatvédelmi törvény (DSG/FADP) az irányadó. Ha Önre az EU általános adatvédelmi rendelete (GDPR) vonatkozik, a szolgáltatás nyújtására irányuló szerződés teljesítésére (GDPR 6. cikk (1) b) pont) és a szolgáltatás működtetéséhez és védelméhez fűződő jogos érdekünkre (GDPR 6. cikk (1) f) pont) támaszkodunk.",
795
+ },
796
+ browser: {
797
+ title: "Mit tárol az Ön böngészője",
798
+ lead: "Nincsenek sütik. Az alkalmazás a következőket tárolja a böngészője tárhelyén:",
799
+ tail: "Egyiket sem használjuk az Ön követésére. A küldésre váró bejegyzéseket a böngésző elküldi nekünk, amint lehetséges; minden más az Ön eszközén marad. Mindez eltűnik, amikor törli a webhely adatait, kijelentkezéskor pedig a bejelentkezési tokenek törlődnek.",
800
+ },
801
+ rights: {
802
+ title: "Az Ön jogai",
803
+ lead: "Önt megilleti a hozzáférés, a helyesbítés, a törlés, a korlátozás, az adathordozhatóság és a tiltakozás joga.",
804
+ tail: "Ha Svájcban tartózkodik, a Szövetségi Adatvédelmi és Információs Biztoshoz (FDPIC) fordulhat; ha az EU-ban, panaszt nyújthat be a helyi felügyeleti hatóságnál.",
805
+ },
806
+ contact: {
807
+ title: "Kapcsolat adatvédelmi ügyekben",
808
+ body: (o) => `Bármilyen adatvédelmi kérés esetén írjon ide: ${o.email}`,
809
+ },
810
+ },
811
+ terms: {
812
+ warranty: {
813
+ title: "Szavatosság kizárása",
814
+ body: "A szolgáltatást a jogszabályok által megengedett mértékben „ahogy van” és „ahogy elérhető” alapon nyújtjuk, mindenféle szavatosság nélkül. Bétaváltozatként hibákat tartalmazhat, változhat vagy bármikor megszakadhat – fontos adatairól készítsen saját biztonsági másolatot.",
815
+ },
816
+ liability: {
817
+ title: "Felelősségkorlátozás",
818
+ body: "Az alkalmazandó jog által megengedett mértékben az üzemeltető nem felel a szolgáltatás használatából vagy annak lehetetlenségéből eredő közvetett vagy következményes károkért. Ez nem korlátozza azt a felelősséget, amelyet jogszabály alapján nem lehet korlátozni.",
819
+ },
820
+ changes: {
821
+ title: "A feltételek módosítása",
822
+ body: "Ezek a feltételek a szolgáltatás fejlődésével módosulhatnak. A lényeges változásokat e-mailben vagy az alkalmazásban jelentjük be; aki a változás után tovább használja a szolgáltatást, elfogadja azt.",
823
+ },
824
+ law: {
825
+ title: "Irányadó jog",
826
+ body: (o) =>
827
+ `Ezekre a feltételekre a svájci jog az irányadó, a kollíziós szabályok kizárásával. A jogszabályok által megengedett mértékben az illetékes bíróság székhelye ${o.city} (${o.region}), ${o.country}.`,
828
+ },
829
+ },
830
+ },
747
831
  },
748
832
  characterCount: {
749
833
  // A noun after a numeral stays singular: "80 karakter".
@@ -741,8 +741,92 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
741
741
  waking: (appName) =>
742
742
  `Il server va in sospensione quando nessuno usa ${appName ?? "l’app"}, quindi la prima richiesta dopo una pausa deve riavviarlo. Può volerci un momento: non si perde nulla, la pagina si completa da sola.`,
743
743
  },
744
+ // 0.28.0 — docs/legal-harmonization.md §4.3/§4.4: keksdose's reviewed Italian, and
745
+ // Kurvenschmiede's for the browser section and the beta notice; formal, "Lei" and
746
+ // "Suo" capitalised, like the rest of this catalogue.
744
747
  legal: {
745
748
  navLabel: "Note legali",
749
+ links: {
750
+ impressum: "Impressum",
751
+ privacy: "Privacy",
752
+ terms: "Condizioni d’uso",
753
+ },
754
+ titles: {
755
+ impressum: "Impressum",
756
+ privacy: "Informativa sulla privacy",
757
+ terms: "Condizioni d’uso",
758
+ },
759
+ backHome: "Torna alla pagina iniziale",
760
+ // The elided article stays glued to the link: "e l’Informativa", no space (§4.4).
761
+ accept: "Accetto le {terms} e l’{privacy}",
762
+ notice: {
763
+ beta: "Beta chiusa. Questi testi non sono ancora stati verificati da un avvocato e lo saranno prima di un lancio pubblico.",
764
+ privacy:
765
+ "Beta chiusa. Le formulazioni legali qui sotto non sono ancora state verificate da un avvocato; lo saranno prima di un lancio pubblico. Le descrizioni tecniche — cosa viene memorizzato, dove e chi può leggerlo — descrivono ciò che il software fa davvero oggi e sono pensate per essere verificate rispetto a esso.",
766
+ },
767
+ sections: {
768
+ impressum: {
769
+ operator: {
770
+ title: "Gestore",
771
+ body: (o) =>
772
+ `${o.name}\n${o.postalCode} ${o.city}\n${o.country}\n\nL’indirizzo postale completo viene fornito su richiesta a chiunque abbia un legittimo interesse giuridico; scriva all’indirizzo di contatto qui sotto.`,
773
+ },
774
+ contact: {
775
+ title: "Contatto",
776
+ body: (o) => `Email: ${o.email}`,
777
+ },
778
+ disclaimer: {
779
+ title: "Responsabilità per contenuti e link",
780
+ body: "Questo è un progetto privato e non commerciale, offerto nell’ambito di una beta chiusa, senza garanzia. I siti esterni a cui rimandiamo sono di responsabilità dei rispettivi gestori; non abbiamo alcun controllo sui loro contenuti.",
781
+ },
782
+ },
783
+ privacy: {
784
+ controller: {
785
+ title: "Titolare del trattamento",
786
+ // "Titolare", as the title says: in the GDPR's Italian the "responsabile del
787
+ // trattamento" is the processor (Art. 28), not the controller.
788
+ body: (o) =>
789
+ `Il titolare del trattamento dei dati personali in questo servizio è:\n${o.name}\n${o.postalCode} ${o.city}, ${o.country}\nEmail: ${o.email}\n\nL’indirizzo postale completo viene fornito su richiesta agli interessati e alle autorità di controllo.`,
790
+ },
791
+ legal_basis: {
792
+ title: "Base giuridica",
793
+ body: "Poiché il gestore ha sede in Svizzera, il trattamento è disciplinato dalla Legge federale svizzera sulla protezione dei dati (LPD). Dove il Regolamento generale sulla protezione dei dati dell’UE (GDPR) si applica a Lei, ci basiamo sull’esecuzione di un contratto per fornire il servizio (art. 6, par. 1, lett. b GDPR) e sul nostro legittimo interesse a gestirlo e proteggerlo (art. 6, par. 1, lett. f GDPR).",
794
+ },
795
+ browser: {
796
+ title: "Che cosa salva il Suo browser",
797
+ lead: "Nessun cookie. L’app salva quanto segue nella memoria del Suo browser:",
798
+ tail: "Niente di tutto ciò viene usato per tracciarLa. Le voci in attesa di invio ci vengono trasmesse non appena possibile; tutto il resto rimane sul Suo dispositivo. Tutto questo scompare quando cancella i dati del sito, e uscendo dall’account vengono rimossi i token di accesso.",
799
+ },
800
+ rights: {
801
+ title: "I Suoi diritti",
802
+ lead: "Ha diritto di accesso, rettifica, cancellazione, limitazione, portabilità dei dati e opposizione.",
803
+ tail: "Se si trova in Svizzera può rivolgersi all’Incaricato federale della protezione dei dati e della trasparenza (IFPDT); se si trova nell’UE può presentare reclamo alla Sua autorità di controllo locale.",
804
+ },
805
+ contact: {
806
+ title: "Contatto per la protezione dei dati",
807
+ body: (o) => `Per qualsiasi richiesta sulla privacy, si rivolga a: ${o.email}`,
808
+ },
809
+ },
810
+ terms: {
811
+ warranty: {
812
+ title: "Nessuna garanzia",
813
+ body: "Il servizio è fornito «così com’è» e «come disponibile», senza garanzie di alcun tipo nei limiti consentiti dalla legge. Come beta può contenere errori, cambiare o essere interrotto in qualsiasi momento: conservi copie di backup dei dati importanti.",
814
+ },
815
+ liability: {
816
+ title: "Limitazione di responsabilità",
817
+ body: "Nei limiti consentiti dalla legge applicabile, il gestore non è responsabile per danni indiretti o consequenziali derivanti dall’uso o dall’impossibilità di usare il servizio. Nulla di quanto qui previsto limita la responsabilità che non può essere limitata per legge.",
818
+ },
819
+ changes: {
820
+ title: "Modifiche a queste condizioni",
821
+ body: "Queste condizioni possono essere aggiornate con l’evoluzione del servizio. Le modifiche sostanziali saranno annunciate via email o nell’app; l’uso continuato dopo una modifica ne implica l’accettazione.",
822
+ },
823
+ law: {
824
+ title: "Legge applicabile",
825
+ body: (o) =>
826
+ `Queste condizioni sono disciplinate dal diritto svizzero, con esclusione delle norme sui conflitti di legge. Nei limiti consentiti dalla legge, il foro competente è ${o.city} (${o.region}), ${o.country}.`,
827
+ },
828
+ },
829
+ },
746
830
  },
747
831
  characterCount: {
748
832
  count: (used, max) => `${n(used)} di ${n(max)} ${plural(max, "carattere", "caratteri")}`,
@@ -720,8 +720,89 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
720
720
  waking: (appName) =>
721
721
  `无人使用${appName ? ` ${appName} ` : "本应用"}时,服务器会进入休眠,因此暂停后的第一个请求需要重新启动它。这可能需要一点时间——不会丢失任何内容,页面会自动加载完成。`,
722
722
  },
723
+ // 0.28.0 — docs/legal-harmonization.md §4.3/§4.4: Kurvenschmiede's reviewed Chinese,
724
+ // brought into line with the kit's English; it goes back to Kurvenschmiede for review.
723
725
  legal: {
724
726
  navLabel: "法律信息",
727
+ links: {
728
+ impressum: "运营者信息",
729
+ privacy: "隐私政策",
730
+ terms: "使用条款",
731
+ },
732
+ titles: {
733
+ impressum: "运营者信息",
734
+ privacy: "隐私政策",
735
+ terms: "使用条款",
736
+ },
737
+ backHome: "返回首页",
738
+ // Book-title marks around the two documents, outside the links.
739
+ accept: "我接受《{terms}》和《{privacy}》",
740
+ notice: {
741
+ beta: "封闭测试阶段。这些文本尚未经律师审阅,将在公开发布之前完成审阅。",
742
+ privacy:
743
+ "封闭测试阶段。以下法律措辞尚未经律师审阅,将在公开发布之前完成审阅。其中的技术说明——存储了什么、存储在哪里以及谁可以读取——描述的是软件目前的实际行为,旨在供人对照软件加以核实。",
744
+ },
745
+ sections: {
746
+ impressum: {
747
+ operator: {
748
+ title: "运营者",
749
+ body: (o) =>
750
+ `${o.name}\n${o.postalCode} ${o.city}\n${o.country}\n\n完整的邮寄地址可应具有正当法律利益者的要求提供;请发送邮件至下方联系地址。`,
751
+ },
752
+ contact: {
753
+ title: "联系方式",
754
+ body: (o) => `电子邮件:${o.email}`,
755
+ },
756
+ disclaimer: {
757
+ title: "内容与链接的责任",
758
+ body: "这是一个私人的非商业项目,在封闭测试期间提供,不作任何保证。我们所链接的外部网站由其各自的运营者负责;我们无法控制其内容。",
759
+ },
760
+ },
761
+ privacy: {
762
+ controller: {
763
+ title: "数据控制者",
764
+ body: (o) =>
765
+ `负责处理本服务中个人数据的是:\n${o.name}\n${o.postalCode} ${o.city},${o.country}\n电子邮件:${o.email}\n\n完整的邮寄地址可应数据主体和监管机构的要求提供。`,
766
+ },
767
+ legal_basis: {
768
+ title: "法律依据",
769
+ body: "由于运营者位于瑞士,数据处理受瑞士《联邦数据保护法》(FADP)约束。如果欧盟《通用数据保护条例》(GDPR)适用于您,我们的依据是为提供服务而履行合同(GDPR 第 6 条第 1 款 b 项)以及我们在运行和保护服务方面的合法利益(GDPR 第 6 条第 1 款 f 项)。",
770
+ },
771
+ browser: {
772
+ title: "您的浏览器存储什么",
773
+ lead: "不使用 Cookie。应用程序会在您浏览器的存储中保留以下内容:",
774
+ tail: "这些内容都不会用于跟踪您。等待发送的条目会尽快发送给我们;其他所有内容都保留在您的设备上。清除网站数据后,这些内容会全部消失;退出登录会删除登录令牌。",
775
+ },
776
+ rights: {
777
+ title: "您的权利",
778
+ lead: "您享有访问、更正、删除、限制处理、数据可携和反对的权利。",
779
+ tail: "如果您在瑞士,可以联系联邦数据保护和信息专员(FDPIC);如果您在欧盟,可以向您当地的监管机构投诉。",
780
+ },
781
+ contact: {
782
+ title: "数据保护联系方式",
783
+ body: (o) => `如有任何隐私方面的请求,请联系:${o.email}`,
784
+ },
785
+ },
786
+ terms: {
787
+ warranty: {
788
+ title: "不作保证",
789
+ body: "在法律允许的范围内,本服务按“现状”和“现有”提供,不作任何形式的保证。作为测试版,它可能包含错误、发生变化或随时中断——请自行备份重要数据。",
790
+ },
791
+ liability: {
792
+ title: "责任限制",
793
+ body: "在适用法律允许的范围内,运营者对因使用或无法使用本服务而产生的任何间接损失或后果性损失不承担责任。本条款不限制依法不得限制的责任。",
794
+ },
795
+ changes: {
796
+ title: "条款变更",
797
+ body: "本条款可能会随着服务的发展而更新。重大变更将通过电子邮件或在应用程序中公布;变更后继续使用本服务即表示您接受变更。",
798
+ },
799
+ law: {
800
+ title: "适用法律",
801
+ body: (o) =>
802
+ `本条款受瑞士法律管辖,但不适用其冲突法规则。在法律允许的范围内,管辖法院所在地为${o.country} ${o.city}(${o.region})。`,
803
+ },
804
+ },
805
+ },
725
806
  },
726
807
  characterCount: {
727
808
  count: (used, max) => `已输入 ${n(used)}/${n(max)} 个字符`,