@cosmicdrift/kumiko-locale-de 0.377.0 → 0.379.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.377.0",
3
+ "version": "0.379.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.377.0"
31
+ "@cosmicdrift/kumiko-framework": "0.379.0"
32
32
  },
33
33
  "publishConfig": {
34
34
  "registry": "https://registry.npmjs.org",
@@ -45,15 +45,18 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
45
45
  "audit.log.col.actor": "Actor",
46
46
  "audit.log.col.aggregateId": "Aggregate ID",
47
47
  "audit.log.col.aggregateType": "Aggregate type",
48
+ "audit.log.col.tenant": "Tenant",
48
49
  "audit.log.col.type": "Event",
49
50
  "audit.log.col.when": "When",
50
51
  "audit.log.detail.field.id": "Event ID",
51
52
  "audit.log.detail.metadata": "Metadata",
52
53
  "audit.log.detail.payload": "Event payload",
53
- "audit.log.detail.subtitle":
54
- "Read-only detail view of one audit event showing actor, timestamp, aggregate and the raw event payload and metadata; reached from a row of the audit log.",
54
+ "audit.log.description": "All events of this tenant. A row opens the details.",
55
+ "audit.log.allTenants.description": "All events of all tenants. A row opens the details.",
56
+ "audit.log.detail.subtitle": "One event with its actor, time and stored data.",
55
57
  "audit.log.details": "Details",
56
58
  "audit:nav.auditLog": "Audit",
59
+ "audit:nav.auditLogAllTenants": "Audit log (all tenants)",
57
60
  "auth-mfa:entity:__action-form__:field:code": "Code from your authenticator app",
58
61
  "auth.errors.accountLocked": "Account temporarily locked.",
59
62
  "auth.errors.accountLockedRetry": "Account locked. Try again in {minutes} minutes.",
@@ -440,6 +443,7 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
440
443
  "config.settings.extensionSelectorHint":
441
444
  "Choose a provider. Its settings appear below and are saved together with it.",
442
445
  "config.settings.provider": "Provider",
446
+ "config.settings.provider.platformDefault": "Platform default",
443
447
  "config.settings.system": "Platform",
444
448
  "config.settings.tenant": "Tenant",
445
449
  "config.settings.title": "Settings",
@@ -507,10 +511,16 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
507
511
  "errors.unconfigured": "This feature isn't configured yet.",
508
512
  "errors.uniqueViolation": "This entry already exists.",
509
513
  "errors.unprocessable": "The request could not be processed.",
514
+ "errors.file.violatesBindTarget": "This file does not meet the requirements of the target field.",
510
515
  "errors.validation.custom": "Invalid value.",
511
516
  "errors.validation.failed": "Validation failed.",
512
517
  "errors.validation.invalid_element": "Invalid entry.",
513
518
  "errors.validation.invalid_format": "Invalid format.",
519
+ "errors.validation.invalid_format.email": "Invalid email address, e.g. name@example.com.",
520
+ "errors.validation.invalid_format.url": "Invalid web address, e.g. https://example.com.",
521
+ "errors.validation.invalid_format.date": "Invalid date, e.g. 2026-10-20.",
522
+ "errors.validation.invalid_format.datetime": "Invalid date and time, e.g. 2026-10-20T14:30.",
523
+ "errors.validation.invalid_format.uuid": "Invalid ID, e.g. 123e4567-e89b-12d3-a456-426614174000.",
514
524
  "errors.validation.invalid_key": "Invalid key.",
515
525
  "errors.validation.invalid_option": "Invalid choice.",
516
526
  "errors.validation.invalid_type": "Invalid value.",
@@ -521,9 +531,14 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
521
531
  "errors.validation.too_big": "Too big or too long (maximum: {maximum}).",
522
532
  "kumiko.boolean.no": "No",
523
533
  "kumiko.boolean.yes": "Yes",
534
+ "kumiko.field.file-list.download": "Download",
535
+ "kumiko.field.file-list.hidePreview": "Hide preview",
536
+ "kumiko.field.file-list.preview": "Preview",
524
537
  "kumiko.validation.number.min": "Must be at least {minimum}.",
525
538
  "kumiko.validation.number.max": "Must be {maximum} or less.",
526
539
  "errors.validation.too_small": "Too small or too short (minimum: {minimum}).",
540
+ "errors.validation.list_min_rows.one": "At least 1 row required.",
541
+ "errors.validation.list_min_rows.other": "At least {minimum} rows required.",
527
542
  "errors.validation.unexpected_field": "Unknown field.",
528
543
  "errors.validation.unrecognized_keys": "Unknown fields.",
529
544
  "errors.versionConflict": "The record was modified in the meantime. Reload and try again.",
@@ -722,18 +737,24 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
722
737
  "kumiko.field.embedded-list.empty-cta": "Add first row",
723
738
  "kumiko.field.embedded-list.move-down": "Move down",
724
739
  "kumiko.field.embedded-list.move-up": "Move up",
725
- "kumiko.field.embedded-list.paste-cells-unmatched":
726
- "{count} cell(s) had no matching option and were left unchanged.",
727
- "kumiko.field.embedded-list.paste-rows-truncated":
728
- "{count} pasted row(s) were dropped (max row count reached).",
740
+ "kumiko.field.embedded-list.paste-cells-unmatched.one":
741
+ "1 cell had no matching option and was left unchanged.",
742
+ "kumiko.field.embedded-list.paste-cells-unmatched.other":
743
+ "{count} cells had no matching option and were left unchanged.",
744
+ "kumiko.field.embedded-list.paste-rows-truncated.one":
745
+ "1 pasted row was dropped (max row count reached).",
746
+ "kumiko.field.embedded-list.paste-rows-truncated.other":
747
+ "{count} pasted rows were dropped (max row count reached).",
729
748
  "kumiko.field.embedded-list.remove-row": "Remove row",
730
749
  "kumiko.field.file-list.add": "Add file",
731
750
  "kumiko.field.file-list.empty": "No files yet.",
751
+ "kumiko.field.dropzone.limit-count": "up to {count} files",
752
+ "kumiko.field.dropzone.limit-size": "up to {size} per file",
753
+ "kumiko.field.dropzone.title": "Drop files here or click to choose",
732
754
  "kumiko.field.file-list.move-down": "Move file down",
733
755
  "kumiko.field.file-list.move-up": "Move file up",
734
756
  "kumiko.field.file-upload.attached": "File attached",
735
757
  "kumiko.field.file-upload.change": "Change",
736
- "kumiko.field.file-upload.failed": "Upload failed",
737
758
  "kumiko.field.file-upload.remove": "Remove",
738
759
  "kumiko.field.file-upload.upload": "Upload",
739
760
  "kumiko.field.fillAction.failed": "Could not fetch a suggestion.",
@@ -781,6 +802,9 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
781
802
  "kumiko.list.count.one": "1 entry",
782
803
  "kumiko.list.count.other": "{count} entries",
783
804
  "kumiko.list.empty.filtered": "No entries match the current search or filters.",
805
+ "kumiko.list.empty.defaultFiltered":
806
+ "No entries match the default filter. Show all to include entries outside it.",
807
+ "kumiko.list.empty.showAll": "Show all",
784
808
  "kumiko.list.empty.hint": "Create the first one to get started.",
785
809
  "kumiko.list.empty.title": "No entries yet.",
786
810
  "kumiko.list.end-of-list": "— End of list —",
@@ -815,6 +839,7 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
815
839
  "kumiko.planCard.priceUnavailable": "Price not available",
816
840
  "kumiko.reference.system-tenant": "System",
817
841
  "kumiko.reference.system-user": "System",
842
+ "kumiko.reference.unknown-user": "Unknown",
818
843
  "kumiko.rowAction.failed": "Action failed",
819
844
  "kumiko.clientAction.success": "Done.",
820
845
  "kumiko.clientAction.unregistered": "This action is not available in this app.",
@@ -844,10 +869,17 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
844
869
  "kumiko.widget.floatingPanel.resizeRight": "Resize panel from the right edge",
845
870
  "kumiko.widget.floatingPanel.resizeTop": "Resize panel from the top edge",
846
871
  "kumiko.widget.loading": "Loading…",
872
+ "kumiko.widget.pdf-preview.loading": "Loading PDF…",
873
+ "kumiko.widget.pdf-preview.pageOf": "Page {page} of {pages}",
874
+ "kumiko.widget.pdf-preview.renderFailed": "The PDF could not be displayed.",
847
875
  "kumiko.widget.step-bar.done": "Done",
848
876
  "kumiko.widget.upload.done": "Uploaded",
849
877
  "kumiko.widget.upload.error": "Failed",
850
878
  "kumiko.widget.upload.rejected-type": "File type not allowed",
879
+ "kumiko.widget.upload.invalid-type": "File type or content not allowed",
880
+ "kumiko.widget.upload.max-count": "At most {count} files",
881
+ "kumiko.widget.upload.remove": "Remove file",
882
+ "kumiko.widget.upload.too-large": "File is too large",
851
883
  "kumiko.widget.upload.uploading": "Uploading…",
852
884
  "kumiko.wizard.next-with-title": "Next: {title}",
853
885
  "kumiko.wizard.save-and-close": "Save and close",
@@ -970,6 +1002,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
970
1002
  "secrets.errors.invalidValue": "This value is not valid for this secret.",
971
1003
  "screen:api-token-create.title": "Create a new token",
972
1004
  "screen:api-tokens.title": "Personal Access Tokens",
1005
+ "screen:audit-log-all-tenants-detail.title": "Event",
1006
+ "screen:audit-log-all-tenants.title": "Audit log (all tenants)",
973
1007
  "screen:audit-log-detail.title": "Event",
974
1008
  "screen:audit-log.title": "Audit log",
975
1009
  "screen:auth-mfa-disable.title": "Disable two-factor authentication",
@@ -1053,7 +1087,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1053
1087
  "tags.manage.cancel": "Cancel",
1054
1088
  "tags.manage.create": "Create label",
1055
1089
  "tags.manage.delete": "Delete",
1056
- "tags.manage.deleteConfirmDesc": "Removes it from {count} objects. This can't be undone.",
1090
+ "tags.manage.deleteConfirmDesc.one": "Removes it from 1 object. This can't be undone.",
1091
+ "tags.manage.deleteConfirmDesc.other": "Removes it from {count} objects. This can't be undone.",
1057
1092
  "tags.manage.deleteConfirmTitle": "Delete label “{name}”?",
1058
1093
  "tags.manage.edit": "Edit",
1059
1094
  "tags.manage.namePlaceholder": "Label name",
@@ -1074,6 +1109,24 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1074
1109
  "tags:entity:tag:field:color": "Color",
1075
1110
  "tags:entity:tag:field:name": "Name",
1076
1111
  "tags:entity:tag:field:scope": "Scope",
1112
+ "template-resolver:write:upsert-system:title": "Save system template",
1113
+ "template-resolver:write:upsert-tenant:title": "Save template",
1114
+ "template-resolver:write:publish:title": "Publish template",
1115
+ "template-resolver:write:archive:title": "Archive template",
1116
+ "template-resolver:write:publish-system:title": "Publish system template",
1117
+ "template-resolver:write:archive-system:title": "Archive system template",
1118
+ "template-resolver:write:discard-draft:title": "Discard draft",
1119
+ "template-resolver:write:discard-draft-system:title": "Discard system template draft",
1120
+ "template-resolver:write:reset-to-system:title": "Reset to system template",
1121
+ "template-resolver:write:set:title": "Save text",
1122
+ "template-resolver:write:import-bundle:title": "Import template",
1123
+ "template-resolver:write:import-bundle-system:title": "Import system template",
1124
+ "template-resolver:write:copy-locale:title": "Copy template to another language",
1125
+ "template-resolver:write:resource-upload:title": "Upload image or attachment",
1126
+ "template-resolver:write:resource-remove:title": "Remove image or attachment",
1127
+ "template-resolver:write:resource-link-pdf:title": "Attach PDF template",
1128
+ "template-resolver:write:send-test:title": "Send test mail",
1129
+ "template-resolver:write:patch-draft:title": "Edit template draft",
1077
1130
  "template-resolver.documentEditor.button": "Button",
1078
1131
  "template-resolver.documentEditor.buttonDefaultText": "Confirm",
1079
1132
  "template-resolver.documentEditor.buttonTarget": "Button target",
@@ -1108,6 +1161,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1108
1161
  "template-resolver.documentEditor.removeLink": "Remove link",
1109
1162
  "template-resolver.documentEditor.repeat": "Repeat",
1110
1163
  "template-resolver.documentEditor.repeatList": "List to repeat",
1164
+ "template-resolver.documentEditor.images": "Photos",
1165
+ "template-resolver.documentEditor.imagesVariable": "Photos from",
1111
1166
  "template-resolver.documentEditor.steps": "Steps",
1112
1167
  "template-resolver.documentEditor.stepsVariable": "Current step from",
1113
1168
  "template-resolver.documentEditor.stepsList": "Steps, separated by commas (value=label)",
@@ -1129,6 +1184,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1129
1184
  "template-resolver.editor.saved": "Saved.",
1130
1185
  "template-resolver.editor.saving": "Saving…",
1131
1186
  "template-resolver.editor.titleLabel": "Title",
1187
+ "templateResolver.errors.document.imagesBlockPdfOnly":
1188
+ "Photo blocks are only allowed in PDF documents.",
1132
1189
  "templateResolver.errors.document.buttonHrefNotPlaceholder":
1133
1190
  "The button target “{detail}” must be a placeholder.",
1134
1191
  "templateResolver.errors.document.disallowedLinkHref":
@@ -1163,6 +1220,9 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1163
1220
  "This link is invalid or has expired. Please use the unsubscribe link in a more recent email.",
1164
1221
  "templateResolver.errors.systemOnlyTemplate":
1165
1222
  "Only the platform maintains this template; it cannot be overridden per tenant.",
1223
+ "templateResolver.errors.templateNotTenantEditable": "Only the platform may edit this template.",
1224
+ "templateResolver.overview.lockedOverride":
1225
+ "Own version stored but not delivered: the template is not unlocked for tenants.",
1166
1226
  "templateResolver.errors.template.targetExists":
1167
1227
  "A template for locale “{detail}” already exists; overwrite it explicitly to replace it.",
1168
1228
  "templateResolver.warnings.resourceNotUploaded": "Image not uploaded: {detail}",
@@ -1460,6 +1520,11 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1460
1520
  "documentDesigner.screen.layoutEditor.description": "Edit the mail layout or the PDF letterhead.",
1461
1521
  "documentDesigner.search": "Search templates",
1462
1522
  "documentDesigner.action.edit": "Edit",
1523
+ "documentDesigner.status.lockedOverride": "Not delivered",
1524
+ "documentDesigner.action.resetLockedOverride": "Remove own version",
1525
+ "documentDesigner.action.resetLockedOverride.confirm":
1526
+ "The stored own version of one language (German first) is archived and the platform version stays in use. If the template has more languages, repeat this for each one.",
1527
+ "documentDesigner.action.resetLockedOverride.confirmLabel": "Remove",
1463
1528
  "documentDesigner.col.template": "Template",
1464
1529
  "documentDesigner.col.kind": "Kind",
1465
1530
  "documentDesigner.col.origin": "Origin",
@@ -1487,7 +1552,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1487
1552
  "documentDesigner.status.draftVersion": "Draft v{version}",
1488
1553
  "documentDesigner.usedBy.allMails": "all mails",
1489
1554
  "documentDesigner.usedBy.allPdfs": "all PDFs",
1490
- "documentDesigner.usedBy.templates": "{count} templates",
1555
+ "documentDesigner.usedBy.templates.one": "1 template",
1556
+ "documentDesigner.usedBy.templates.other": "{count} templates",
1491
1557
  "documentDesigner.usedBy.title": "Used by",
1492
1558
  "documentDesigner.usedBy.none": "No template uses this layout yet.",
1493
1559
  "documentDesigner.overriddenBy.tenants": "{active} tenants",
@@ -1551,9 +1617,13 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1551
1617
  "documentDesigner.editor.origin.none": "There is no layout yet.",
1552
1618
  "documentDesigner.editor.origin.system":
1553
1619
  "You are looking at the system layout. Saving creates a customisation for your tenant.",
1554
- "documentDesigner.editor.origin.tenant.mails":
1620
+ "documentDesigner.editor.origin.tenant.mails.one":
1621
+ "Overrides system layout v{version}. Applies to 1 mail template of this tenant.",
1622
+ "documentDesigner.editor.origin.tenant.mails.other":
1555
1623
  "Overrides system layout v{version}. Applies to {count} mail templates of this tenant.",
1556
- "documentDesigner.editor.origin.tenant.pdfs":
1624
+ "documentDesigner.editor.origin.tenant.pdfs.one":
1625
+ "Overrides system letterhead v{version}. Applies to 1 PDF template of this tenant.",
1626
+ "documentDesigner.editor.origin.tenant.pdfs.other":
1557
1627
  "Overrides system letterhead v{version}. Applies to {count} PDF templates of this tenant.",
1558
1628
  "documentDesigner.editor.origin.platformPlain": "System layout v{version}",
1559
1629
  "documentDesigner.editor.origin.platformCount":
@@ -1577,9 +1647,13 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1577
1647
  "The content of every mail template is inserted here. Subject and preview text come from the template.",
1578
1648
  "documentDesigner.editor.slot.pdf": "The content of every PDF template is inserted here.",
1579
1649
  "documentDesigner.editor.footer.checking": "Checking the layout …",
1580
- "documentDesigner.editor.footer.okMail":
1650
+ "documentDesigner.editor.footer.okMail.one":
1651
+ "Content placeholder present. After publishing, the change applies to 1 template.",
1652
+ "documentDesigner.editor.footer.okMail.other":
1581
1653
  "Content placeholder present. After publishing, the change applies to {count} templates.",
1582
- "documentDesigner.editor.footer.okPdf":
1654
+ "documentDesigner.editor.footer.okPdf.one":
1655
+ "Content placeholder present. After publishing, the change applies to 1 template.",
1656
+ "documentDesigner.editor.footer.okPdf.other":
1583
1657
  "Content placeholder present. After publishing, the change applies to {count} templates.",
1584
1658
  "documentDesigner.editor.discard": "Discard changes",
1585
1659
  "documentDesigner.editor.save": "Save",
@@ -1636,6 +1710,12 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1636
1710
  "documentDesigner.mail.resource.title": "Resources",
1637
1711
  "documentDesigner.mail.resource.upload": "+ Upload",
1638
1712
  "documentDesigner.mail.resource.saveFirst": "Save first, then upload.",
1713
+ "documentDesigner.mail.resource.noFilesFeature":
1714
+ "Uploads need the files feature, which this app has not mounted.",
1715
+ "documentDesigner.mail.testMail.unavailable.noChannel":
1716
+ "Test mails need the email channel, which this app has not mounted.",
1717
+ "documentDesigner.mail.testMail.unavailable.noAddress":
1718
+ "No email address is stored for you, so no test mail can be sent.",
1639
1719
  "documentDesigner.mail.resource.inline": "Inline",
1640
1720
  "documentDesigner.mail.resource.attachment": "Attachment",
1641
1721
  "documentDesigner.mail.resource.fromPdf": 'Attachment · from "{title}"',
@@ -1679,7 +1759,7 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1679
1759
  'Transactional mails need no unsubscribe link. With "Marketing" the layout must provide one.',
1680
1760
  "documentDesigner.mail.chrome.title": "Header and footer",
1681
1761
  "documentDesigner.mail.chrome.headerChip": "Label in the header",
1682
- "documentDesigner.mail.chrome.headerChipPlaceholder": "e.g. New incident",
1762
+ "documentDesigner.mail.chrome.headerChipPlaceholder": "e.g. Reminder",
1683
1763
  "documentDesigner.mail.chrome.tone": "Tone",
1684
1764
  "documentDesigner.mail.chrome.toneAccent": "Accent colour (default)",
1685
1765
  "documentDesigner.mail.chrome.toneInfo": "Info (blue grey)",
@@ -1747,7 +1827,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1747
1827
  "documentDesigner.mail.preview.samplesHint":
1748
1828
  "Money and dates are formatted by the tenant settings.",
1749
1829
  "documentDesigner.mail.preview.missingInContent": "missing in content",
1750
- "documentDesigner.mail.preview.entries": "{count} entries",
1830
+ "documentDesigner.mail.preview.entries.one": "1 entry",
1831
+ "documentDesigner.mail.preview.entries.other": "{count} entries",
1751
1832
  "documentDesigner.mail.preview.checks": "Checks",
1752
1833
  "documentDesigner.mail.preview.checksHint": "What the server found while rendering this mail.",
1753
1834
  "documentDesigner.mail.testMail.title": "Test mail",
@@ -1764,13 +1845,14 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1764
1845
  "documentDesigner.mail.testMail.rateLimited": "Too many test mails, please try again later.",
1765
1846
  "screen:mail-foundation-tenant.title": "Email sending",
1766
1847
  "mail-foundation.settings": "Email sending",
1767
- "mail-foundation.provider": "Own mail server",
1848
+ "mail-foundation.provider": "Send via",
1768
1849
  "mail-foundation.provider.description":
1769
- "Without one, the platform sends the mails. Reset the choice to go back to that.",
1850
+ "Choose who sends your emails. The platform default needs no settings of your own.",
1851
+ "mail-foundation.provider.platformDefault": "Platform sending (default)",
1770
1852
  "mail-transport-inmemory.settings": "Test inbox (in memory)",
1771
- "mail-transport-smtp.settings": "SMTP server",
1772
- "screen:mail-foundation-tenant-selection.title": "Provider",
1773
- "config:entity:__config-edit__:field:provider:option:smtp": "SMTP server",
1853
+ "mail-transport-smtp.settings": "Own SMTP server",
1854
+ "config:entity:__config-edit__:field:provider:option:": "Platform sending (default)",
1855
+ "config:entity:__config-edit__:field:provider:option:smtp": "Own SMTP server",
1774
1856
  "mail-transport-smtp.settings.secrets": "SMTP sign-in",
1775
1857
  "mail-transport-smtp.settings.description":
1776
1858
  "The connection details come from your mail provider, for example Brevo, Postmark, Amazon SES or your own server.",
package/src/changes.json CHANGED
@@ -1,4 +1,16 @@
1
1
  [
2
+ {
3
+ "version": "0.379.0",
4
+ "type": "improvement",
5
+ "title": "Translations for the default-filter empty state",
6
+ "detail": "kumiko.list.empty.defaultFiltered and kumiko.list.empty.showAll are translated in de, es, fr and it."
7
+ },
8
+ {
9
+ "version": "0.379.0",
10
+ "type": "improvement",
11
+ "title": "One English reference catalog for all locale packages",
12
+ "detail": "The completeness checks of es, fr and it run in the use-all-bundled i18n parity test against the single English catalog in locale-de; the harvest script writes only that file. New keys errors.validation.invalid_format.{email,url,date,datetime,uuid} in all locales."
13
+ },
2
14
  {
3
15
  "version": "0.371.0",
4
16
  "type": "improvement",
package/src/formal.ts CHANGED
@@ -9,6 +9,8 @@ export const localeDeFormalOverrides: Readonly<Record<string, string>> = {
9
9
  "documentDesigner.editor.origin.system":
10
10
  "Sie sehen das System-Layout. Speichern legt eine Anpassung für Ihren Mandanten an.",
11
11
  "documentDesigner.editor.diff.identical": "Ihr Layout entspricht dem System-Layout.",
12
+ "documentDesigner.mail.testMail.unavailable.noAddress":
13
+ "Für Sie ist keine E-Mail-Adresse hinterlegt, daher kann keine Test-Mail gesendet werden.",
12
14
  "documentDesigner.editor.reset.description":
13
15
  "Ihr eigenes Layout wird entfernt, danach gilt wieder das System-Layout.",
14
16
  "documentDesigner.editor.dirtySwitch.description":
@@ -237,7 +239,7 @@ export const localeDeFormalOverrides: Readonly<Record<string, string>> = {
237
239
  "auth.mfa.setup.intro":
238
240
  "Scannen Sie den QR-Code mit einer Authenticator-App wie Google Authenticator oder 1Password.",
239
241
  "mail-foundation.provider.description":
240
- "Ohne eigenen Server verschickt die Plattform die Mails. Setzen Sie die Auswahl zurück, um dorthin zurückzukehren.",
242
+ "Legen Sie fest, über wen Ihre E-Mails verschickt werden. Der Plattform-Versand braucht keine eigenen Einstellungen.",
241
243
  "mail-transport-smtp.settings.description":
242
244
  "Die Zugangsdaten bekommen Sie von Ihrem Mail-Anbieter, zum Beispiel Brevo, Postmark, Amazon SES oder Ihrem eigenen Server.",
243
245
  "mail-transport-smtp.port.description":
package/src/strings.ts CHANGED
@@ -46,15 +46,20 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
46
46
  "audit.log.col.actor": "Akteur",
47
47
  "audit.log.col.aggregateId": "Aggregat-ID",
48
48
  "audit.log.col.aggregateType": "Aggregattyp",
49
+ "audit.log.col.tenant": "Mandant",
49
50
  "audit.log.col.type": "Ereignis",
50
51
  "audit.log.col.when": "Zeit",
51
52
  "audit.log.detail.field.id": "Ereignis-ID",
52
53
  "audit.log.detail.metadata": "Metadaten",
53
54
  "audit.log.detail.payload": "Ereignis-Payload",
55
+ "audit.log.description": "Alle Ereignisse dieses Mandanten. Eine Zeile öffnet die Details.",
56
+ "audit.log.allTenants.description":
57
+ "Alle Ereignisse aller Mandanten. Eine Zeile öffnet die Details.",
54
58
  "audit.log.detail.subtitle":
55
- "Schreibgeschützte Detailansicht eines Ereignisses mit Akteur, Zeitstempel, Aggregat sowie rohem Event-Payload und Metadaten; erreichbar über eine Zeile im Ereignisprotokoll.",
59
+ "Ein einzelnes Ereignis mit Akteur, Zeitpunkt und gespeicherten Daten.",
56
60
  "audit.log.details": "Details",
57
61
  "audit:nav.auditLog": "Ereignisprotokoll",
62
+ "audit:nav.auditLogAllTenants": "Ereignisprotokoll (alle Mandanten)",
58
63
  "auth-mfa:entity:__action-form__:field:code": "Code aus der Authenticator-App",
59
64
  "auth.errors.accountLocked": "Konto vorübergehend gesperrt.",
60
65
  "auth.errors.accountLockedRetry": "Konto gesperrt. Neuer Versuch in {minutes} Minuten.",
@@ -460,6 +465,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
460
465
  "config.settings.extensionSelectorHint":
461
466
  "Wähle einen Anbieter. Seine Einstellungen erscheinen darunter und werden mit ihm gespeichert.",
462
467
  "config.settings.provider": "Anbieter",
468
+ "config.settings.provider.platformDefault": "Plattform (Standard)",
463
469
  "config.settings.system": "Plattform",
464
470
  "config.settings.tenant": "Mandant",
465
471
  "config.settings.title": "Einstellungen",
@@ -530,10 +536,18 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
530
536
  "errors.unconfigured": "Diese Funktion ist noch nicht konfiguriert.",
531
537
  "errors.uniqueViolation": "Dieser Eintrag existiert bereits.",
532
538
  "errors.unprocessable": "Die Anfrage konnte nicht verarbeitet werden.",
539
+ "errors.file.violatesBindTarget": "Diese Datei erfüllt die Vorgaben des Zielfelds nicht.",
533
540
  "errors.validation.custom": "Ungültiger Wert.",
534
541
  "errors.validation.failed": "Validierung fehlgeschlagen.",
535
542
  "errors.validation.invalid_element": "Ungültiger Eintrag.",
536
543
  "errors.validation.invalid_format": "Ungültiges Format.",
544
+ "errors.validation.invalid_format.email": "Ungültige E-Mail-Adresse, z. B. name@beispiel.de.",
545
+ "errors.validation.invalid_format.url": "Ungültige Web-Adresse, z. B. https://beispiel.de.",
546
+ "errors.validation.invalid_format.date": "Ungültiges Datum, z. B. 20.10.2026.",
547
+ "errors.validation.invalid_format.datetime":
548
+ "Ungültiges Datum mit Uhrzeit, z. B. 20.10.2026 14:30.",
549
+ "errors.validation.invalid_format.uuid":
550
+ "Ungültige ID, z. B. 123e4567-e89b-12d3-a456-426614174000.",
537
551
  "errors.validation.invalid_key": "Ungültiger Schlüssel.",
538
552
  "errors.validation.invalid_option": "Ungültige Auswahl.",
539
553
  "errors.validation.invalid_type": "Ungültiger Wert.",
@@ -544,9 +558,14 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
544
558
  "errors.validation.too_big": "Zu groß oder zu lang. Maximal erlaubt: {maximum}.",
545
559
  "kumiko.boolean.no": "Nein",
546
560
  "kumiko.boolean.yes": "Ja",
561
+ "kumiko.field.file-list.download": "Herunterladen",
562
+ "kumiko.field.file-list.hidePreview": "Vorschau ausblenden",
563
+ "kumiko.field.file-list.preview": "Vorschau",
547
564
  "kumiko.validation.number.min": "Muss mindestens {minimum} sein.",
548
565
  "kumiko.validation.number.max": "Darf höchstens {maximum} sein.",
549
566
  "errors.validation.too_small": "Zu klein oder zu kurz. Mindestens erforderlich: {minimum}.",
567
+ "errors.validation.list_min_rows.one": "Mindestens 1 Zeile erforderlich.",
568
+ "errors.validation.list_min_rows.other": "Mindestens {minimum} Zeilen erforderlich.",
550
569
  "errors.validation.unexpected_field": "Unbekanntes Feld.",
551
570
  "errors.validation.unrecognized_keys": "Unbekannte Felder.",
552
571
  "errors.versionConflict":
@@ -744,18 +763,24 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
744
763
  "kumiko.field.embedded-list.empty-cta": "Erste Zeile hinzufügen",
745
764
  "kumiko.field.embedded-list.move-down": "Nach unten verschieben",
746
765
  "kumiko.field.embedded-list.move-up": "Nach oben verschieben",
747
- "kumiko.field.embedded-list.paste-cells-unmatched":
766
+ "kumiko.field.embedded-list.paste-cells-unmatched.one":
767
+ "1 Zelle ohne passende Option wurde nicht geändert.",
768
+ "kumiko.field.embedded-list.paste-cells-unmatched.other":
748
769
  "{count} Zellen ohne passende Option wurden nicht geändert.",
749
- "kumiko.field.embedded-list.paste-rows-truncated":
770
+ "kumiko.field.embedded-list.paste-rows-truncated.one":
771
+ "1 eingefügte Zeile wurde verworfen, weil die maximale Zeilenzahl erreicht ist.",
772
+ "kumiko.field.embedded-list.paste-rows-truncated.other":
750
773
  "{count} eingefügte Zeilen wurden verworfen, weil die maximale Zeilenzahl erreicht ist.",
751
774
  "kumiko.field.embedded-list.remove-row": "Zeile entfernen",
752
775
  "kumiko.field.file-list.add": "Datei hinzufügen",
753
776
  "kumiko.field.file-list.empty": "Noch keine Dateien.",
777
+ "kumiko.field.dropzone.limit-count": "bis zu {count} Dateien",
778
+ "kumiko.field.dropzone.limit-size": "bis zu {size} pro Datei",
779
+ "kumiko.field.dropzone.title": "Dateien hierher ziehen oder klicken zum Auswählen",
754
780
  "kumiko.field.file-list.move-down": "Datei nach unten verschieben",
755
781
  "kumiko.field.file-list.move-up": "Datei nach oben verschieben",
756
782
  "kumiko.field.file-upload.attached": "Datei angehängt",
757
783
  "kumiko.field.file-upload.change": "Ändern",
758
- "kumiko.field.file-upload.failed": "Upload fehlgeschlagen",
759
784
  "kumiko.field.file-upload.remove": "Entfernen",
760
785
  "kumiko.field.file-upload.upload": "Hochladen",
761
786
  "kumiko.field.fillAction.failed": "Vorschlag konnte nicht geladen werden.",
@@ -805,6 +830,9 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
805
830
  "kumiko.list.count.one": "1 Eintrag",
806
831
  "kumiko.list.count.other": "{count} Einträge",
807
832
  "kumiko.list.empty.filtered": "Keine Einträge passen zur Suche oder zu den Filtern.",
833
+ "kumiko.list.empty.defaultFiltered":
834
+ "Keine Einträge im Standardfilter. Mit „Alle anzeigen“ erscheinen auch Einträge außerhalb davon.",
835
+ "kumiko.list.empty.showAll": "Alle anzeigen",
808
836
  "kumiko.list.empty.hint": "Lege den ersten an, um loszulegen.",
809
837
  "kumiko.list.empty.title": "Noch keine Einträge.",
810
838
  "kumiko.list.end-of-list": "— Ende der Liste —",
@@ -844,6 +872,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
844
872
  "kumiko.planCard.priceUnavailable": "Preis nicht verfügbar",
845
873
  "kumiko.reference.system-tenant": "System",
846
874
  "kumiko.reference.system-user": "System",
875
+ "kumiko.reference.unknown-user": "Unbekannt",
847
876
  "kumiko.rowAction.failed": "Aktion fehlgeschlagen",
848
877
  "kumiko.clientAction.success": "Erledigt.",
849
878
  "kumiko.clientAction.unregistered": "Diese Aktion ist in dieser App nicht verfügbar.",
@@ -873,10 +902,17 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
873
902
  "kumiko.widget.floatingPanel.resizeRight": "Panel am rechten Rand skalieren",
874
903
  "kumiko.widget.floatingPanel.resizeTop": "Panel am oberen Rand skalieren",
875
904
  "kumiko.widget.loading": "Lade…",
905
+ "kumiko.widget.pdf-preview.loading": "PDF wird geladen…",
906
+ "kumiko.widget.pdf-preview.pageOf": "Seite {page} von {pages}",
907
+ "kumiko.widget.pdf-preview.renderFailed": "Das PDF konnte nicht angezeigt werden.",
876
908
  "kumiko.widget.step-bar.done": "Erledigt",
877
909
  "kumiko.widget.upload.done": "Hochgeladen",
878
910
  "kumiko.widget.upload.error": "Fehlgeschlagen",
879
911
  "kumiko.widget.upload.rejected-type": "Dateityp nicht erlaubt",
912
+ "kumiko.widget.upload.invalid-type": "Dateityp oder Inhalt nicht erlaubt",
913
+ "kumiko.widget.upload.max-count": "Höchstens {count} Dateien",
914
+ "kumiko.widget.upload.remove": "Datei entfernen",
915
+ "kumiko.widget.upload.too-large": "Datei ist zu groß",
880
916
  "kumiko.widget.upload.uploading": "Wird hochgeladen…",
881
917
  "kumiko.wizard.next-with-title": "Weiter: {title}",
882
918
  "kumiko.wizard.save-and-close": "Speichern und schließen",
@@ -1002,6 +1038,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1002
1038
  "secrets.errors.invalidValue": "Dieser Wert ist für dieses Geheimnis nicht gültig.",
1003
1039
  "screen:api-token-create.title": "Neuen Token erstellen",
1004
1040
  "screen:api-tokens.title": "API-Tokens",
1041
+ "screen:audit-log-all-tenants-detail.title": "Ereignis",
1042
+ "screen:audit-log-all-tenants.title": "Ereignisprotokoll (alle Mandanten)",
1005
1043
  "screen:audit-log-detail.title": "Ereignis",
1006
1044
  "screen:audit-log.title": "Ereignisprotokoll",
1007
1045
  "screen:auth-mfa-disable.title": "Zwei-Faktor-Authentifizierung deaktivieren",
@@ -1085,7 +1123,9 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1085
1123
  "tags.manage.cancel": "Abbrechen",
1086
1124
  "tags.manage.create": "Tag anlegen",
1087
1125
  "tags.manage.delete": "Löschen",
1088
- "tags.manage.deleteConfirmDesc":
1126
+ "tags.manage.deleteConfirmDesc.one":
1127
+ "Entfernt ihn von 1 Objekt. Das lässt sich nicht rückgängig machen.",
1128
+ "tags.manage.deleteConfirmDesc.other":
1089
1129
  "Entfernt ihn von {count} Objekten. Das lässt sich nicht rückgängig machen.",
1090
1130
  "tags.manage.deleteConfirmTitle": "Tag „{name}“ löschen?",
1091
1131
  "tags.manage.edit": "Bearbeiten",
@@ -1107,6 +1147,24 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1107
1147
  "tags:entity:tag:field:color": "Farbe",
1108
1148
  "tags:entity:tag:field:name": "Name",
1109
1149
  "tags:entity:tag:field:scope": "Geltungsbereich",
1150
+ "template-resolver:write:upsert-system:title": "Systemvorlage speichern",
1151
+ "template-resolver:write:upsert-tenant:title": "Vorlage speichern",
1152
+ "template-resolver:write:publish:title": "Vorlage veröffentlichen",
1153
+ "template-resolver:write:archive:title": "Vorlage archivieren",
1154
+ "template-resolver:write:publish-system:title": "Systemvorlage veröffentlichen",
1155
+ "template-resolver:write:archive-system:title": "Systemvorlage archivieren",
1156
+ "template-resolver:write:discard-draft:title": "Entwurf verwerfen",
1157
+ "template-resolver:write:discard-draft-system:title": "Entwurf der Systemvorlage verwerfen",
1158
+ "template-resolver:write:reset-to-system:title": "Auf Systemvorlage zurücksetzen",
1159
+ "template-resolver:write:set:title": "Text speichern",
1160
+ "template-resolver:write:import-bundle:title": "Vorlage importieren",
1161
+ "template-resolver:write:import-bundle-system:title": "Systemvorlage importieren",
1162
+ "template-resolver:write:copy-locale:title": "Vorlage in andere Sprache kopieren",
1163
+ "template-resolver:write:resource-upload:title": "Bild oder Anhang hochladen",
1164
+ "template-resolver:write:resource-remove:title": "Bild oder Anhang entfernen",
1165
+ "template-resolver:write:resource-link-pdf:title": "PDF-Vorlage anhängen",
1166
+ "template-resolver:write:send-test:title": "Test-Mail senden",
1167
+ "template-resolver:write:patch-draft:title": "Vorlagenentwurf bearbeiten",
1110
1168
  "template-resolver.documentEditor.button": "Button",
1111
1169
  "template-resolver.documentEditor.buttonDefaultText": "Bestätigen",
1112
1170
  "template-resolver.documentEditor.buttonTarget": "Ziel",
@@ -1142,6 +1200,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1142
1200
  "template-resolver.documentEditor.removeLink": "Link entfernen",
1143
1201
  "template-resolver.documentEditor.repeat": "Wiederholung",
1144
1202
  "template-resolver.documentEditor.repeatList": "Liste für die Wiederholung",
1203
+ "template-resolver.documentEditor.images": "Fotos",
1204
+ "template-resolver.documentEditor.imagesVariable": "Fotos aus",
1145
1205
  "template-resolver.documentEditor.steps": "Stufen",
1146
1206
  "template-resolver.documentEditor.stepsVariable": "Aktuelle Stufe aus",
1147
1207
  "template-resolver.documentEditor.stepsList": "Stufen, durch Komma getrennt (Wert=Beschriftung)",
@@ -1163,6 +1223,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1163
1223
  "template-resolver.editor.saved": "Gespeichert.",
1164
1224
  "template-resolver.editor.saving": "Speichern…",
1165
1225
  "template-resolver.editor.titleLabel": "Titel",
1226
+ "templateResolver.errors.document.imagesBlockPdfOnly":
1227
+ "Fotoblöcke sind nur in PDF-Dokumenten erlaubt.",
1166
1228
  "templateResolver.errors.document.buttonHrefNotPlaceholder":
1167
1229
  "Das Ziel der Schaltfläche „{detail}“ muss ein Platzhalter sein.",
1168
1230
  "templateResolver.errors.document.disallowedLinkHref":
@@ -1198,6 +1260,10 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1198
1260
  "Dieser Link ist ungültig oder abgelaufen. Bitte den Abmeldelink aus einer neueren E-Mail verwenden.",
1199
1261
  "templateResolver.errors.systemOnlyTemplate":
1200
1262
  "Diese Vorlage pflegt nur die Plattform; sie lässt sich nicht pro Mandant überschreiben.",
1263
+ "templateResolver.errors.templateNotTenantEditable":
1264
+ "Diese Vorlage darf nur die Plattform bearbeiten.",
1265
+ "templateResolver.overview.lockedOverride":
1266
+ "Eigene Fassung gespeichert, wird nicht ausgeliefert: Die Vorlage ist für Mandanten nicht freigeschaltet.",
1201
1267
  "templateResolver.errors.template.targetExists":
1202
1268
  "Für die Sprache „{detail}“ gibt es schon eine Vorlage; überschreibe sie ausdrücklich, um sie zu ersetzen.",
1203
1269
  "templateResolver.warnings.resourceNotUploaded": "Bild nicht hochgeladen: {detail}",
@@ -1501,6 +1567,11 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1501
1567
  "documentDesigner.screen.layoutEditor.description": "Mail-Layout oder Briefpapier bearbeiten.",
1502
1568
  "documentDesigner.search": "Vorlagen suchen",
1503
1569
  "documentDesigner.action.edit": "Bearbeiten",
1570
+ "documentDesigner.status.lockedOverride": "Nicht ausgeliefert",
1571
+ "documentDesigner.action.resetLockedOverride": "Eigene Fassung entfernen",
1572
+ "documentDesigner.action.resetLockedOverride.confirm":
1573
+ "Die gespeicherte eigene Fassung einer Sprache (zuerst Deutsch) wird archiviert, die Plattform-Fassung bleibt im Einsatz. Hat die Vorlage mehr Sprachen, gilt das je Sprache und ist für jede zu wiederholen.",
1574
+ "documentDesigner.action.resetLockedOverride.confirmLabel": "Entfernen",
1504
1575
  "documentDesigner.col.template": "Vorlage",
1505
1576
  "documentDesigner.col.kind": "Art",
1506
1577
  "documentDesigner.col.origin": "Herkunft",
@@ -1528,7 +1599,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1528
1599
  "documentDesigner.status.draftVersion": "Entwurf v{version}",
1529
1600
  "documentDesigner.usedBy.allMails": "alle Mails",
1530
1601
  "documentDesigner.usedBy.allPdfs": "alle PDFs",
1531
- "documentDesigner.usedBy.templates": "{count} Vorlagen",
1602
+ "documentDesigner.usedBy.templates.one": "1 Vorlage",
1603
+ "documentDesigner.usedBy.templates.other": "{count} Vorlagen",
1532
1604
  "documentDesigner.usedBy.title": "Wird verwendet von",
1533
1605
  "documentDesigner.usedBy.none": "Noch keine Vorlage nutzt dieses Layout.",
1534
1606
  "documentDesigner.overriddenBy.tenants": "{active} Mandanten",
@@ -1593,9 +1665,13 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1593
1665
  "documentDesigner.editor.origin.none": "Es gibt noch kein Layout.",
1594
1666
  "documentDesigner.editor.origin.system":
1595
1667
  "Du siehst das System-Layout. Speichern legt eine Anpassung für deinen Mandanten an.",
1596
- "documentDesigner.editor.origin.tenant.mails":
1668
+ "documentDesigner.editor.origin.tenant.mails.one":
1669
+ "Überschreibt das System-Layout v{version}. Gilt für 1 Mail-Vorlage dieses Mandanten.",
1670
+ "documentDesigner.editor.origin.tenant.mails.other":
1597
1671
  "Überschreibt das System-Layout v{version}. Gilt für {count} Mail-Vorlagen dieses Mandanten.",
1598
- "documentDesigner.editor.origin.tenant.pdfs":
1672
+ "documentDesigner.editor.origin.tenant.pdfs.one":
1673
+ "Überschreibt das System-Briefpapier v{version}. Gilt für 1 PDF-Vorlage dieses Mandanten.",
1674
+ "documentDesigner.editor.origin.tenant.pdfs.other":
1599
1675
  "Überschreibt das System-Briefpapier v{version}. Gilt für {count} PDF-Vorlagen dieses Mandanten.",
1600
1676
  "documentDesigner.editor.origin.platformPlain": "System-Layout v{version}",
1601
1677
  "documentDesigner.editor.origin.platformCount":
@@ -1619,9 +1695,13 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1619
1695
  "Hier wird der Inhalt jeder Mail-Vorlage eingesetzt. Betreff und Vorschautext kommen aus der Vorlage.",
1620
1696
  "documentDesigner.editor.slot.pdf": "Hier wird der Inhalt jeder PDF-Vorlage eingesetzt.",
1621
1697
  "documentDesigner.editor.footer.checking": "Layout wird geprüft …",
1622
- "documentDesigner.editor.footer.okMail":
1698
+ "documentDesigner.editor.footer.okMail.one":
1699
+ "Inhalts-Platzhalter vorhanden. Änderung wirkt nach Veröffentlichen auf 1 Vorlage.",
1700
+ "documentDesigner.editor.footer.okMail.other":
1623
1701
  "Inhalts-Platzhalter vorhanden. Änderung wirkt nach Veröffentlichen auf {count} Vorlagen.",
1624
- "documentDesigner.editor.footer.okPdf":
1702
+ "documentDesigner.editor.footer.okPdf.one":
1703
+ "Inhalts-Platzhalter vorhanden. Änderung wirkt nach Veröffentlichen auf 1 Vorlage.",
1704
+ "documentDesigner.editor.footer.okPdf.other":
1625
1705
  "Inhalts-Platzhalter vorhanden. Änderung wirkt nach Veröffentlichen auf {count} Vorlagen.",
1626
1706
  "documentDesigner.editor.discard": "Änderungen verwerfen",
1627
1707
  "documentDesigner.editor.save": "Speichern",
@@ -1678,6 +1758,12 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1678
1758
  "documentDesigner.mail.resource.title": "Ressourcen",
1679
1759
  "documentDesigner.mail.resource.upload": "+ Hochladen",
1680
1760
  "documentDesigner.mail.resource.saveFirst": "Erst speichern, dann hochladen.",
1761
+ "documentDesigner.mail.resource.noFilesFeature":
1762
+ "Uploads brauchen das Files-Feature, das diese App nicht eingebunden hat.",
1763
+ "documentDesigner.mail.testMail.unavailable.noChannel":
1764
+ "Test-Mails brauchen den E-Mail-Kanal, den diese App nicht eingebunden hat.",
1765
+ "documentDesigner.mail.testMail.unavailable.noAddress":
1766
+ "Für dich ist keine E-Mail-Adresse hinterlegt, daher kann keine Test-Mail gesendet werden.",
1681
1767
  "documentDesigner.mail.resource.inline": "Inline",
1682
1768
  "documentDesigner.mail.resource.attachment": "Anhang",
1683
1769
  "documentDesigner.mail.resource.fromPdf": "Anhang · aus „{title}“",
@@ -1722,7 +1808,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1722
1808
  "Transaktionale Mails brauchen keinen Abmeldelink. Bei „Marketing“ muss das Layout den Abmeldelink liefern.",
1723
1809
  "documentDesigner.mail.chrome.title": "Kopf und Fuß",
1724
1810
  "documentDesigner.mail.chrome.headerChip": "Kennzeichen im Kopf",
1725
- "documentDesigner.mail.chrome.headerChipPlaceholder": "z. B. Neuer Incident",
1811
+ "documentDesigner.mail.chrome.headerChipPlaceholder": "z. B. Erinnerung",
1726
1812
  "documentDesigner.mail.chrome.tone": "Farbton",
1727
1813
  "documentDesigner.mail.chrome.toneAccent": "Akzentfarbe (Standard)",
1728
1814
  "documentDesigner.mail.chrome.toneInfo": "Info (blaugrau)",
@@ -1791,7 +1877,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1791
1877
  "documentDesigner.mail.preview.samplesHint":
1792
1878
  "Geld und Datum werden nach den Mandanten-Einstellungen formatiert.",
1793
1879
  "documentDesigner.mail.preview.missingInContent": "fehlt im Inhalt",
1794
- "documentDesigner.mail.preview.entries": "{count} Einträge",
1880
+ "documentDesigner.mail.preview.entries.one": "1 Eintrag",
1881
+ "documentDesigner.mail.preview.entries.other": "{count} Einträge",
1795
1882
  "documentDesigner.mail.preview.checks": "Prüfung",
1796
1883
  "documentDesigner.mail.preview.checksHint":
1797
1884
  "Das hat der Server beim Rendern dieser Mail gefunden.",
@@ -1810,13 +1897,14 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1810
1897
  "Zu viele Test-Mails, bitte später erneut versuchen.",
1811
1898
  "screen:mail-foundation-tenant.title": "E-Mail-Versand",
1812
1899
  "mail-foundation.settings": "E-Mail-Versand",
1813
- "mail-foundation.provider": "Eigener Mailserver",
1900
+ "mail-foundation.provider": "Versand über",
1814
1901
  "mail-foundation.provider.description":
1815
- "Ohne eigenen Server verschickt die Plattform die Mails. Setz die Auswahl zurück, um dorthin zurückzukehren.",
1902
+ "Lege fest, über wen deine E-Mails verschickt werden. Der Plattform-Versand braucht keine eigenen Einstellungen.",
1903
+ "mail-foundation.provider.platformDefault": "Plattform-Versand (Standard)",
1816
1904
  "mail-transport-inmemory.settings": "Test-Postfach (im Speicher)",
1817
- "mail-transport-smtp.settings": "SMTP-Server",
1818
- "screen:mail-foundation-tenant-selection.title": "Anbieter",
1819
- "config:entity:__config-edit__:field:provider:option:smtp": "SMTP-Server",
1905
+ "mail-transport-smtp.settings": "Eigener SMTP-Server",
1906
+ "config:entity:__config-edit__:field:provider:option:": "Plattform-Versand (Standard)",
1907
+ "config:entity:__config-edit__:field:provider:option:smtp": "Eigener SMTP-Server",
1820
1908
  "mail-transport-smtp.settings.secrets": "SMTP-Anmeldung",
1821
1909
  "mail-transport-smtp.settings.description":
1822
1910
  "Die Zugangsdaten bekommst du von deinem Mail-Anbieter, zum Beispiel Brevo, Postmark, Amazon SES oder deinem eigenen Server.",