@elytracms/studio 0.0.100 → 0.0.102
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/convex/analytics-cost.test.ts +1 -1
- package/convex/asset-meta-patch.test.ts +7 -27
- package/convex/assets.ts +6 -41
- package/convex/cms.ts +2 -29
- package/convex/delivery.ts +2 -2
- package/convex/record-functions.ts +15 -82
- package/convex/redirects.ts +11 -116
- package/convex/schema.ts +4 -23
- package/convex/shared-capture.convex.test.ts +165 -0
- package/convex/triggers.ts +7 -14
- package/dist/components/ai/ai-chat-panel-lazy.js +7 -2
- package/dist/components/ai/ai-chat-panel-lazy.js.map +1 -1
- package/dist/components/ai/ai-chat-panel.js +8 -5
- package/dist/components/ai/ai-chat-panel.js.map +1 -1
- package/dist/components/ai/proposal-card.js +2 -1
- package/dist/components/ai/proposal-card.js.map +1 -1
- package/dist/components/ai/proposal-unfilled.d.ts +14 -0
- package/dist/components/ai/proposal-unfilled.js +33 -0
- package/dist/components/ai/proposal-unfilled.js.map +1 -0
- package/dist/components/ai/translate-document-action.js +8 -6
- package/dist/components/ai/translate-document-action.js.map +1 -1
- package/dist/components/ai/translate-skipped.js +1 -0
- package/dist/components/ai/translate-skipped.js.map +1 -1
- package/dist/components/app-views/studio-config.d.ts +12 -12
- package/dist/components/app-views/studio-config.js.map +1 -1
- package/dist/components/assets/asset-detail.js +1 -2
- package/dist/components/assets/asset-detail.js.map +1 -1
- package/dist/components/assets/asset-metadata.d.ts +2 -9
- package/dist/components/assets/asset-metadata.js +3 -10
- package/dist/components/assets/asset-metadata.js.map +1 -1
- package/dist/components/assets/asset-search.js +1 -1
- package/dist/components/assets/asset-search.js.map +1 -1
- package/dist/components/assets/asset-selection.js +2 -2
- package/dist/components/assets/asset-selection.js.map +1 -1
- package/dist/components/assets/assets-collection-view-source.d.ts +2 -3
- package/dist/components/assets/assets-collection-view-source.js +2 -3
- package/dist/components/assets/assets-collection-view-source.js.map +1 -1
- package/dist/components/builder/__fixtures__/reuse-race.d.ts +30 -0
- package/dist/components/builder/__fixtures__/reuse-race.js +77 -0
- package/dist/components/builder/__fixtures__/reuse-race.js.map +1 -0
- package/dist/components/builder/builder-store.d.ts +37 -1
- package/dist/components/builder/builder-store.js +21 -6
- package/dist/components/builder/builder-store.js.map +1 -1
- package/dist/components/builder/canvas-chrome-css.d.ts +1 -1
- package/dist/components/builder/canvas-chrome-css.js +1 -1
- package/dist/components/builder/canvas-chrome-css.js.map +1 -1
- package/dist/components/builder/canvas-chrome.d.ts +1 -1
- package/dist/components/builder/canvas-chrome.js +1 -1
- package/dist/components/builder/canvas-chrome.js.map +1 -1
- package/dist/components/builder/canvas-rebase.d.ts +4 -4
- package/dist/components/builder/canvas-rebase.js +3 -2
- package/dist/components/builder/canvas-rebase.js.map +1 -1
- package/dist/components/builder/canvas-render-context.d.ts +1 -1
- package/dist/components/builder/canvas-render-context.js +1 -1
- package/dist/components/builder/canvas-render-context.js.map +1 -1
- package/dist/components/builder/composition-field-editor-lazy.js +2 -1
- package/dist/components/builder/composition-field-editor-lazy.js.map +1 -1
- package/dist/components/builder/composition-field-editor.js +3 -3
- package/dist/components/builder/composition-field-editor.js.map +1 -1
- package/dist/components/builder/reuse-context.d.ts +9 -2
- package/dist/components/builder/reuse-context.js +46 -6
- package/dist/components/builder/reuse-context.js.map +1 -1
- package/dist/components/builder/reuse.d.ts +113 -70
- package/dist/components/builder/reuse.js +123 -108
- package/dist/components/builder/reuse.js.map +1 -1
- package/dist/components/cms/asset-field.js +1 -3
- package/dist/components/cms/asset-field.js.map +1 -1
- package/dist/components/cms/cell.d.ts +2 -2
- package/dist/components/cms/cell.js +8 -18
- package/dist/components/cms/cell.js.map +1 -1
- package/dist/components/cms/cms-store.d.ts +9 -1
- package/dist/components/cms/cms-store.js +1 -0
- package/dist/components/cms/cms-store.js.map +1 -1
- package/dist/components/cms/detail-editor.js +15 -14
- package/dist/components/cms/detail-editor.js.map +1 -1
- package/dist/components/cms/field-control.js +13 -1
- package/dist/components/cms/field-control.js.map +1 -1
- package/dist/components/cms/prop-fields.js +1 -1
- package/dist/components/cms/prop-fields.js.map +1 -1
- package/dist/components/cms/rich-text/lazy.js +2 -1
- package/dist/components/cms/rich-text/lazy.js.map +1 -1
- package/dist/components/cms/rich-text/toolbar-state.d.ts +1 -1
- package/dist/components/cms/rich-text/toolbar-state.js +1 -1
- package/dist/components/cms/rich-text/toolbar-state.js.map +1 -1
- package/dist/components/cms/use-field-focus.js +3 -3
- package/dist/components/cms/use-field-focus.js.map +1 -1
- package/dist/components/cms/version-compare-lazy.js +2 -1
- package/dist/components/cms/version-compare-lazy.js.map +1 -1
- package/dist/components/components/components-index.js +1 -1
- package/dist/components/components/components-index.js.map +1 -1
- package/dist/components/deployment-setup-gate.d.ts +1 -1
- package/dist/components/deployment-setup-gate.js +1 -1
- package/dist/components/deployment-setup-gate.js.map +1 -1
- package/dist/components/load-failure.d.ts +62 -0
- package/dist/components/load-failure.js +110 -0
- package/dist/components/load-failure.js.map +1 -0
- package/dist/components/notifications/shell-findings.js +3 -3
- package/dist/components/notifications/shell-findings.js.map +1 -1
- package/dist/customization.d.ts +3 -3
- package/dist/customization.js.map +1 -1
- package/dist/lib/ai/apply-content.js +99 -28
- package/dist/lib/ai/apply-content.js.map +1 -1
- package/dist/lib/ai/chat-context.d.ts +77 -7
- package/dist/lib/ai/chat-context.js +139 -14
- package/dist/lib/ai/chat-context.js.map +1 -1
- package/dist/lib/ai/chat-state.d.ts +7 -1
- package/dist/lib/ai/chat-state.js.map +1 -1
- package/dist/lib/ai/constraints.d.ts +5 -0
- package/dist/lib/ai/constraints.js +21 -6
- package/dist/lib/ai/constraints.js.map +1 -1
- package/dist/lib/ai/fake-provider.d.ts +76 -26
- package/dist/lib/ai/fake-provider.js +210 -66
- package/dist/lib/ai/fake-provider.js.map +1 -1
- package/dist/lib/ai/index.d.ts +1 -0
- package/dist/lib/ai/index.js +1 -0
- package/dist/lib/ai/index.js.map +1 -1
- package/dist/lib/ai/keyless-assistant.d.ts +37 -0
- package/dist/lib/ai/keyless-assistant.js +193 -0
- package/dist/lib/ai/keyless-assistant.js.map +1 -0
- package/dist/lib/ai/knowledge.d.ts +9 -9
- package/dist/lib/ai/knowledge.js +22 -0
- package/dist/lib/ai/knowledge.js.map +1 -1
- package/dist/lib/ai/shape.d.ts +25 -2
- package/dist/lib/ai/shape.js +58 -7
- package/dist/lib/ai/shape.js.map +1 -1
- package/dist/lib/ai/tools.d.ts +18 -1
- package/dist/lib/ai/tools.js +74 -11
- package/dist/lib/ai/tools.js.map +1 -1
- package/dist/lib/ai/translate-document.d.ts +8 -1
- package/dist/lib/ai/translate-document.js +25 -9
- package/dist/lib/ai/translate-document.js.map +1 -1
- package/dist/lib/ai/types.d.ts +22 -7
- package/dist/lib/ai/types.js.map +1 -1
- package/dist/lib/ai/update-fields.js +13 -17
- package/dist/lib/ai/update-fields.js.map +1 -1
- package/dist/lib/ai/writer-form.d.ts +72 -3
- package/dist/lib/ai/writer-form.js +320 -42
- package/dist/lib/ai/writer-form.js.map +1 -1
- package/dist/lib/assets/upload.d.ts +1 -2
- package/dist/lib/assets/upload.js +1 -2
- package/dist/lib/assets/upload.js.map +1 -1
- package/dist/lib/auth-errors.d.ts +1 -1
- package/dist/lib/auth-errors.js +1 -1
- package/dist/lib/auth-errors.js.map +1 -1
- package/dist/lib/engine-version.d.ts +1 -1
- package/dist/lib/engine-version.js +1 -1
- package/dist/lib/engine-version.js.map +1 -1
- package/dist/lib/i18n/messages.de.d.ts +1 -1
- package/dist/lib/i18n/messages.de.js +32 -8
- package/dist/lib/i18n/messages.de.js.map +1 -1
- package/dist/lib/i18n/messages.en.d.ts +25 -3
- package/dist/lib/i18n/messages.en.js +40 -10
- package/dist/lib/i18n/messages.en.js.map +1 -1
- package/dist/lib/operations/cms-persistence.d.ts +28 -0
- package/dist/lib/operations/cms-persistence.js +55 -0
- package/dist/lib/operations/cms-persistence.js.map +1 -1
- package/dist/lib/persistence/convex-adapter.js +7 -2
- package/dist/lib/persistence/convex-adapter.js.map +1 -1
- package/dist/lib/workspace/index.d.ts +3 -3
- package/dist/lib/workspace/index.js +3 -3
- package/dist/lib/workspace/index.js.map +1 -1
- package/dist/router/navigate-once.d.ts +1 -1
- package/dist/router/navigate-once.js.map +1 -1
- package/dist/router/root.d.ts +3 -2
- package/dist/router/root.js +25 -4
- package/dist/router/root.js.map +1 -1
- package/package.json +3 -3
- package/convex/asset-alt-migration.test.ts +0 -127
- package/convex/redirect-migration.test.ts +0 -205
- package/convex/version-kind-stamping.test.ts +0 -118
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `{ ...deMessages, 'some.key': 'eigene Formulierung' }`.
|
|
8
8
|
*
|
|
9
9
|
* Seeded 2026-07-15 as the best-of merge of the two hand-maintained consumer
|
|
10
|
-
* catalogs (
|
|
10
|
+
* catalogs (on a conflict, the second consumer's won) + fresh translations for the keys both
|
|
11
11
|
* lacked (incl. EC-397's sign-in/boot copy). Typed against
|
|
12
12
|
* {@link TranslationCatalog} so an unknown/stale key fails typecheck;
|
|
13
13
|
* `messages.de.test.ts` pins EXACT key parity with the EN source (no missing,
|
|
@@ -125,6 +125,14 @@ export const deMessages = {
|
|
|
125
125
|
'shell.backToProjects': 'Zurück zu den Projekten',
|
|
126
126
|
'shell.routeNotFound.title': 'Seite nicht gefunden',
|
|
127
127
|
'shell.routeNotFound.body': 'Diese Studio-URL verweist auf keinen Bereich.',
|
|
128
|
+
'shell.failure.module.title': 'Dieser Teil des Studios konnte nicht geladen werden',
|
|
129
|
+
'shell.failure.module.body': 'Sein Code ließ sich nicht herunterladen, meist weil der Dev-Server seinen Abhängigkeits-Cache neu aufgebaut hat, während dieser Tab offen war. Gehen Sie zurück, um weiterzuarbeiten; dieser Teil bleibt bis zum Neuladen der Seite nicht verfügbar.',
|
|
130
|
+
'shell.failure.module.restartHint': 'Hilft Neuladen nicht, starten Sie den Dev-Server neu.',
|
|
131
|
+
'shell.failure.error.title': 'Etwas ist schiefgelaufen',
|
|
132
|
+
'shell.failure.error.body': 'Im Studio ist hier ein unerwarteter Fehler aufgetreten. Neuladen der Seite behebt das meist.',
|
|
133
|
+
'shell.failure.back': 'Zurück',
|
|
134
|
+
'shell.failure.reload': 'Neu laden',
|
|
135
|
+
'shell.failure.reloadCost': 'Neuladen leert den Playground: Alles, was in diesem Tab erstellt oder geändert wurde, geht verloren.',
|
|
128
136
|
'shell.projectSwitcher.recent': 'Zuletzt verwendet',
|
|
129
137
|
'shell.projects': 'Projekte',
|
|
130
138
|
'shell.projectSwitcher.browseAll': 'Alle Projekte durchsuchen',
|
|
@@ -181,13 +189,12 @@ export const deMessages = {
|
|
|
181
189
|
'customization.issue.derivedIdBuiltinCollision': 'Die Ansicht „{label}“ für „{point}“ leitet die id „{id}“ aus ihrer Beschriftung ab, was der eingebauten Ansicht „{id}“ entspricht — die eingebaute Ansicht bleibt erhalten und diese wird ignoriert. Geben Sie eine explizite id an, um eine eingebaute Ansicht absichtlich zu ersetzen.',
|
|
182
190
|
'customization.issue.derivedIdCollectionCollision': 'Die Ansichts-id „{id}“ für „{point}“ ist mehrdeutig: Sie verbindet die Sammlungen {collections} mit „-“, und eine Sammlung heißt buchstäblich „{joined}“ — deren eigene Ansicht leitet dieselbe id ab. Geben Sie dieser Gruppe eine explizite id.',
|
|
183
191
|
// EC-467 — die Deklaration wiederverwendbarer Elemente (`defineStudio({ reuse })`).
|
|
184
|
-
'builder.reuse.config.unknownComponent': 'Wiederverwendbare Elemente: Die Studio-Konfiguration deklariert reuse.component „{component}“, was keine registrierte Komponente ist. Korrigieren Sie die id
|
|
192
|
+
'builder.reuse.config.unknownComponent': 'Wiederverwendbare Elemente: Die Studio-Konfiguration deklariert reuse.component „{component}“, was keine registrierte Komponente ist. Korrigieren Sie die id, sodass sie Ihre Einbettungs-Komponente nennt — bis dahin sind die Wiederverwendungs-Gesten deaktiviert.',
|
|
185
193
|
'builder.reuse.config.noRelationProp': 'Wiederverwendbare Elemente: Die deklarierte Einbettung „{component}“ hat kein Relations-Prop für ein einzelnes Dokument und kann daher auf kein wiederverwendbares Dokument zeigen. Eine Einbettung benötigt genau ein Relations-Prop mit Kardinalität eins.',
|
|
186
194
|
'builder.reuse.config.unknownRelationProp': 'Wiederverwendbare Elemente: Die deklarierte Einbettung „{component}“ hat kein Relations-Prop für ein einzelnes Dokument mit dem Namen „{relationProp}“. Ihre Relations-Props sind: {props}.',
|
|
187
195
|
'builder.reuse.config.ambiguousRelationProp': 'Wiederverwendbare Elemente: Die deklarierte Einbettung „{component}“ hat {count} Relations-Props für ein einzelnes Dokument ({props}) — ergänzen Sie reuse.relationProp, um anzugeben, welches auf das wiederverwendbare Dokument zeigt.',
|
|
188
196
|
'builder.reuse.config.unknownCollection': 'Wiederverwendbare Elemente: „{component}.{relationProp}“ verweist auf die Sammlung „{collection}“, die dieses Projekt nicht definiert.',
|
|
189
197
|
'builder.reuse.config.noBlocksField': 'Wiederverwendbare Elemente: Die Sammlung „{collection}“ hinter „{component}.{relationProp}“ hat kein Block-Feld (Komposition), sodass die Einbettung nichts einbinden kann.',
|
|
190
|
-
'builder.reuse.config.ambiguousInference': 'Wiederverwendbare Elemente: {count} Komponenten haben die Form einer wiederverwendbaren Einbettung ({components}). Ein Projekt hat genau eine wiederverwendbare Einbettung, deshalb rät das Studio nicht — deklarieren Sie sie in studio.config als reuse: { component: \'<id>\' }. Bis dahin sind die Wiederverwendungs-Gesten deaktiviert.',
|
|
191
198
|
// ─────────────────────────────────────────────────────────────────────────
|
|
192
199
|
// Auth / errors
|
|
193
200
|
// ─────────────────────────────────────────────────────────────────────────
|
|
@@ -258,6 +265,8 @@ export const deMessages = {
|
|
|
258
265
|
'operations.error.documentSchemaViolation': 'Das Dokument „{collection}:{id}“ verletzt das Schema seiner Sammlung.',
|
|
259
266
|
'operations.error.strictReferencesBlockDelete': '„{target}“ kann nicht gelöscht werden: {count} Dokumente verweisen über strikte Beziehungsfelder darauf — {named}{more}. Entfernen Sie zuerst diese Verweise.',
|
|
260
267
|
'operations.error.strictReferencesBlockDeleteOne': '„{target}“ kann nicht gelöscht werden: {count} Dokument verweist über strikte Beziehungsfelder darauf — {named}. Entfernen Sie zuerst diese Verweise.',
|
|
268
|
+
'operations.error.referencesBlockDelete': '„{target}“ kann nicht gelöscht werden: {count} Dokumente verweisen darauf — {named}{more}. Dieses Löschen erfolgt nur, solange nichts darauf verweist.',
|
|
269
|
+
'operations.error.referencesBlockDeleteOne': '„{target}“ kann nicht gelöscht werden: {count} Dokument verweist darauf — {named}. Dieses Löschen erfolgt nur, solange nichts darauf verweist.',
|
|
261
270
|
'operations.error.strictReferencesBlockUnpublish': 'Die Veröffentlichung von „{target}“ kann nicht zurückgenommen werden: {count} Dokumente verweisen über strikte Beziehungsfelder darauf — {named}{more}. Entfernen Sie zuerst diese Verweise.',
|
|
262
271
|
'operations.error.strictReferencesBlockUnpublishOne': 'Die Veröffentlichung von „{target}“ kann nicht zurückgenommen werden: {count} Dokument verweist über strikte Beziehungsfelder darauf — {named}. Entfernen Sie zuerst diese Verweise.',
|
|
263
272
|
// EC-589 — die Gegenrichtung von `strict: true`: Veröffentlichen verweigert, solange ein striktes Ziel fehlt oder unveröffentlicht ist.
|
|
@@ -564,7 +573,7 @@ export const deMessages = {
|
|
|
564
573
|
'cms.issueMessage.relationStrictUnpublished': 'Das Beziehungsfeld „{field}“ ist strikt: „{id}“ in „{target}“ ist nicht veröffentlicht — dieses Dokument kann erst veröffentlicht werden, wenn es veröffentlicht ist.',
|
|
565
574
|
'cms.issueMessage.assetNoAssetCollection': 'Das Medienfeld „{field}“ benötigt eine Mediensammlung, es ist aber keine registriert.',
|
|
566
575
|
'cms.issueMessage.assetSingleValued': 'Das Medienfeld „{field}“ ist einwertig, hat aber {count} Ziele.',
|
|
567
|
-
'cms.issueMessage.assetExpectsId':
|
|
576
|
+
'cms.issueMessage.assetExpectsId': "Das Medienfeld „{field}“ erwartet eine Medien-id oder { type: 'asset', id, …Felder je Verwendung } — ein Objekt braucht type: 'asset'.",
|
|
568
577
|
'cms.issueMessage.assetUnknown': 'Das Medienfeld „{field}“ verweist auf das unbekannte Medium „{asset}“.',
|
|
569
578
|
'cms.issueMessage.assetNotAccepted': 'Das Medienfeld „{field}“ akzeptiert nur {accept}, das Medium „{asset}“ ist aber {type}.',
|
|
570
579
|
'cms.issueMessage.requiredFieldMissing': 'Das Pflichtfeld „{field}“ fehlt.',
|
|
@@ -572,6 +581,7 @@ export const deMessages = {
|
|
|
572
581
|
'cms.issueMessage.preConvergenceV1': 'Das Feld „{field}“ enthält eine Inhaltsform von vor der Konvergenz (die v1-Hülle „{ version, doc }“) — die Engine liest nur noch die konvergierte Sequenz „{ version: 2, content }“. Dieser Inhalt muss neu eingespielt werden (Re-Seed).',
|
|
573
582
|
'cms.issueMessage.preConvergenceBareBlocks': 'Das Feld „{field}“ enthält eine Inhaltsform von vor der Konvergenz (eine blanke Komponentenliste) — die Engine liest nur noch die konvergierte Sequenz „{ version: 2, content }“. Dieser Inhalt muss neu eingespielt werden (Re-Seed).',
|
|
574
583
|
'cms.issueMessage.preConvergencePlaintext': 'Das Feld „{field}“ enthält eine Inhaltsform von vor der Konvergenz (unstrukturierter Alttext) — die Engine liest nur noch die konvergierte Sequenz „{ version: 2, content }“. Dieser Inhalt muss neu eingespielt werden (Re-Seed).',
|
|
584
|
+
'cms.issueMessage.untaggedSequenceComponent': 'Das Feld „{field}“ enthält die Komponente „{component}“ (Knoten „{node}“) ohne ihre Kennung „elytra/component“ in einer Inhaltsliste — die Engine liest dort nur gekennzeichnete Komponenten, daher zeigt der ganze Wert seinen Platzhalter für ungültigen Inhalt. Er wurde am Schreibweg vorbei geschrieben; speichern Sie das Feld erneut im Editor oder spielen Sie ihn neu ein (Re-Seed).',
|
|
575
585
|
'cms.issueMessage.gateUnknownCollection': 'Das Projekt deklariert keine Collection „{collection}“ — es gibt keine Regeln, nach denen sie veröffentlicht werden könnte.',
|
|
576
586
|
'cms.issueMessage.gateAssetLibraryUnready': 'Die Medienbibliothek konnte nicht gelesen werden — die Veröffentlichung ungeprüfter Medienverweise wird verweigert. Bitte erneut versuchen.',
|
|
577
587
|
'cms.issueMessage.gateNoLocales': 'Das Projekt deklariert keine Sprachen — die Veröffentlichung ohne sie wird verweigert.',
|
|
@@ -780,6 +790,8 @@ export const deMessages = {
|
|
|
780
790
|
// ─────────────────────────────────────────────────────────────────────────
|
|
781
791
|
'cms.field.rendererCrashed': 'Benutzerdefinierter Renderer abgestürzt — Standardsteuerung wird angezeigt.',
|
|
782
792
|
'cms.field.noRenderer': 'Kein Feld-Renderer für Steuerung „{control}“ registriert.',
|
|
793
|
+
'cms.field.blocksInFieldRow': 'Ein Blocks-Feld wird als Seiten-Canvas auf einem eigenen Formular-Tab bearbeitet — hier hat es keine Feldzeile.',
|
|
794
|
+
'cms.field.noControlForType': 'Keine eingebaute Steuerung für den Feldtyp „{type}“.',
|
|
783
795
|
'cms.field.itemActions': 'Elementaktionen',
|
|
784
796
|
'cms.field.moveUp': 'Nach oben',
|
|
785
797
|
'cms.field.moveDown': 'Nach unten',
|
|
@@ -1010,10 +1022,10 @@ export const deMessages = {
|
|
|
1010
1022
|
'components.index.byCategory': 'Nach Kategorie',
|
|
1011
1023
|
'components.index.guide.title': 'Projektkomponenten registrieren',
|
|
1012
1024
|
'components.index.guide.badge': 'Anleitung',
|
|
1013
|
-
'components.index.guide.intro': 'Komponenten sind Code und gehören Ihrem Repository. Registrieren Sie ein Manifest mit Eigenschaftsschemata, Standardwerten, Inspektor-Steuerelementen, Slots und Vorschauzuständen. Das Studio kann die Komponente anschließend durchsuchen, prüfen und anzeigen. Diese Anleitungen im
|
|
1025
|
+
'components.index.guide.intro': 'Komponenten sind Code und gehören Ihrem Repository. Registrieren Sie ein Manifest mit Eigenschaftsschemata, Standardwerten, Inspektor-Steuerelementen, Slots und Vorschauzuständen. Das Studio kann die Komponente anschließend durchsuchen, prüfen und anzeigen. Diese Anleitungen im docs-Ordner des Elytra-Engine-Repositorys erklären die Einzelheiten:',
|
|
1014
1026
|
'components.index.guide.doc.authoring': 'So deklarieren und registrieren Sie eine Komponente, damit das Studio sie durchsuchen, prüfen und anzeigen kann.',
|
|
1015
|
-
'components.index.guide.doc.
|
|
1016
|
-
'components.index.guide.doc.
|
|
1027
|
+
'components.index.guide.doc.components': 'Das Komponenten-Kapitel der Anleitung: Manifest und Implementierung als Paar, die Liste registrieren, Vorschauzustände, wiederverwendbare Elemente, Gestaltung.',
|
|
1028
|
+
'components.index.guide.doc.guide': 'Überblick und Kapitelverzeichnis der Anleitung: Einrichtung, Konfigurations-API, Auslieferung, CLI- und Umgebungsreferenz.',
|
|
1017
1029
|
'components.index.guide.namespaceNote': 'Komponenten sind die Liste in Ihrer Konfiguration, mit IDs Ihrer Wahl (Heading, site.Hero). Elytras eigene Komponenten sind das optionale Paket @elytracms/components — alle, eine Auswahl oder keine.',
|
|
1018
1030
|
'components.taxonomy.uncategorized': 'Ohne Kategorie',
|
|
1019
1031
|
'components.detail.tab.preview': 'Vorschau',
|
|
@@ -1129,6 +1141,11 @@ export const deMessages = {
|
|
|
1129
1141
|
'builder.reuse.madeReusablePublished': '„{name}“ wiederverwendbar gemacht und veröffentlicht.',
|
|
1130
1142
|
'builder.reuse.madeReusablePublishFailed': '„{name}“ wiederverwendbar gemacht, aber die Veröffentlichung ist fehlgeschlagen — veröffentlichen Sie es aus seinem Dokument.',
|
|
1131
1143
|
'builder.reuse.madeReusableDraft': '„{name}“ wiederverwendbar gemacht (Entwurf) — veröffentlichen Sie es, um es auf Live-Seiten anzuzeigen.',
|
|
1144
|
+
// EC-728 — Rückgängig von „Wiederverwendbar machen“: der Block ist zurück, das erstellte Dokument bleibt.
|
|
1145
|
+
'builder.reuse.undoKeptPublished': 'Rückgängig gemacht — das wiederverwendbare Element „{name}“ bleibt: Es ist veröffentlicht.',
|
|
1146
|
+
'builder.reuse.undoKeptEdited': 'Rückgängig gemacht — das wiederverwendbare Element „{name}“ bleibt: Es wurde seit dem Erstellen bearbeitet.',
|
|
1147
|
+
'builder.reuse.undoKeptReferenced': 'Rückgängig gemacht — das wiederverwendbare Element „{name}“ bleibt: Es ist an anderer Stelle eingebettet.',
|
|
1148
|
+
'builder.reuse.undoKeptFailed': 'Rückgängig gemacht — das wiederverwendbare Element „{name}“ bleibt: Es konnte nicht entfernt werden. Löschen Sie es in seiner Sammlung, wenn Sie es nicht brauchen.',
|
|
1132
1149
|
'builder.reuse.noTargetToDetach': 'Dieses Element hat kein Ziel zum Loslösen.',
|
|
1133
1150
|
'builder.reuse.noContentToDetach': 'Das referenzierte Element hat keinen Inhalt zum Loslösen.',
|
|
1134
1151
|
'builder.reuse.detachedToCopy': 'Als bearbeitbare Kopie losgelöst — die Live-Verknüpfung ist getrennt.',
|
|
@@ -1335,10 +1352,16 @@ export const deMessages = {
|
|
|
1335
1352
|
'ai.translate.skipped.unreadable': 'der gespeicherte Wert konnte nicht gelesen werden',
|
|
1336
1353
|
'ai.translate.skipped.notReturned': 'der Assistent hat dafür keinen Text geliefert',
|
|
1337
1354
|
'ai.translate.skipped.structureChanged': 'die Übersetzung hat Formatierungen, Links oder eingebettete Elemente verloren — das Original wurde beibehalten',
|
|
1355
|
+
// EC-738 — ein Bereich, dessen schreibgeschützter (oder für die KI ausgeschlossener) Inhalt anders aufgebaut ist als die Quelle.
|
|
1356
|
+
'ai.translate.skipped.locked': 'enthält Inhalte, die hier nicht geändert werden können, anders angeordnet als in der Quelle — unverändert gelassen',
|
|
1338
1357
|
// EC-378 — the update (edit-existing) proposal
|
|
1339
1358
|
'ai.update.proposalTitle': 'Änderungen an {collection}',
|
|
1340
1359
|
'ai.update.diffBefore': 'Aktuell',
|
|
1341
1360
|
'ai.update.diffAfter': 'Vorgeschlagen',
|
|
1361
|
+
'ai.create.unfilledTitle': 'Leer gelassen ({count})',
|
|
1362
|
+
'ai.create.unfilled.empty': 'der Entwurf hat keinen Wert gesetzt',
|
|
1363
|
+
'ai.create.unfilled.noCandidates': 'nichts, wonach der Assistent gesucht hat, passt dazu',
|
|
1364
|
+
'ai.create.unfilled.dropped': 'eine ID, nach der der Assistent nicht gesucht hatte, wurde entfernt',
|
|
1342
1365
|
// EC-591 — Hinweise auf der Arbeitsfläche für Rollen, die keine Komponente der Liste füllt.
|
|
1343
1366
|
'builder.roles.noStack': 'Diese Arbeitsfläche braucht eine Komponente mit der Rolle "layout.stack" — die Blöcke des Feldes werden darin angeordnet —, und die Komponenten dieses Projekts haben keine. Tragen Sie eine in die Komponentenliste Ihrer Konfiguration ein (zum Beispiel Stack aus @elytracms/components).',
|
|
1344
1367
|
'builder.roles.noGrid': 'Keine Komponente füllt die Rolle "layout.grid" — Blöcke nebeneinander ablegen (Spalten) ist deshalb aus.',
|
|
@@ -1346,9 +1369,10 @@ export const deMessages = {
|
|
|
1346
1369
|
'builder.inspector.unset': 'Nicht gesetzt',
|
|
1347
1370
|
'builder.inspector.unsetWithHint': 'Nicht gesetzt (Standard: {hint})',
|
|
1348
1371
|
// EC-586 / EC-581 (wave-0092, zone A) — canonical values and the per-FieldType definition
|
|
1349
|
-
'cms.issueMessage.nonCanonicalValue': 'Das Feld „{field}“ ist in einer nicht kanonischen Form für ein Feld vom Typ „{type}“ gespeichert — es wurde am Schreibweg vorbei geschrieben, der je Feldtyp genau eine Form speichert.
|
|
1372
|
+
'cms.issueMessage.nonCanonicalValue': 'Das Feld „{field}“ ist in einer nicht kanonischen Form für ein Feld vom Typ „{type}“ gespeichert — es wurde am Schreibweg vorbei geschrieben, der je Feldtyp genau eine Form speichert. Speichern Sie das Feld erneut im Editor oder über eine Operation, um die kanonische Form abzulegen.',
|
|
1350
1373
|
'cms.issueMessage.propsNotJudged': 'Die Komponenten-Eigenschaften im Feld „{field}“ wurden nicht geprüft: Die Seite wurde ohne Komponenten-Registry aufgelöst, daher werden sie wie gespeichert ausgeliefert und ihre Probleme nicht gemeldet.',
|
|
1351
1374
|
'cms.issueMessage.assetHoldsUrl': 'Das Asset-Feld „{field}“ enthält eine URL — ein Asset-Wert ist ein Asset aus der Mediathek, nie eine URL. Laden Sie das Bild in die Mediathek hoch und wählen Sie es aus, oder tragen Sie die Adresse eines externen Bildes in das URL-Feld der Komponente ein (beim Bild: „Image URL“).',
|
|
1375
|
+
'cms.issueMessage.slugNotSegment': 'Das Slug-Feld „{field}“ enthält „{value}“, was kein URL-Segment ist — die Slug-Regel schreibt dafür „{slug}“. Die Live-URL wird aus dem gespeicherten Slug so gebildet, wie er steht; speichern Sie den Slug, den die Regel schreibt.',
|
|
1352
1376
|
// EC-584 — die AllowList-Prüfung (Konfiguration / Registrierung).
|
|
1353
1377
|
'cms.issueMessage.emptyAllow': 'Das Feld „{field}“ deklariert ein leeres „allow“ — eine Liste erlaubt genau die genannten IDs, eine leere also nichts. Lassen Sie „allow“ weg für die Standard-Auswahl des Feldtyps, oder nennen Sie die Komponenten-IDs.',
|
|
1354
1378
|
'cms.issueMessage.unknownAllowComponent': 'Das Feld „{field}“ erlaubt „{component}“, das keine Komponente dieses Projekts ist — prüfen Sie die ID oder entfernen Sie sie aus „allow“.',
|