@cosmicdrift/kumiko-locale-de 0.369.0 → 0.370.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-locale-de",
3
- "version": "0.369.0",
3
+ "version": "0.370.0",
4
4
  "description": "German UI and mail copy for Kumiko framework screens. Opt in by mounting localeDe() + localeDeClient().",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -28,7 +28,7 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@cosmicdrift/kumiko-framework": "0.369.0"
31
+ "@cosmicdrift/kumiko-framework": "0.370.0"
32
32
  },
33
33
  "publishConfig": {
34
34
  "registry": "https://registry.npmjs.org",
@@ -2,6 +2,8 @@
2
2
  // i18n-parity test. Regenerate when that test reports a drift.
3
3
 
4
4
  export const frameworkEnCatalog: Readonly<Record<string, string>> = {
5
+ "account-security:nav.accountSecurity": "Account & Security",
6
+ "screen:account-security.title": "Account & Security",
5
7
  "admin-shell:nav.myCaps": "Plans & Caps",
6
8
  "admin-shell:nav.platformOverview": "Overview",
7
9
  "admin-shell:nav.tenantCaps": "Plans & Caps",
@@ -1139,9 +1141,14 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1139
1141
  "mail.unsubscribe.doneTitle": "Unsubscribed",
1140
1142
  "mail.unsubscribe.doneMessage": "You have been unsubscribed.",
1141
1143
  "mail.unsubscribe.undoButton": "Undo",
1144
+ "mail.unsubscribe.undoHint": "Unsubscribed by mistake? You can undo it within the next hour.",
1142
1145
  "mail.unsubscribe.resubscribedTitle": "Subscribed again",
1143
1146
  "mail.unsubscribe.resubscribedMessage": "You have been subscribed again.",
1144
1147
  "mail.unsubscribe.failed": "That did not work. Please try again later.",
1148
+ "mail.unsubscribe.failedTitle": "Something went wrong",
1149
+ "mail.unsubscribe.invalidTitle": "Link no longer valid",
1150
+ "mail.unsubscribe.invalidMessage":
1151
+ "This link is invalid or has expired. Please use the unsubscribe link in a more recent email.",
1145
1152
  "templateResolver.errors.systemOnlyTemplate":
1146
1153
  "Only the platform maintains this template; it cannot be overridden per tenant.",
1147
1154
  "templateResolver.errors.template.targetExists":
@@ -1405,6 +1412,7 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1405
1412
  "waitlist:entity:waitlistEntry:field:portfolio": "Portfolio",
1406
1413
  "waitlist:entity:waitlistEntry:field:status": "Status",
1407
1414
  "waitlist:entity:waitlistEntry:field:status:option:invited": "Invited",
1415
+ "waitlist:entity:waitlistEntry:field:status:option:provisioned": "Provisioned",
1408
1416
  "waitlist:entity:waitlistEntry:field:status:option:pending": "Pending",
1409
1417
  "waitlist:entity:waitlistEntry:field:status:option:rejected": "Rejected",
1410
1418
  "waitlist:entity:waitlistEntry:field:submittedAt": "Created",
@@ -1625,6 +1633,9 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1625
1633
  "documentDesigner.mail.props.senderDefault": "Default sender of the tenant",
1626
1634
  "documentDesigner.mail.props.senderPlaceholder": "Name shown to recipients",
1627
1635
  "documentDesigner.mail.props.senderHint": "The address comes from the platform's mail delivery.",
1636
+ "documentDesigner.mail.props.senderHintTenant":
1637
+ "The address comes from your organization's email sending settings.",
1638
+ "documentDesigner.mail.props.senderSettingsLink": "Open email sending",
1628
1639
  "documentDesigner.mail.props.replyTo": "Reply to",
1629
1640
  "documentDesigner.mail.props.category": "Category",
1630
1641
  "documentDesigner.mail.props.transactional": "Transactional",
@@ -18,7 +18,24 @@ const duFormRegex = /\b(du|dich|dir|dein\w*|Du|Dich|Dir|Dein\w*)\b/;
18
18
  const informalImperativeRegex =
19
19
  /(^|[.!?]\s+)(Gib|Wähle|Speichere|Klicke|Bestätige|Fordere|Scanne|Kopiere|Lege|Melde|Versuche|Prüfe|Öffne|Setze|Trage|Nutze|Verwende|Wende)(?![\p{L}])/u;
20
20
 
21
+ // Designer strings are du in the default bundle; extend the allowlist only for
22
+ // genuine 3rd-person "Sie" referring to a noun.
23
+ const formalAddressRegex =
24
+ /\b(Ihr\w*|Ihnen|(Speichern|Nutzen|Laden|Wählen|Geben|Verwenden|Klicken|Prüfen|Legen|Fügen|Löschen|Bestätigen|Verwerfen|Bearbeiten|Öffnen|Setzen|Ziehen|Versuchen) Sie|Sie (sehen|können|müssen|haben|sind|werden|wollen|möchten|erhalten|benötigen))\b/;
25
+
26
+ const DESIGNER_FORMAL_ALLOWLIST: ReadonlySet<string> = new Set<string>();
27
+
21
28
  describe("locale-de formal overrides", () => {
29
+ test("informal bundle has no formal address in documentDesigner keys", () => {
30
+ const offenders = Object.entries(localeDeBundle)
31
+ .filter(([key]) => key.startsWith("documentDesigner."))
32
+ .filter(
33
+ ([key, value]) => !DESIGNER_FORMAL_ALLOWLIST.has(key) && formalAddressRegex.test(value),
34
+ )
35
+ .map(([key]) => key);
36
+ expect(offenders).toEqual([]);
37
+ });
38
+
22
39
  test("every override key exists in localeDeBundle", () => {
23
40
  const orphaned = Object.keys(localeDeFormalOverrides).filter(
24
41
  (k) => localeDeBundle[k] === undefined,
package/src/formal.ts CHANGED
@@ -13,6 +13,26 @@ export const localeDeFormalOverrides: Readonly<Record<string, string>> = {
13
13
  "Ihr eigenes Layout wird entfernt, danach gilt wieder das System-Layout.",
14
14
  "documentDesigner.editor.dirtySwitch.description":
15
15
  "Beim Wechsel der Layout-Art gehen Ihre ungespeicherten Änderungen verloren.",
16
+ "documentDesigner.origin.draftBesideActive":
17
+ "Verschickt wird Version {active}, Ihr Entwurf (Version {draft}) ist noch nicht veröffentlicht.",
18
+ "documentDesigner.mail.origin.tenantOnly": "Diese Vorlage gibt es nur für Ihren Mandanten.",
19
+ "documentDesigner.mail.origin.system":
20
+ "Sie sehen die System-Vorlage v{version}. Speichern legt eine Anpassung für Ihren Mandanten an.",
21
+ "documentDesigner.mail.props.senderHintTenant":
22
+ "Die Adresse kommt aus dem E-Mail-Versand Ihres Mandanten.",
23
+ "documentDesigner.mail.origin.copyNote":
24
+ "Beim Kopieren einer System-Fassung kommen Bilder und Anhänge nicht mit; laden Sie sie danach neu hoch.",
25
+ "documentDesigner.mail.origin.creating":
26
+ "Neue Fassung für {language}. Sie wird erst mit Speichern angelegt.",
27
+ "documentDesigner.mail.reset.description":
28
+ "Ihre Anpassung dieser Vorlage wird in allen Sprachen entfernt. Danach gilt wieder die System-Vorlage.",
29
+ "documentDesigner.mail.discard.description": "Ihre ungespeicherten Änderungen gehen verloren.",
30
+ "documentDesigner.mail.leave.description":
31
+ "Speichern Sie Ihre Änderungen als Entwurf, verwerfen Sie sie oder bleiben Sie auf dieser Seite.",
32
+ "documentDesigner.mail.testMail.ownAddress": "Ihre Adresse",
33
+ "documentDesigner.mail.testMail.hint":
34
+ "Versand über den normalen Zustellweg des Mandanten an Ihre eigene Adresse.",
35
+ "documentDesigner.mail.testMail.sent": "Test-Mail an Ihre Adresse gesendet: {subject}",
16
36
  "auth.errors.accountRestricted":
17
37
  "Konto nach Art. 18 DSGVO eingeschränkt. Heben Sie die Einschränkung auf, um sich wieder anzumelden.",
18
38
  "auth.errors.invalidResetToken":
package/src/strings.ts CHANGED
@@ -3,6 +3,8 @@
3
3
  // and extend this table (the parity test in use-all-bundled fails otherwise).
4
4
 
5
5
  export const localeDeBundle: Readonly<Record<string, string>> = {
6
+ "account-security:nav.accountSecurity": "Konto & Sicherheit",
7
+ "screen:account-security.title": "Konto & Sicherheit",
6
8
  "admin-shell:nav.myCaps": "Tarife & Limits",
7
9
  "admin-shell:nav.platformOverview": "Übersicht",
8
10
  "admin-shell:nav.tenantCaps": "Tarife & Limits",
@@ -1172,9 +1174,15 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1172
1174
  "mail.unsubscribe.doneTitle": "Abgemeldet",
1173
1175
  "mail.unsubscribe.doneMessage": "Diese E-Mails kommen nicht mehr.",
1174
1176
  "mail.unsubscribe.undoButton": "Rückgängig",
1177
+ "mail.unsubscribe.undoHint":
1178
+ "Aus Versehen abgemeldet? Das lässt sich innerhalb der nächsten Stunde rückgängig machen.",
1175
1179
  "mail.unsubscribe.resubscribedTitle": "Wieder angemeldet",
1176
1180
  "mail.unsubscribe.resubscribedMessage": "Diese E-Mails kommen wieder.",
1177
1181
  "mail.unsubscribe.failed": "Das hat nicht geklappt. Bitte später noch einmal versuchen.",
1182
+ "mail.unsubscribe.failedTitle": "Etwas ist schiefgelaufen",
1183
+ "mail.unsubscribe.invalidTitle": "Link nicht mehr gültig",
1184
+ "mail.unsubscribe.invalidMessage":
1185
+ "Dieser Link ist ungültig oder abgelaufen. Bitte den Abmeldelink aus einer neueren E-Mail verwenden.",
1178
1186
  "templateResolver.errors.systemOnlyTemplate":
1179
1187
  "Diese Vorlage pflegt nur die Plattform; sie lässt sich nicht pro Mandant überschreiben.",
1180
1188
  "templateResolver.errors.template.targetExists":
@@ -1443,6 +1451,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1443
1451
  "waitlist:entity:waitlistEntry:field:portfolio": "Portfolio",
1444
1452
  "waitlist:entity:waitlistEntry:field:status": "Status",
1445
1453
  "waitlist:entity:waitlistEntry:field:status:option:invited": "Eingeladen",
1454
+ "waitlist:entity:waitlistEntry:field:status:option:provisioned": "Eingerichtet",
1446
1455
  "waitlist:entity:waitlistEntry:field:status:option:pending": "Ausstehend",
1447
1456
  "waitlist:entity:waitlistEntry:field:status:option:rejected": "Abgelehnt",
1448
1457
  "waitlist:entity:waitlistEntry:field:submittedAt": "Erstellt",
@@ -1474,7 +1483,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1474
1483
  "documentDesigner.origin.system": "System-Vorlage",
1475
1484
  "documentDesigner.origin.override": "Mandanten-Anpassung",
1476
1485
  "documentDesigner.origin.draftBesideActive":
1477
- "Verschickt wird Version {active}, Ihr Entwurf (Version {draft}) ist noch nicht veröffentlicht.",
1486
+ "Verschickt wird Version {active}, dein Entwurf (Version {draft}) ist noch nicht veröffentlicht.",
1478
1487
  "documentDesigner.status.active": "Aktiv",
1479
1488
  "documentDesigner.status.draft": "Entwurf",
1480
1489
  "documentDesigner.status.archived": "Archiviert",
@@ -1595,13 +1604,13 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1595
1604
  "documentDesigner.mail.language.en": "Englisch",
1596
1605
  "documentDesigner.mail.language.es": "Spanisch",
1597
1606
  "documentDesigner.mail.origin.overrides": "Überschreibt die System-Vorlage v{version}.",
1598
- "documentDesigner.mail.origin.tenantOnly": "Diese Vorlage gibt es nur für Ihren Mandanten.",
1607
+ "documentDesigner.mail.origin.tenantOnly": "Diese Vorlage gibt es nur für deinen Mandanten.",
1599
1608
  "documentDesigner.mail.origin.activeSince": "Aktiv seit {when}.",
1600
1609
  "documentDesigner.mail.origin.notPublished": "Noch nicht veröffentlicht.",
1601
1610
  "documentDesigner.mail.origin.archived": "Archiviert.",
1602
1611
  "documentDesigner.mail.origin.reset": "Zurücksetzen",
1603
1612
  "documentDesigner.mail.origin.system":
1604
- "Sie sehen die System-Vorlage v{version}. Speichern legt eine Anpassung für Ihren Mandanten an.",
1613
+ "Du siehst die System-Vorlage v{version}. Speichern legt eine Anpassung für deinen Mandanten an.",
1605
1614
  "documentDesigner.mail.origin.platform":
1606
1615
  "System-Vorlage v{version}. Speichern ändert sie für alle Mandanten ohne eigene Anpassung.",
1607
1616
  "documentDesigner.mail.origin.missing": "Für {language} gibt es noch keine Fassung.",
@@ -1613,13 +1622,13 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1613
1622
  "documentDesigner.mail.languageAdjective.en": "englische",
1614
1623
  "documentDesigner.mail.languageAdjective.es": "spanische",
1615
1624
  "documentDesigner.mail.origin.copyNote":
1616
- "Beim Kopieren einer System-Fassung kommen Bilder und Anhänge nicht mit; laden Sie sie danach neu hoch.",
1625
+ "Beim Kopieren einer System-Fassung kommen Bilder und Anhänge nicht mit; lade sie danach neu hoch.",
1617
1626
  "documentDesigner.mail.origin.createBlank": "Leer anlegen",
1618
1627
  "documentDesigner.mail.origin.creating":
1619
- "Neue Fassung für {language}. Sie wird erst mit Speichern angelegt.",
1628
+ "Neue Fassung für {language}. Die Fassung wird erst mit Speichern angelegt.",
1620
1629
  "documentDesigner.mail.reset.title": "Auf System-Vorlage zurücksetzen?",
1621
1630
  "documentDesigner.mail.reset.description":
1622
- "Ihre Anpassung dieser Vorlage wird in allen Sprachen entfernt. Danach gilt wieder die System-Vorlage.",
1631
+ "Deine Anpassung dieser Vorlage wird in allen Sprachen entfernt. Danach gilt wieder die System-Vorlage.",
1623
1632
  "documentDesigner.mail.reset.confirm": "Zurücksetzen",
1624
1633
  "documentDesigner.mail.placeholder.title": "Platzhalter",
1625
1634
  "documentDesigner.mail.placeholder.missing": "fehlt",
@@ -1665,6 +1674,9 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1665
1674
  "documentDesigner.mail.props.senderDefault": "Standard-Absender des Mandanten",
1666
1675
  "documentDesigner.mail.props.senderPlaceholder": "Name, den Empfänger sehen",
1667
1676
  "documentDesigner.mail.props.senderHint": "Die Adresse kommt vom Mail-Versand der Plattform.",
1677
+ "documentDesigner.mail.props.senderHintTenant":
1678
+ "Die Adresse kommt aus dem E-Mail-Versand deines Mandanten.",
1679
+ "documentDesigner.mail.props.senderSettingsLink": "E-Mail-Versand öffnen",
1668
1680
  "documentDesigner.mail.props.replyTo": "Antwort an",
1669
1681
  "documentDesigner.mail.props.category": "Kategorie",
1670
1682
  "documentDesigner.mail.props.transactional": "Transaktional",
@@ -1716,11 +1728,11 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1716
1728
  "documentDesigner.mail.footer.ok": "Bereit zum Veröffentlichen.",
1717
1729
  "documentDesigner.mail.footer.savedAt": "Zuletzt gespeichert {when}",
1718
1730
  "documentDesigner.mail.discard.title": "Änderungen verwerfen?",
1719
- "documentDesigner.mail.discard.description": "Ihre ungespeicherten Änderungen gehen verloren.",
1731
+ "documentDesigner.mail.discard.description": "Deine ungespeicherten Änderungen gehen verloren.",
1720
1732
  "documentDesigner.mail.discard.confirm": "Verwerfen",
1721
1733
  "documentDesigner.mail.leave.title": "Ungespeicherte Änderungen",
1722
1734
  "documentDesigner.mail.leave.description":
1723
- "Speichern Sie Ihre Änderungen als Entwurf, verwerfen Sie sie oder bleiben Sie auf dieser Seite.",
1735
+ "Speichere deine Änderungen als Entwurf, verwirf sie oder bleib auf dieser Seite.",
1724
1736
  "documentDesigner.mail.leave.save": "Als Entwurf speichern",
1725
1737
  "documentDesigner.mail.leave.discard": "Verwerfen",
1726
1738
  "documentDesigner.mail.preview.bar":
@@ -1748,15 +1760,15 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1748
1760
  "Das hat der Server beim Rendern dieser Mail gefunden.",
1749
1761
  "documentDesigner.mail.testMail.title": "Test-Mail",
1750
1762
  "documentDesigner.mail.testMail.recipient": "Empfänger",
1751
- "documentDesigner.mail.testMail.ownAddress": "Ihre Adresse",
1763
+ "documentDesigner.mail.testMail.ownAddress": "Deine Adresse",
1752
1764
  "documentDesigner.mail.testMail.changeAddress": "Adresse ändern",
1753
1765
  "documentDesigner.mail.testMail.prefixSubject": "Betreff mit Präfix [TEST]",
1754
1766
  "documentDesigner.mail.testMail.attachments": "Anhang mitsenden",
1755
1767
  "documentDesigner.mail.testMail.noAttachments": "Diese Vorlage hat keine Anhänge",
1756
1768
  "documentDesigner.mail.testMail.send": "Test-Mail senden",
1757
1769
  "documentDesigner.mail.testMail.hint":
1758
- "Versand über den normalen Zustellweg des Mandanten an Ihre eigene Adresse.",
1759
- "documentDesigner.mail.testMail.sent": "Test-Mail an Ihre Adresse gesendet: {subject}",
1770
+ "Versand über den normalen Zustellweg des Mandanten an deine eigene Adresse.",
1771
+ "documentDesigner.mail.testMail.sent": "Test-Mail an deine Adresse gesendet: {subject}",
1760
1772
  "documentDesigner.mail.testMail.rateLimited":
1761
1773
  "Zu viele Test-Mails, bitte später erneut versuchen.",
1762
1774
  "screen:mail-foundation-tenant.title": "E-Mail-Versand",