@cosmicdrift/kumiko-locale-de 0.413.0 → 0.414.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.413.0",
3
+ "version": "0.414.0",
4
4
  "description": "German UI and mail copy for Kumiko framework screens. Opt in by mounting localeDe() + localeDeClient().",
5
5
  "license": "MIT",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -28,7 +28,7 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@cosmicdrift/kumiko-framework": "0.413.0"
31
+ "@cosmicdrift/kumiko-framework": "0.414.0"
32
32
  },
33
33
  "publishConfig": {
34
34
  "registry": "https://registry.npmjs.org",
@@ -346,6 +346,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
346
346
  "This tenant has no active subscription to switch.",
347
347
  "billing-foundation.errors.planSwitchNotSupported":
348
348
  "This provider does not support switching plans.",
349
+ "billing-foundation.errors.planSwitchPending":
350
+ "A plan switch is already being processed. Wait a moment for it to complete.",
349
351
  "billing-foundation.errors.planTiersShareProduct":
350
352
  "Each plan needs its own Stripe product. Contact support.",
351
353
  "billing-foundation.errors.priceUnavailable": "This plan's price is temporarily unavailable.",
@@ -426,6 +428,7 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
426
428
  "cap-overview.list.filter.tier": "Tier",
427
429
  "cap-overview.notMeasured": "Not measured yet",
428
430
  "cap-overview.notIncluded": "Not included",
431
+ "cap-overview.notIncludedButUsed": "{used} · not included",
429
432
  "cap-overview.platform.filter.tenant": "Tenant",
430
433
  "cap-overview.unlimited": "{used} · unlimited",
431
434
  "compliance-profiles:entity:__action-form__:field:profileKey": "Compliance profile",
@@ -446,6 +449,15 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
446
449
  "config.secret.channel-telegram.bot-token.hint":
447
450
  'Token from @BotFather. Used for every Telegram chat the tenant addresses via route: { telegram: "<chat id>" }.',
448
451
  "config.secret.channel-telegram.bot-token.label": "Telegram bot token",
452
+ "config.secret.channel-whatsapp.access-token.hint":
453
+ "System-user access token of the Meta app. Used to send messages and to download media.",
454
+ "config.secret.channel-whatsapp.access-token.label": "WhatsApp access token",
455
+ "config.secret.channel-whatsapp.app-secret.hint":
456
+ "App secret of the Meta app. Verifies the signature of every incoming webhook.",
457
+ "config.secret.channel-whatsapp.app-secret.label": "WhatsApp app secret",
458
+ "config.secret.channel-whatsapp.verify-token.hint":
459
+ "Any string you also enter in the Meta webhook settings; answers Meta's subscription handshake.",
460
+ "config.secret.channel-whatsapp.verify-token.label": "WhatsApp verify token",
449
461
  "config.secret.file-provider-s3.s3-secret-access-key.hint":
450
462
  "Private half of the S3 key pair. Hetzner calls it 'Secret Key', AWS calls it 'Secret Access Key'.",
451
463
  "config.secret.file-provider-s3.s3-secret-access-key.label": "S3 secret access key",
@@ -561,9 +573,20 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
561
573
  "errors.validation.too_big": "Too big or too long (maximum: {maximum}).",
562
574
  "kumiko.boolean.no": "No",
563
575
  "kumiko.boolean.yes": "Yes",
576
+ "kumiko.editor.device.desktop": "Desktop",
577
+ "kumiko.editor.device.mobile": "Mobile 375 px",
578
+ "kumiko.editor.deviceSwitch": "Preview width",
579
+ "kumiko.editor.discard": "Discard changes",
580
+ "kumiko.editor.localeSwitch": "Language",
581
+ "kumiko.editor.modeSwitch": "Mode",
582
+ "kumiko.editor.noChanges": "No unsaved changes",
583
+ "kumiko.editor.publish": "Publish",
584
+ "kumiko.editor.savedAt": "Last saved {when}",
585
+ "kumiko.editor.unsavedChanges": "Unsaved changes",
564
586
  "kumiko.field.file-list.download": "Download",
565
587
  "kumiko.field.file-list.hidePreview": "Hide preview",
566
588
  "kumiko.field.file-list.preview": "Preview",
589
+ "kumiko.field.file-list.view": "View",
567
590
  "kumiko.validation.number.min": "Must be at least {minimum}.",
568
591
  "kumiko.validation.number.max": "Must be {maximum} or less.",
569
592
  "errors.validation.too_small": "Too small or too short (minimum: {minimum}).",
@@ -735,6 +758,10 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
735
758
  "kumiko.dashboard.chart.forecast": "Forecast",
736
759
  "kumiko.dashboard.chart.markers": "Events",
737
760
  "kumiko.dashboard.filter.all": "All",
761
+ "kumiko.dashboard.list.line-more": "{count} more",
762
+ "kumiko.dashboard.list.more": "{count} more",
763
+ "kumiko.dashboard.list.open-row": "Open",
764
+ "kumiko.dashboard.list.shown-of-total": "{shown} of {total}",
738
765
  "kumiko.dashboard.panel.error.isolated": "The other panels are not affected.",
739
766
  "kumiko.dashboard.panel.error.retry": "Try again",
740
767
  "kumiko.dashboard.panel.error.title": "{label} could not be loaded",
@@ -757,7 +784,6 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
757
784
  "kumiko.dashboard.brush-end": "Window end",
758
785
  "kumiko.dashboard.brush-start": "Window start",
759
786
  "kumiko.dashboard.today": "Today",
760
- "kumiko.dashboard.updated-at": "As of {time}",
761
787
  "kumiko.dialog.cancel": "Cancel",
762
788
  "kumiko.dialog.close": "Close",
763
789
  "kumiko.list.actions": "Actions",
@@ -796,6 +822,7 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
796
822
  "kumiko.field.embedded-list.remove-row": "Remove row",
797
823
  "kumiko.field.file-list.add": "Add file",
798
824
  "kumiko.field.file-list.empty": "No files yet.",
825
+ "kumiko.field.dropzone.file-unavailable": "File no longer available",
799
826
  "kumiko.field.dropzone.limit-count": "up to {count} files",
800
827
  "kumiko.field.dropzone.limit-size": "up to {size} per file",
801
828
  "kumiko.field.dropzone.title": "Drop files here or click to choose",
@@ -855,9 +882,12 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
855
882
  "kumiko.list.empty.defaultFiltered":
856
883
  "No entries match the default filter. Show all to include entries outside it.",
857
884
  "kumiko.list.empty.showAll": "Show all",
885
+ "kumiko.list.empty.resetFilter": "Reset filter",
886
+ "kumiko.list.named-filter.all": "All",
858
887
  "kumiko.list.empty.hint": "Create the first one to get started.",
859
888
  "kumiko.list.empty.title": "No entries yet.",
860
889
  "kumiko.list.end-of-list": "— End of list —",
890
+ "kumiko.list.filter.all": "All",
861
891
  "kumiko.list.filter.reset": "Reset",
862
892
  "kumiko.list.filter.toggle": "Filters",
863
893
  "kumiko.list.no-entries": "No entries.",
@@ -886,7 +916,23 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
886
916
  "kumiko.list.bulk.result.not-started": "Not run: {count}",
887
917
  "kumiko.list.bulk.result.dismiss": "Dismiss",
888
918
  "kumiko.list.search-placeholder": "Search…",
919
+ "kumiko.list.hint.empty": "Nothing open",
920
+ "kumiko.list.hint.reason": "Why?",
921
+ "kumiko.detail.steps.title": "Next steps",
922
+ "kumiko.detail.steps.empty": "Nothing to do",
923
+ "kumiko.detail.progress.step-of": "Step {current} of {total}",
924
+ "kumiko.detail.steps.less": "Show fewer steps",
925
+ "kumiko.detail.steps.more.one": "1 more step",
926
+ "kumiko.detail.steps.more.other": "{count} more steps",
927
+ "kumiko.detail.steps.reason": "Why?",
928
+ "kumiko.detail.breadcrumb": "Path",
929
+ "kumiko.pwa.dismiss": "Not now",
930
+ "kumiko.pwa.install": "Install",
931
+ "kumiko.pwa.install-hint": "Install this app on your device to open it like any other app.",
932
+ "kumiko.pwa.install-hint-ios": "To install this app, tap Share and then “Add to Home Screen”.",
889
933
  "kumiko.list.sort.by": "Sorted by {column}",
934
+ "kumiko.list.sort.prefix": "Sorted by",
935
+ "kumiko.list.sort.summary": "Sorted by {sort} {direction} · {count} {noun}",
890
936
  "kumiko.list.sort.label": "Sort",
891
937
  "kumiko.list.sort.unsorted": "Unsorted",
892
938
  "kumiko.list.reset-all": "Reset",
@@ -900,6 +946,7 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
900
946
  "kumiko.list.view.density": "Density",
901
947
  "kumiko.list.view.density.comfortable": "Comfortable",
902
948
  "kumiko.list.view.density.compact": "Compact",
949
+ "kumiko.list.view.density.relaxed": "Relaxed",
903
950
  "kumiko.list.view.reset": "Reset view",
904
951
  "kumiko.list.group.by": "Group by",
905
952
  "kumiko.list.group.none": "None",
@@ -941,8 +988,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
941
988
  "kumiko.notifications.loadMore": "Load more",
942
989
  "kumiko.notifications.unread": "Unread",
943
990
  "kumiko.notifications.loadFailed": "Notifications could not be loaded.",
991
+ "kumiko.pager.goToPage": "Page {page}",
944
992
  "kumiko.pager.nextPage": "Next page",
945
- "kumiko.pager.pageOf": "Page {page} of {pages}",
946
993
  "kumiko.pager.pageSize": "{size} per page",
947
994
  "kumiko.pager.pageSizeLabel": "Entries per page",
948
995
  "kumiko.pager.previousPage": "Previous page",
@@ -1063,6 +1110,13 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1063
1110
  "managed-pages:body.lossy.blockquote": "block quotes",
1064
1111
  "managed-pages:body.lossy.code": "code",
1065
1112
  "managed-pages:body.lossy.deepHeading": "headings below level 3",
1113
+ "managed-pages:editor.noValue": "Not set",
1114
+ "managed-pages:editor.infoEdit":
1115
+ "Edit the page on the left; the right side holds its address and settings.",
1116
+ "managed-pages:editor.infoPreview": "Preview of the unsaved draft, as visitors will see it.",
1117
+ "managed-pages:editor.railPage": "Page",
1118
+ "managed-pages:editor.create": "Create page",
1119
+ "managed-pages:editor.loadFailed": "The page could not be loaded.",
1066
1120
  "managed-pages:branding.section.custom-css": "Custom CSS",
1067
1121
  "managed-pages:branding.section.identity": "Identity",
1068
1122
  "managed-pages:confirms.page-delete": "Delete this page?",
@@ -1083,8 +1137,6 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1083
1137
  "managed-pages:entity:page:field:published:option:true": "Published",
1084
1138
  "managed-pages:entity:page:field:slug": "Slug",
1085
1139
  "managed-pages:entity:page:field:title": "Title",
1086
- "managed-pages:section.body": "Content",
1087
- "managed-pages:section.meta": "Metadata",
1088
1140
  "metrics.errors.tenantFilterUnsupported":
1089
1141
  "This metric's source has no tenant column, so it cannot be narrowed to one tenant.",
1090
1142
  "metrics:deliveryChannel.email": "Email",
@@ -1264,7 +1316,6 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1264
1316
  "subscription-paddle.client-token": "Paddle client-side token",
1265
1317
  "subscription-paddle.environment": "Paddle environment",
1266
1318
  "subscription-paddle.settings": "Paddle",
1267
- "subscription-paddle.tenant-binding-key": "Paddle tenant binding key",
1268
1319
  "subscription-paddle.webhook-secret": "Paddle webhook secret",
1269
1320
  "subscription-stripe.api-key": "Stripe API key",
1270
1321
  "subscription-stripe.billing-live": "Live billing",
@@ -1369,6 +1420,18 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1369
1420
  "template-resolver.editor.newEntry": "New entry",
1370
1421
  "template-resolver.editor.newEntryTitle": "New {label}",
1371
1422
  "template-resolver.editor.readOnly": "Read-only. Your role does not allow changes here.",
1423
+ "template-resolver.editor.infoPreviewPlain":
1424
+ "Preview of the unsaved state, as the page shows it. The site's header and footer are not included.",
1425
+ "template-resolver.preview.frameTitle": "Text preview",
1426
+ "template-resolver.editor.infoEdit":
1427
+ "Edit the title and the content. The preview shows it with example values for the placeholders.",
1428
+ "template-resolver.editor.infoPreview":
1429
+ "This is how the text looks with the example values, including changes you have not saved yet.",
1430
+ "template-resolver.editor.localeLabel": "Language",
1431
+ "template-resolver.editor.railDetails": "Entry",
1432
+ "template-resolver.editor.railExamples": "Example values",
1433
+ "template-resolver.editor.railPlaceholders": "Placeholders",
1434
+ "template-resolver.editor.railPlaceholdersHint": "These names can be used in the text.",
1372
1435
  "template-resolver.editor.save": "Save",
1373
1436
  "template-resolver.editor.saveFailed": "Save failed.",
1374
1437
  "template-resolver.editor.saved": "Saved.",
@@ -1383,6 +1446,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
1383
1446
  "The button target “{detail}” must be a placeholder.",
1384
1447
  "templateResolver.errors.document.disallowedLinkHref":
1385
1448
  "Link target “{detail}” is not allowed; use https, http, mailto, tel, a relative path or a placeholder.",
1449
+ "templateResolver.errors.document.relativeLinkWithoutBase":
1450
+ "Link target “{detail}” is relative, but mails and PDF documents have no base address; use an absolute https link.",
1386
1451
  "templateResolver.errors.document.documentRequiresHtmlFormat":
1387
1452
  "This template kind requires the html format, got “{detail}”.",
1388
1453
  "templateResolver.errors.document.layoutRequiresMjmlFormat":
@@ -2108,6 +2173,8 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
2108
2173
  "inboundMail.accounts.errors.addressAlreadyConnected": "This mailbox is already connected.",
2109
2174
  "inboundMail.accounts.errors.addressDisconnected":
2110
2175
  "This mailbox was disconnected before. Use Reactivate in the mailbox list to keep its history.",
2176
+ "inboundMail.accounts.errors.personalAddressNotOwn":
2177
+ "A personal mailbox can only be connected with the email address of your own account. An admin connects other addresses as a shared mailbox.",
2111
2178
  "inboundMail.accounts.reactivate": "Reactivate",
2112
2179
  "inboundMail.accounts.quarantine": "Quarantine",
2113
2180
  "inboundMail.accounts.errors.credentialRequired":
@@ -2167,14 +2234,14 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
2167
2234
  "inboundMail.imap.connect.errors.loginRejected":
2168
2235
  "The IMAP server rejected the sign-in. Check the user name and password.",
2169
2236
  "inboundMail.imap.connect.errors.tlsFailed":
2170
- "The encrypted connection failed. Check the port and the TLS setting.",
2237
+ "The encrypted connection failed. Check that the port is the IMAPS port (usually 993).",
2171
2238
  "inboundMail.imap.connect.errors.connectFailed":
2172
2239
  "No connection to the IMAP server. Check the server name and port.",
2173
2240
  "inbound-provider-imap:entity:__action-form__:field:smtpHost": "Outgoing server (SMTP)",
2174
2241
  "inbound-provider-imap:entity:__action-form__:field:smtpPort": "SMTP port",
2175
2242
  "inboundMail.imap.connect.outgoing": "Sending",
2176
2243
  "inboundMail.imap.connect.outgoingHint":
2177
- "Replies go out from this address over your own mail server, with the same user name and password. Leave the field empty if the server is called like the IMAP server, with smtp. instead of imap. Usually 587, even when your provider lists 465/SSL.",
2244
+ "Replies go out from this address over your own mail server, with the same user name and password. Leave the field empty if the server is called like the IMAP server, with smtp. instead of imap. Usually 587, even when your provider lists 465/SSL. Port 465 means SSL/TLS, every other port means STARTTLS.",
2178
2245
  "inbound-provider-imap:entity:__action-form__:field:trustedAuthservId": "Mail server ID",
2179
2246
  "inboundMail.imap.connect.senderCheck": "Sender check",
2180
2247
  "inboundMail.imap.connect.senderCheckHint":
@@ -2281,6 +2348,7 @@ export const frameworkEnCatalog: Readonly<Record<string, string>> = {
2281
2348
  "audit.log.event.waitlist-exported": "Waitlist exported",
2282
2349
  "audit.log.event.waitlist-purged": "Waitlist purged",
2283
2350
  "audit.log.event.feature-toggle-set": "Feature toggle changed",
2351
+ "audit.log.event.consumer-state-changed": "Event consumer state changed",
2284
2352
  "audit.log.event.contract-termination-requested": "Contract termination requested",
2285
2353
  "audit.log.event.contract-termination-declared": "Contract termination declared",
2286
2354
  "audit.log.event.contract-termination-unmatched": "Contract termination not matched",
package/src/formal.ts CHANGED
@@ -187,6 +187,10 @@ export const localeDeFormalOverrides: Readonly<Record<string, string>> = {
187
187
  "kumiko.drawer.discard.body": "Ihre Eingaben in diesem Formular gehen verloren.",
188
188
  "kumiko.field.reference-created-no-id":
189
189
  "Der Eintrag wurde angelegt, aber nicht automatisch ausgewählt. Bitte wählen Sie ihn manuell aus.",
190
+ "kumiko.pwa.install-hint":
191
+ "Installieren Sie diese App auf Ihrem Gerät, dann öffnet sie sich wie jede andere App.",
192
+ "kumiko.pwa.install-hint-ios":
193
+ "Zum Installieren tippen Sie auf Teilen und dann auf „Zum Home-Bildschirm“.",
190
194
  "kumiko.form.draft.resume-multiple":
191
195
  "Mehrere offene Entwürfe für dieses Formular gefunden. Welchen möchten Sie fortsetzen?",
192
196
  "kumiko.form.draft.resume-single":
@@ -264,11 +268,11 @@ export const localeDeFormalOverrides: Readonly<Record<string, string>> = {
264
268
  "inboundMail.imap.connect.errors.loginRejected":
265
269
  "Der IMAP-Server hat die Anmeldung abgelehnt. Prüfen Sie Benutzername und Passwort.",
266
270
  "inboundMail.imap.connect.errors.tlsFailed":
267
- "Die verschlüsselte Verbindung ist fehlgeschlagen. Prüfen Sie Port und TLS-Einstellung.",
271
+ "Die verschlüsselte Verbindung ist fehlgeschlagen. Prüfen Sie, ob der Port der IMAPS-Port ist (meist 993).",
268
272
  "inboundMail.imap.connect.errors.connectFailed":
269
273
  "Keine Verbindung zum IMAP-Server. Prüfen Sie Servernamen und Port.",
270
274
  "inboundMail.imap.connect.outgoingHint":
271
- "Antworten gehen von dieser Adresse über Ihren eigenen Mailserver raus, mit demselben Benutzernamen und Passwort. Lassen Sie das Feld leer, wenn der Server wie der IMAP-Server heißt, nur mit smtp. statt imap. Meist 587, auch wenn Ihr Anbieter 465/SSL nennt.",
275
+ "Antworten gehen von dieser Adresse über Ihren eigenen Mailserver raus, mit demselben Benutzernamen und Passwort. Lassen Sie das Feld leer, wenn der Server wie der IMAP-Server heißt, nur mit smtp. statt imap. Meist 587, auch wenn Ihr Anbieter 465/SSL nennt. Port 465 bedeutet SSL/TLS, jeder andere Port STARTTLS.",
272
276
  "inboundMail.imap.connect.errors.smtpHostUnreachable":
273
277
  "Empfang ok, Senden geht nicht: Der Postausgangsserver ist nicht erreichbar oder nicht erlaubt. Prüfen Sie seinen Namen.",
274
278
  "inboundMail.send.errors.notConfigured":
package/src/strings.ts CHANGED
@@ -365,6 +365,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
365
365
  "Dieser Mandant hat kein aktives Abo zum Wechseln.",
366
366
  "billing-foundation.errors.planSwitchNotSupported":
367
367
  "Dieser Anbieter unterstützt keinen Tarifwechsel.",
368
+ "billing-foundation.errors.planSwitchPending":
369
+ "Ein Tarifwechsel wird bereits verarbeitet. Warte einen Moment, bis er abgeschlossen ist.",
368
370
  "billing-foundation.errors.planTiersShareProduct":
369
371
  "Jeder Tarif braucht ein eigenes Stripe-Produkt. Bitte den Support kontaktieren.",
370
372
  "billing-foundation.errors.priceUnavailable":
@@ -445,6 +447,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
445
447
  "cap-overview.list.filter.tier": "Tier",
446
448
  "cap-overview.notMeasured": "Noch nicht gemessen",
447
449
  "cap-overview.notIncluded": "Nicht enthalten",
450
+ "cap-overview.notIncludedButUsed": "{used} · nicht enthalten",
448
451
  "cap-overview.platform.filter.tenant": "Mandant",
449
452
  "cap-overview.unlimited": "{used} · unbegrenzt",
450
453
  "compliance-profiles:entity:__action-form__:field:profileKey": "Compliance-Profil",
@@ -465,6 +468,15 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
465
468
  "config.secret.channel-telegram.bot-token.hint":
466
469
  'Token von @BotFather. Gilt für jeden Telegram-Chat, den der Mandant per route: { telegram: "<Chat-ID>" } anspricht.',
467
470
  "config.secret.channel-telegram.bot-token.label": "Telegram-Bot-Token",
471
+ "config.secret.channel-whatsapp.access-token.hint":
472
+ "Systembenutzer-Zugriffstoken der Meta-App. Wird zum Senden von Nachrichten und zum Laden von Medien verwendet.",
473
+ "config.secret.channel-whatsapp.access-token.label": "WhatsApp-Zugriffstoken",
474
+ "config.secret.channel-whatsapp.app-secret.hint":
475
+ "App-Secret der Meta-App. Prüft die Signatur jedes eingehenden Webhooks.",
476
+ "config.secret.channel-whatsapp.app-secret.label": "WhatsApp-App-Secret",
477
+ "config.secret.channel-whatsapp.verify-token.hint":
478
+ "Beliebiger Text, den Sie auch in den Meta-Webhook-Einstellungen eintragen; beantwortet den Abonnement-Handshake von Meta.",
479
+ "config.secret.channel-whatsapp.verify-token.label": "WhatsApp-Verifizierungstoken",
468
480
  "config.secret.file-provider-s3.s3-secret-access-key.hint":
469
481
  "Privater Teil des S3-Schlüsselpaars. Hetzner nennt ihn „Secret Key“, AWS „Secret Access Key“.",
470
482
  "config.secret.file-provider-s3.s3-secret-access-key.label": "S3 Secret Access Key",
@@ -587,9 +599,20 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
587
599
  "errors.validation.too_big": "Zu groß oder zu lang. Maximal erlaubt: {maximum}.",
588
600
  "kumiko.boolean.no": "Nein",
589
601
  "kumiko.boolean.yes": "Ja",
602
+ "kumiko.editor.device.desktop": "Desktop",
603
+ "kumiko.editor.device.mobile": "Mobil 375 px",
604
+ "kumiko.editor.deviceSwitch": "Breite der Vorschau",
605
+ "kumiko.editor.discard": "Änderungen verwerfen",
606
+ "kumiko.editor.localeSwitch": "Sprache",
607
+ "kumiko.editor.modeSwitch": "Modus",
608
+ "kumiko.editor.noChanges": "Keine ungespeicherten Änderungen",
609
+ "kumiko.editor.publish": "Veröffentlichen",
610
+ "kumiko.editor.savedAt": "Zuletzt gespeichert {when}",
611
+ "kumiko.editor.unsavedChanges": "Ungespeicherte Änderungen",
590
612
  "kumiko.field.file-list.download": "Herunterladen",
591
613
  "kumiko.field.file-list.hidePreview": "Vorschau ausblenden",
592
614
  "kumiko.field.file-list.preview": "Vorschau",
615
+ "kumiko.field.file-list.view": "Ansehen",
593
616
  "kumiko.validation.number.min": "Muss mindestens {minimum} sein.",
594
617
  "kumiko.validation.number.max": "Darf höchstens {maximum} sein.",
595
618
  "errors.validation.too_small": "Zu klein oder zu kurz. Mindestens erforderlich: {minimum}.",
@@ -763,6 +786,10 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
763
786
  "kumiko.dashboard.chart.forecast": "Prognose",
764
787
  "kumiko.dashboard.chart.markers": "Ereignisse",
765
788
  "kumiko.dashboard.filter.all": "Alle",
789
+ "kumiko.dashboard.list.line-more": "{count} weitere",
790
+ "kumiko.dashboard.list.more": "Weitere {count} Einträge",
791
+ "kumiko.dashboard.list.open-row": "Öffnen",
792
+ "kumiko.dashboard.list.shown-of-total": "{shown} von {total}",
766
793
  "kumiko.dashboard.panel.error.isolated": "Die anderen Bereiche sind nicht betroffen.",
767
794
  "kumiko.dashboard.panel.error.retry": "Erneut versuchen",
768
795
  "kumiko.dashboard.panel.error.title": "{label} konnte nicht geladen werden",
@@ -787,7 +814,6 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
787
814
  "kumiko.dashboard.brush-end": "Fensterende",
788
815
  "kumiko.dashboard.brush-start": "Fensterbeginn",
789
816
  "kumiko.dashboard.today": "Heute",
790
- "kumiko.dashboard.updated-at": "Stand {time}",
791
817
  "kumiko.dialog.cancel": "Abbrechen",
792
818
  "kumiko.dialog.close": "Schließen",
793
819
  "kumiko.dialog.confirm": "Bestätigen",
@@ -820,6 +846,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
820
846
  "kumiko.field.embedded-list.remove-row": "Zeile entfernen",
821
847
  "kumiko.field.file-list.add": "Datei hinzufügen",
822
848
  "kumiko.field.file-list.empty": "Noch keine Dateien.",
849
+ "kumiko.field.dropzone.file-unavailable": "Datei nicht mehr verfügbar",
823
850
  "kumiko.field.dropzone.limit-count": "bis zu {count} Dateien",
824
851
  "kumiko.field.dropzone.limit-size": "bis zu {size} pro Datei",
825
852
  "kumiko.field.dropzone.title": "Dateien hierher ziehen oder klicken zum Auswählen",
@@ -844,6 +871,12 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
844
871
  "kumiko.field.writeOnly.maskedSet": "•••••••••• gesetzt",
845
872
  "kumiko.field.writeOnly.replace": "Ersetzen",
846
873
  "kumiko.pii.erased": "Gelöscht",
874
+ "kumiko.pwa.dismiss": "Nicht jetzt",
875
+ "kumiko.pwa.install": "Installieren",
876
+ "kumiko.pwa.install-hint":
877
+ "Installiere diese App auf deinem Gerät, dann öffnet sie sich wie jede andere App.",
878
+ "kumiko.pwa.install-hint-ios":
879
+ "Zum Installieren tippe auf Teilen und dann auf „Zum Home-Bildschirm“.",
847
880
  "kumiko.record.not-found.back": "Zurück zur Liste",
848
881
  "kumiko.record.not-found.hint":
849
882
  "Er wurde möglicherweise gelöscht, oder der Link ist nicht mehr gültig.",
@@ -881,9 +914,12 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
881
914
  "kumiko.list.empty.defaultFiltered":
882
915
  "Keine Einträge im Standardfilter. Mit „Alle anzeigen“ erscheinen auch Einträge außerhalb davon.",
883
916
  "kumiko.list.empty.showAll": "Alle anzeigen",
917
+ "kumiko.list.empty.resetFilter": "Filter zurücksetzen",
918
+ "kumiko.list.named-filter.all": "Alle",
884
919
  "kumiko.list.empty.hint": "Lege den ersten an, um loszulegen.",
885
920
  "kumiko.list.empty.title": "Noch keine Einträge.",
886
921
  "kumiko.list.end-of-list": "— Ende der Liste —",
922
+ "kumiko.list.filter.all": "Alle",
887
923
  "kumiko.list.filter.reset": "Zurücksetzen",
888
924
  "kumiko.list.filter.toggle": "Filter",
889
925
  "kumiko.list.no-entries": "Noch keine Einträge.",
@@ -918,7 +954,19 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
918
954
  "kumiko.list.bulk.result.not-started": "Nicht ausgeführt: {count}",
919
955
  "kumiko.list.bulk.result.dismiss": "Schließen",
920
956
  "kumiko.list.search-placeholder": "Suchen…",
957
+ "kumiko.list.hint.empty": "Nichts offen",
958
+ "kumiko.list.hint.reason": "Warum?",
959
+ "kumiko.detail.steps.title": "Nächste Schritte",
960
+ "kumiko.detail.steps.empty": "Nichts zu tun",
961
+ "kumiko.detail.progress.step-of": "Schritt {current} von {total}",
962
+ "kumiko.detail.steps.less": "Weniger Schritte",
963
+ "kumiko.detail.steps.more.one": "1 weiterer Schritt",
964
+ "kumiko.detail.steps.more.other": "{count} weitere Schritte",
965
+ "kumiko.detail.steps.reason": "Warum?",
966
+ "kumiko.detail.breadcrumb": "Pfad",
921
967
  "kumiko.list.sort.by": "Sortiert nach {column}",
968
+ "kumiko.list.sort.prefix": "Sortiert nach",
969
+ "kumiko.list.sort.summary": "Sortiert nach {sort} {direction} · {count} {noun}",
922
970
  "kumiko.list.sort.label": "Sortieren",
923
971
  "kumiko.list.sort.unsorted": "Unsortiert",
924
972
  "kumiko.list.reset-all": "Zurücksetzen",
@@ -932,6 +980,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
932
980
  "kumiko.list.view.density": "Dichte",
933
981
  "kumiko.list.view.density.comfortable": "Komfortabel",
934
982
  "kumiko.list.view.density.compact": "Kompakt",
983
+ "kumiko.list.view.density.relaxed": "Weit",
935
984
  "kumiko.list.view.reset": "Ansicht zurücksetzen",
936
985
  "kumiko.list.group.by": "Gruppieren nach",
937
986
  "kumiko.list.group.none": "Keine",
@@ -974,8 +1023,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
974
1023
  "kumiko.notifications.loadMore": "Mehr laden",
975
1024
  "kumiko.notifications.unread": "Ungelesen",
976
1025
  "kumiko.notifications.loadFailed": "Benachrichtigungen konnten nicht geladen werden.",
1026
+ "kumiko.pager.goToPage": "Seite {page}",
977
1027
  "kumiko.pager.nextPage": "Nächste Seite",
978
- "kumiko.pager.pageOf": "Seite {page} von {pages}",
979
1028
  "kumiko.pager.pageSize": "{size} pro Seite",
980
1029
  "kumiko.pager.pageSizeLabel": "Einträge pro Seite",
981
1030
  "kumiko.pager.previousPage": "Vorherige Seite",
@@ -1095,6 +1144,14 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1095
1144
  "managed-pages:body.lossy.blockquote": "Zitate",
1096
1145
  "managed-pages:body.lossy.code": "Code",
1097
1146
  "managed-pages:body.lossy.deepHeading": "Überschriften unterhalb von Ebene 3",
1147
+ "managed-pages:editor.noValue": "Nicht gesetzt",
1148
+ "managed-pages:editor.infoEdit":
1149
+ "Seite links bearbeiten; rechts stehen Adresse und Einstellungen.",
1150
+ "managed-pages:editor.infoPreview":
1151
+ "Vorschau des ungespeicherten Entwurfs, so sehen ihn Besucher.",
1152
+ "managed-pages:editor.railPage": "Seite",
1153
+ "managed-pages:editor.create": "Seite anlegen",
1154
+ "managed-pages:editor.loadFailed": "Die Seite konnte nicht geladen werden.",
1098
1155
  "managed-pages:branding.section.custom-css": "Eigenes CSS",
1099
1156
  "managed-pages:branding.section.identity": "Identität",
1100
1157
  "managed-pages:confirms.page-delete": "Diese Seite wirklich löschen?",
@@ -1115,8 +1172,6 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1115
1172
  "managed-pages:entity:page:field:published:option:true": "Veröffentlicht",
1116
1173
  "managed-pages:entity:page:field:slug": "Slug",
1117
1174
  "managed-pages:entity:page:field:title": "Titel",
1118
- "managed-pages:section.body": "Inhalt",
1119
- "managed-pages:section.meta": "Metadaten",
1120
1175
  "metrics.errors.tenantFilterUnsupported":
1121
1176
  "Die Datenquelle dieser Kennzahl hat keine Mandantenspalte und lässt sich nicht auf einen Mandanten eingrenzen.",
1122
1177
  "metrics:deliveryChannel.email": "E-Mail",
@@ -1299,7 +1354,6 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1299
1354
  "subscription-paddle.client-token": "Paddle Client-Token",
1300
1355
  "subscription-paddle.environment": "Paddle Umgebung",
1301
1356
  "subscription-paddle.settings": "Paddle",
1302
- "subscription-paddle.tenant-binding-key": "Paddle Mandanten-Bindungsschlüssel",
1303
1357
  "subscription-paddle.webhook-secret": "Paddle Webhook-Secret",
1304
1358
  "subscription-stripe.api-key": "Stripe API Key",
1305
1359
  "subscription-stripe.billing-live": "Stripe Billing live",
@@ -1407,6 +1461,18 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1407
1461
  "template-resolver.editor.newEntry": "Neuer Eintrag",
1408
1462
  "template-resolver.editor.newEntryTitle": "Neu: {label}",
1409
1463
  "template-resolver.editor.readOnly": "Nur lesbar. Ihre Rolle erlaubt hier keine Änderungen.",
1464
+ "template-resolver.editor.infoPreviewPlain":
1465
+ "Vorschau des ungespeicherten Stands, so wie die Seite ihn zeigt. Kopf und Fuß der Website sind nicht enthalten.",
1466
+ "template-resolver.preview.frameTitle": "Textvorschau",
1467
+ "template-resolver.editor.infoEdit":
1468
+ "Titel und Inhalt bearbeiten. Die Vorschau zeigt ihn mit Beispielwerten für die Platzhalter.",
1469
+ "template-resolver.editor.infoPreview":
1470
+ "So sieht der Text mit den Beispielwerten aus, auch mit Änderungen, die noch nicht gespeichert sind.",
1471
+ "template-resolver.editor.localeLabel": "Sprache",
1472
+ "template-resolver.editor.railDetails": "Eintrag",
1473
+ "template-resolver.editor.railExamples": "Beispielwerte",
1474
+ "template-resolver.editor.railPlaceholders": "Platzhalter",
1475
+ "template-resolver.editor.railPlaceholdersHint": "Diese Namen lassen sich im Text verwenden.",
1410
1476
  "template-resolver.editor.save": "Speichern",
1411
1477
  "template-resolver.editor.saveFailed": "Speichern fehlgeschlagen.",
1412
1478
  "template-resolver.editor.saved": "Gespeichert.",
@@ -1421,6 +1487,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
1421
1487
  "Das Ziel der Schaltfläche „{detail}“ muss ein Platzhalter sein.",
1422
1488
  "templateResolver.errors.document.disallowedLinkHref":
1423
1489
  "Das Linkziel „{detail}“ ist nicht erlaubt; verwende https, http, mailto, tel, einen relativen Pfad oder einen Platzhalter.",
1490
+ "templateResolver.errors.document.relativeLinkWithoutBase":
1491
+ "Das Linkziel „{detail}“ ist relativ, aber Mails und PDF-Dokumente haben keine Basisadresse; verwende einen absoluten https-Link.",
1424
1492
  "templateResolver.errors.document.documentRequiresHtmlFormat":
1425
1493
  "Diese Vorlagenart erfordert das Format html, erhalten: „{detail}“.",
1426
1494
  "templateResolver.errors.document.layoutRequiresMjmlFormat":
@@ -2159,6 +2227,8 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
2159
2227
  "inboundMail.accounts.errors.addressAlreadyConnected": "Dieses Postfach ist bereits verbunden.",
2160
2228
  "inboundMail.accounts.errors.addressDisconnected":
2161
2229
  "Dieses Postfach wurde früher getrennt. In der Postfachliste „Reaktivieren“ wählen, damit der Verlauf erhalten bleibt.",
2230
+ "inboundMail.accounts.errors.personalAddressNotOwn":
2231
+ "Ein persönliches Postfach lässt sich nur mit der E-Mail-Adresse des eigenen Kontos verbinden. Andere Adressen verbindet ein Admin als gemeinsames Postfach.",
2162
2232
  "inboundMail.accounts.reactivate": "Reaktivieren",
2163
2233
  "inboundMail.accounts.quarantine": "Quarantäne",
2164
2234
  "inboundMail.accounts.errors.credentialRequired":
@@ -2220,14 +2290,14 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
2220
2290
  "inboundMail.imap.connect.errors.loginRejected":
2221
2291
  "Der IMAP-Server hat die Anmeldung abgelehnt. Prüfe Benutzername und Passwort.",
2222
2292
  "inboundMail.imap.connect.errors.tlsFailed":
2223
- "Die verschlüsselte Verbindung ist fehlgeschlagen. Prüfe Port und TLS-Einstellung.",
2293
+ "Die verschlüsselte Verbindung ist fehlgeschlagen. Prüfe, ob der Port der IMAPS-Port ist (meist 993).",
2224
2294
  "inboundMail.imap.connect.errors.connectFailed":
2225
2295
  "Keine Verbindung zum IMAP-Server. Prüfe Servernamen und Port.",
2226
2296
  "inbound-provider-imap:entity:__action-form__:field:smtpHost": "Postausgangsserver (SMTP)",
2227
2297
  "inbound-provider-imap:entity:__action-form__:field:smtpPort": "SMTP-Port",
2228
2298
  "inboundMail.imap.connect.outgoing": "Senden",
2229
2299
  "inboundMail.imap.connect.outgoingHint":
2230
- "Antworten gehen von dieser Adresse über deinen eigenen Mailserver raus, mit demselben Benutzernamen und Passwort. Lass das Feld leer, wenn der Server wie der IMAP-Server heißt, nur mit smtp. statt imap. Meist 587, auch wenn dein Anbieter 465/SSL nennt.",
2300
+ "Antworten gehen von dieser Adresse über deinen eigenen Mailserver raus, mit demselben Benutzernamen und Passwort. Lass das Feld leer, wenn der Server wie der IMAP-Server heißt, nur mit smtp. statt imap. Meist 587, auch wenn dein Anbieter 465/SSL nennt. Port 465 bedeutet SSL/TLS, jeder andere Port STARTTLS.",
2231
2301
  "inbound-provider-imap:entity:__action-form__:field:trustedAuthservId": "Kennung des Mailservers",
2232
2302
  "inboundMail.imap.connect.senderCheck": "Absenderprüfung",
2233
2303
  "inboundMail.imap.connect.senderCheckHint":
@@ -2334,6 +2404,7 @@ export const localeDeBundle: Readonly<Record<string, string>> = {
2334
2404
  "audit.log.event.waitlist-exported": "Warteliste exportiert",
2335
2405
  "audit.log.event.waitlist-purged": "Warteliste bereinigt",
2336
2406
  "audit.log.event.feature-toggle-set": "Funktionsschalter geändert",
2407
+ "audit.log.event.consumer-state-changed": "Event-Consumer-Status geändert",
2337
2408
  "audit.log.event.contract-termination-requested": "Vertragskündigung angefordert",
2338
2409
  "audit.log.event.contract-termination-declared": "Vertragskündigung erklärt",
2339
2410
  "audit.log.event.contract-termination-unmatched": "Vertragskündigung nicht zugeordnet",