@seliseblocks/mailcraft 0.1.0 → 0.2.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/DOCS.md +240 -12
- package/README.md +11 -3
- package/README.md.txt +134 -0
- package/dist/mailcraft-editor.bundle.js +51 -39
- package/dist/mailcraft-editor.bundle.js.map +3 -3
- package/examples/templates/order-confirmed.html +80 -80
- package/examples/vanilla.html +242 -23
- package/package.json +7 -2
- package/src/core/assets.js +10 -15
- package/src/core/binder.js +120 -118
- package/src/core/blocks.js +14 -1
- package/src/core/css-cascade.js +117 -117
- package/src/core/editor-core.js +1530 -1492
- package/src/core/export.js +142 -55
- package/src/core/i18n/ar.js +219 -177
- package/src/core/i18n/bg.js +196 -152
- package/src/core/i18n/bn.js +218 -176
- package/src/core/i18n/ca.js +196 -152
- package/src/core/i18n/cs.js +196 -152
- package/src/core/i18n/da.js +196 -152
- package/src/core/i18n/de-CH.js +196 -152
- package/src/core/i18n/de.js +196 -152
- package/src/core/i18n/dz.js +221 -179
- package/src/core/i18n/el.js +196 -152
- package/src/core/i18n/en.js +3 -10
- package/src/core/i18n/es.js +196 -152
- package/src/core/i18n/et.js +196 -152
- package/src/core/i18n/fi.js +196 -152
- package/src/core/i18n/fr.js +196 -152
- package/src/core/i18n/hr.js +196 -152
- package/src/core/i18n/hu.js +196 -152
- package/src/core/i18n/index.js +83 -83
- package/src/core/i18n/it.js +196 -152
- package/src/core/i18n/lt.js +196 -152
- package/src/core/i18n/lv.js +196 -152
- package/src/core/i18n/nb.js +196 -152
- package/src/core/i18n/nl.js +196 -152
- package/src/core/i18n/pl.js +196 -152
- package/src/core/i18n/pt.js +196 -152
- package/src/core/i18n/ro.js +196 -152
- package/src/core/i18n/ru.js +196 -152
- package/src/core/i18n/sk.js +196 -152
- package/src/core/i18n/sl.js +196 -152
- package/src/core/i18n/sv.js +196 -152
- package/src/core/i18n/tables.js +50 -50
- package/src/core/i18n/tr.js +196 -152
- package/src/core/i18n/uk.js +196 -152
- package/src/core/icons.js +237 -235
- package/src/core/ids.js +1 -1
- package/src/core/import-html.js +1025 -959
- package/src/core/layout-style.js +100 -100
- package/src/core/parse.js +10 -10
- package/src/core/placeholder.js +15 -15
- package/src/core/sanitize.js +141 -141
- package/src/core/storage-limits.js +184 -184
- package/src/core/storage.js +85 -85
- package/src/core/theme.js +1 -1
- package/src/core/variables.js +11 -11
- package/src/index.js +9 -9
- package/src/mailcraft-editor.js +26 -14
- package/src/render/block-body.js +49 -6
- package/src/render/canvas.js +31 -2
- package/src/render/fields.js +602 -588
- package/src/render/focus-preserve.js +158 -158
- package/src/render/rte.js +241 -212
- package/src/render/screenshot.js +132 -132
- package/src/render/story.js +415 -415
- package/src/render/style.js +8 -0
- package/types/index.d.ts +419 -0
package/src/core/i18n/de.js
CHANGED
|
@@ -1,152 +1,196 @@
|
|
|
1
|
-
/** German (Deutsch) — `de`. AI-drafted, not reviewed by a native speaker. Correctable one key at a time via `.messages` overrides. */
|
|
2
|
-
export const DE = {
|
|
3
|
-
'action.undoHint': 'Rückgängig — ⌘Z',
|
|
4
|
-
'action.redoHint': 'Wiederholen — ⌘⇧Z',
|
|
5
|
-
'action.chromeToDark': 'Dunkel',
|
|
6
|
-
'action.chromeToLight': 'Hell',
|
|
7
|
-
'action.chromeHint': 'Editor-Design hell / dunkel',
|
|
8
|
-
'action.
|
|
9
|
-
'action.
|
|
10
|
-
'action.
|
|
11
|
-
'action.
|
|
12
|
-
'action.
|
|
13
|
-
'action.
|
|
14
|
-
'
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'
|
|
18
|
-
'device.
|
|
19
|
-
'device.
|
|
20
|
-
'
|
|
21
|
-
'
|
|
22
|
-
'status.
|
|
23
|
-
'
|
|
24
|
-
'
|
|
25
|
-
'
|
|
26
|
-
'tab.
|
|
27
|
-
'tab.
|
|
28
|
-
'tab.
|
|
29
|
-
'tab.
|
|
30
|
-
'tab.
|
|
31
|
-
'tab.
|
|
32
|
-
'tab.
|
|
33
|
-
'tab.
|
|
34
|
-
'tab.
|
|
35
|
-
'tab.
|
|
36
|
-
'tab.
|
|
37
|
-
'tab.
|
|
38
|
-
'
|
|
39
|
-
'
|
|
40
|
-
'inspector.
|
|
41
|
-
'inspector.
|
|
42
|
-
'inspector.
|
|
43
|
-
'
|
|
44
|
-
'
|
|
45
|
-
'
|
|
46
|
-
|
|
47
|
-
'inspector.
|
|
48
|
-
|
|
49
|
-
'
|
|
50
|
-
'shortcut.
|
|
51
|
-
'shortcut.
|
|
52
|
-
'shortcut.
|
|
53
|
-
'
|
|
54
|
-
'
|
|
55
|
-
'
|
|
56
|
-
'
|
|
57
|
-
'rows.
|
|
58
|
-
'rows.
|
|
59
|
-
'rows.
|
|
60
|
-
'rows.
|
|
61
|
-
'rows.
|
|
62
|
-
'rows.
|
|
63
|
-
'rows.
|
|
64
|
-
|
|
65
|
-
'rows.
|
|
66
|
-
|
|
67
|
-
'
|
|
68
|
-
'files.
|
|
69
|
-
'
|
|
70
|
-
'
|
|
71
|
-
'layers.
|
|
72
|
-
'layers.
|
|
73
|
-
'
|
|
74
|
-
'
|
|
75
|
-
'
|
|
76
|
-
'vars.
|
|
77
|
-
'vars.
|
|
78
|
-
'vars.
|
|
79
|
-
'vars.
|
|
80
|
-
'vars.
|
|
81
|
-
'vars.
|
|
82
|
-
'vars.
|
|
83
|
-
'
|
|
84
|
-
'
|
|
85
|
-
'modal.
|
|
86
|
-
'
|
|
87
|
-
'
|
|
88
|
-
'library.
|
|
89
|
-
'
|
|
90
|
-
'library.
|
|
91
|
-
'library.
|
|
92
|
-
'library.
|
|
93
|
-
'library.
|
|
94
|
-
'library.
|
|
95
|
-
'
|
|
96
|
-
'
|
|
97
|
-
'
|
|
98
|
-
'
|
|
99
|
-
'
|
|
100
|
-
'
|
|
101
|
-
'
|
|
102
|
-
'
|
|
103
|
-
'
|
|
104
|
-
'
|
|
105
|
-
'
|
|
106
|
-
'
|
|
107
|
-
'
|
|
108
|
-
'
|
|
109
|
-
'
|
|
110
|
-
'
|
|
111
|
-
'
|
|
112
|
-
'
|
|
113
|
-
'
|
|
114
|
-
|
|
115
|
-
'
|
|
116
|
-
'
|
|
117
|
-
'
|
|
118
|
-
'
|
|
119
|
-
'
|
|
120
|
-
'
|
|
121
|
-
'modal.
|
|
122
|
-
'
|
|
123
|
-
'
|
|
124
|
-
'
|
|
125
|
-
'
|
|
126
|
-
'
|
|
127
|
-
'
|
|
128
|
-
'
|
|
129
|
-
'
|
|
130
|
-
'
|
|
131
|
-
'
|
|
132
|
-
'
|
|
133
|
-
|
|
134
|
-
'
|
|
135
|
-
'toast.
|
|
136
|
-
'toast.
|
|
137
|
-
'
|
|
138
|
-
'
|
|
139
|
-
'
|
|
140
|
-
'
|
|
141
|
-
'
|
|
142
|
-
'
|
|
143
|
-
'
|
|
144
|
-
'
|
|
145
|
-
'
|
|
146
|
-
'
|
|
147
|
-
'
|
|
148
|
-
'
|
|
149
|
-
'
|
|
150
|
-
'
|
|
151
|
-
|
|
152
|
-
|
|
1
|
+
/** German (Deutsch) — `de`. AI-drafted, not reviewed by a native speaker. Correctable one key at a time via `.messages` overrides. */
|
|
2
|
+
export const DE = {
|
|
3
|
+
'action.undoHint': 'Rückgängig — ⌘Z',
|
|
4
|
+
'action.redoHint': 'Wiederholen — ⌘⇧Z',
|
|
5
|
+
'action.chromeToDark': 'Dunkel',
|
|
6
|
+
'action.chromeToLight': 'Hell',
|
|
7
|
+
'action.chromeHint': 'Editor-Design hell / dunkel',
|
|
8
|
+
'action.chromeHintToDark': 'Dunkelmodus',
|
|
9
|
+
'action.chromeHintToLight': 'Hellmodus',
|
|
10
|
+
'action.aiDraft': 'Entwurf',
|
|
11
|
+
'action.aiDraftHint': 'E-Mail-Inhalt mit KI entwerfen',
|
|
12
|
+
'action.code': 'Code',
|
|
13
|
+
'action.codeHint': 'Rohes HTML mit Live-Vorschau bearbeiten',
|
|
14
|
+
'action.preview': 'Vorschau',
|
|
15
|
+
'action.previewHint': 'E-Mail-Vorschau',
|
|
16
|
+
'action.export': 'Exportieren',
|
|
17
|
+
'action.exportHint': 'E-Mail exportieren',
|
|
18
|
+
'device.desktop': 'Desktop',
|
|
19
|
+
'device.desktopHint': 'Desktop-Breite',
|
|
20
|
+
'device.mobile': 'Mobil',
|
|
21
|
+
'device.mobileHint': 'Mobile Breite',
|
|
22
|
+
'status.autosaveOn': 'Autospeichern aktiv',
|
|
23
|
+
'status.saved': 'gespeichert {time}',
|
|
24
|
+
'status.saveFailed': 'nicht gespeichert — Speicher voll',
|
|
25
|
+
'canvas.meta': '{rows} Zeilen · {blocks} Blöcke · {width}px',
|
|
26
|
+
'tab.design': 'Stil',
|
|
27
|
+
'tab.designHint': 'Auswahl gestalten',
|
|
28
|
+
'tab.blocks': 'Blöcke',
|
|
29
|
+
'tab.blocksHint': 'Inhaltsblöcke und Variablen',
|
|
30
|
+
'tab.rows': 'Abschn.',
|
|
31
|
+
'tab.rowsHint': 'Abschnittslayouts und Canvas-Modell',
|
|
32
|
+
'tab.files': 'Dateien',
|
|
33
|
+
'tab.filesHint': 'Asset-Bibliothek',
|
|
34
|
+
'tab.layers': 'Struktur',
|
|
35
|
+
'tab.layersHint': 'Dokumentstruktur',
|
|
36
|
+
'tab.settings': 'Einstellungen',
|
|
37
|
+
'tab.settingsHint': 'E-Mail-Einstellungen',
|
|
38
|
+
'tab.data': 'Var.',
|
|
39
|
+
'tab.dataHint': 'Von deinem Code bereitgestellte Variablen',
|
|
40
|
+
'inspector.blockProperties': 'Blockeigenschaften',
|
|
41
|
+
'inspector.sectionProperties': 'Abschnittseigenschaften',
|
|
42
|
+
'inspector.title': 'Inspektor',
|
|
43
|
+
'inspector.sectionLabel': 'Abschnitt',
|
|
44
|
+
'inspector.nothingSelected': 'Nichts ausgewählt',
|
|
45
|
+
'action.duplicateHint': 'Duplizieren — ⌘D',
|
|
46
|
+
'action.deleteHint': 'Löschen — ⌫',
|
|
47
|
+
'inspector.emptyBody':
|
|
48
|
+
'Wähle eine Zeile oder einen Block auf der Canvas aus, um ihn hier zu gestalten. Ziehe Blöcke aus dem Tab <strong style="color: var(--ed-text); font-weight: 600;">Blöcke</strong>; Doppelklick auf beliebigen Text, um ihn direkt zu bearbeiten.',
|
|
49
|
+
'inspector.shortcuts': 'Kurzbefehle',
|
|
50
|
+
'shortcut.undoRedo': '⌘Z / ⌘⇧Z — Rückgängig, Wiederholen',
|
|
51
|
+
'shortcut.duplicate': '⌘D — Auswahl duplizieren',
|
|
52
|
+
'shortcut.delete': '⌫ — Auswahl löschen',
|
|
53
|
+
'shortcut.export': '⌘E — HTML exportieren',
|
|
54
|
+
'shortcut.escape': 'ESC — Auswahl aufheben, schließen',
|
|
55
|
+
'blocks.dragHint': 'Auf die Canvas ziehen',
|
|
56
|
+
'blocks.count': '{count} Blöcke',
|
|
57
|
+
'rows.sectionLayouts': 'Abschnittslayouts',
|
|
58
|
+
'rows.customMarkup': 'Eigenes Markup',
|
|
59
|
+
'rows.htmlRowHint': 'Zum Einfügen ziehen oder klicken — eine randlose Zeile, die du mit rohem HTML füllst',
|
|
60
|
+
'rows.rawHtmlSection': 'Roher HTML-Abschnitt',
|
|
61
|
+
'rows.rawHtmlDesc': 'Randloser Abschnitt, dein eigenes Markup, weiterhin ziehbar',
|
|
62
|
+
'rows.canvasModel': 'Canvas-Modell',
|
|
63
|
+
'rows.modeRowBased': 'Zeilenbasiert',
|
|
64
|
+
'rows.modeFreeStack': 'Freier Stapel',
|
|
65
|
+
'rows.hintRows':
|
|
66
|
+
'Abschnittsbasiert: Zuerst ein Layout ablegen, dann Blöcke in seine Spalten ziehen — jeder Abschnitt hat eigene Hintergrund-, Rahmen-, Flex- oder Grid-Einstellungen.',
|
|
67
|
+
'rows.hintStack': 'Freier Stapel: Ohne Layouts — jeder abgelegte Block wird zu einem eigenen, vollbreiten Abschnitt, der Reihe nach gestapelt.',
|
|
68
|
+
'files.libraryCount': 'Bibliothek — {count} Dateien',
|
|
69
|
+
'files.openManager': 'Dateimanager öffnen',
|
|
70
|
+
'files.dragToCanvas': 'Ziehe eine beliebige Datei direkt auf die Canvas, um sie als Bildblock einzufügen.',
|
|
71
|
+
'layers.structure': 'Struktur',
|
|
72
|
+
'layers.sectionSingle': 'Abschnitt',
|
|
73
|
+
'layers.sectionMulti': 'Abschnitt · {count} Spalten',
|
|
74
|
+
'layers.column': 'Spalte {index}',
|
|
75
|
+
'layers.blockCount': '{count} Blk.',
|
|
76
|
+
'vars.title': 'Variablen',
|
|
77
|
+
'vars.fromCode': '{count} aus deinem Code',
|
|
78
|
+
'vars.declaredNote': 'Von deiner Anwendung deklariert — die Canvas zeigt immer das Token, nie einen Wert.',
|
|
79
|
+
'vars.filterPlaceholder': 'Variablen filtern…',
|
|
80
|
+
'vars.insertHint': 'Klicken, um in ausgewählten Text, Überschrift oder Button einzufügen',
|
|
81
|
+
'vars.insert': 'einfügen',
|
|
82
|
+
'vars.noMatch': 'Keine Variable entspricht diesem Filter.',
|
|
83
|
+
'vars.noneDeclared': 'Deine Anwendung hat noch keine Variablen deklariert.',
|
|
84
|
+
'vars.rteHint': 'Beim Bearbeiten von Text kannst du eine Variable auch direkt aus dem Dropdown der Inline-Symbolleiste auswählen.',
|
|
85
|
+
'modal.fileManager': 'Dateimanager',
|
|
86
|
+
'modal.assetsTitle': 'Assets',
|
|
87
|
+
'modal.replaceImage': 'Bild ersetzen',
|
|
88
|
+
'library.searchPlaceholder': 'Dateien suchen…',
|
|
89
|
+
'action.upload': 'Hochladen',
|
|
90
|
+
'library.clickToPlace': 'Datei anklicken zum Platzieren · oder Datei auf die Canvas ziehen',
|
|
91
|
+
'library.clickToReplace': 'Datei anklicken, um das ausgewählte Bild zu ersetzen',
|
|
92
|
+
'library.storageLabel': '{count} Dateien · {size}',
|
|
93
|
+
'library.folders': 'Ordner',
|
|
94
|
+
'library.dropHint': 'Bilddateien hier zum Hochladen ablegen — oder den Hochladen-Button nutzen.',
|
|
95
|
+
'library.deleteFileHint': 'Datei löschen',
|
|
96
|
+
'library.del': 'LÖSCH',
|
|
97
|
+
'toast.assetDeleted': '{name} gelöscht',
|
|
98
|
+
'library.allFiles': 'Alle Dateien',
|
|
99
|
+
'library.loadMore': 'Mehr laden',
|
|
100
|
+
'library.empty': 'Hier gibt es noch keine Dateien.',
|
|
101
|
+
'storage.loading': 'Dateien werden geladen…',
|
|
102
|
+
'storage.uploading': '{count} werden hochgeladen…',
|
|
103
|
+
'storage.errLoadFailed': 'Die Dateibibliothek konnte nicht geladen werden — {reason}',
|
|
104
|
+
'storage.errNoLimits': 'Uploads sind deaktiviert: Diese Anwendung hat keine Upload-Limits gesetzt.',
|
|
105
|
+
'storage.errNoAccept': 'Uploads sind deaktiviert: Es wurden keine Dateiformate freigegeben.',
|
|
106
|
+
'storage.errNoMaxBytes': 'Uploads sind deaktiviert: Es wurde keine maximale Dateigröße festgelegt.',
|
|
107
|
+
'storage.errTooLarge': '{name} ist {size} groß — das Limit liegt bei {max}.',
|
|
108
|
+
'storage.errFormat': '{name} ist eine {type}-Datei, die hier nicht erlaubt ist.',
|
|
109
|
+
'storage.errSvg': '{name} ist eine SVG-Datei, die diese Anwendung nicht akzeptiert.',
|
|
110
|
+
'storage.errDimensions': '{name} ist {w}×{ht}px — das Limit liegt bei {maxW}×{maxH}px.',
|
|
111
|
+
'storage.errTooMany': 'Es können nur {max} Dateien auf einmal hochgeladen werden.',
|
|
112
|
+
'storage.errUnreadable': '{name} ist kein lesbares Bild.',
|
|
113
|
+
'storage.errUploadFailed': '{name} konnte nicht hochgeladen werden — {reason}',
|
|
114
|
+
'storage.errDeleteFailed': '{name} konnte nicht gelöscht werden — {reason}',
|
|
115
|
+
'modal.export': 'Exportieren',
|
|
116
|
+
'modal.exportTitle': 'Tabellenbasiertes E-Mail-HTML',
|
|
117
|
+
'export.copy': 'Kopieren',
|
|
118
|
+
'export.copied': 'Kopiert',
|
|
119
|
+
'action.download': 'Herunterladen',
|
|
120
|
+
'export.meta': '{kb} KB · Tabellen + Inline-Stile · Outlook-sichere Breiten',
|
|
121
|
+
'modal.rawHtmlTitle': 'Rohes HTML, Live-Vorschau',
|
|
122
|
+
'code.statusEdited': 'Code-Ansicht — bearbeitet — Vorschau live, noch nicht übernommen',
|
|
123
|
+
'code.statusSynced': 'Code-Ansicht — synchron mit der Canvas',
|
|
124
|
+
'action.reload': 'Neu laden',
|
|
125
|
+
'action.reloadHint': 'Quelltext aus der Canvas neu laden',
|
|
126
|
+
'action.applyToCanvas': 'Auf Canvas anwenden',
|
|
127
|
+
'action.applyToCanvasHint': 'Quelltext zurück in bearbeitbare Zeilen umwandeln',
|
|
128
|
+
'action.closeWithoutApplyingHint': 'Ohne Anwenden schließen',
|
|
129
|
+
'code.source': 'Quelltext',
|
|
130
|
+
'code.livePreview': 'Live-Vorschau',
|
|
131
|
+
'code.liveHtmlPreviewTitle': 'Live-HTML-Vorschau',
|
|
132
|
+
'code.applyNote':
|
|
133
|
+
'Beim Anwenden wird jede oberste Tabellenzeile in eine Canvas-Zeile umgewandelt, die du weiterhin auswählen, neu anordnen und löschen kannst — handgeschriebenes Markup übersteht den Vorgang unverändert.',
|
|
134
|
+
'code.meta': '{kb} KB · {lines} Zeilen',
|
|
135
|
+
'toast.sourceReloaded': 'Quelltext aus der Canvas neu geladen',
|
|
136
|
+
'toast.sourceAppliedOne': 'Quelltext angewendet — 1 Zeile auf der Canvas',
|
|
137
|
+
'toast.sourceAppliedMany': 'Quelltext angewendet — {rows} Zeilen auf der Canvas',
|
|
138
|
+
'toast.parseError': 'Dieses HTML konnte nicht verarbeitet werden',
|
|
139
|
+
'modal.aiDraft': 'KI-Schreibassistent',
|
|
140
|
+
'modal.aiDraftTitle': 'E-Mail mit KI entwerfen',
|
|
141
|
+
'ai.disclosure': 'Die KI erstellt Vorschläge aus Ihrem Briefing. Prüfen und bearbeiten Sie das Ergebnis vor dem Versand.',
|
|
142
|
+
'ai.goal': 'Ziel',
|
|
143
|
+
'ai.tone': 'Ton',
|
|
144
|
+
'ai.briefLabel': 'Worum geht es in dieser E-Mail?',
|
|
145
|
+
'ai.briefPlaceholder': 'z. B. Herbstkollektion, 15 % für Abonnenten, kostenloser Versand ab 150 €',
|
|
146
|
+
'ai.generate': 'Text generieren',
|
|
147
|
+
'ai.writing': 'Wird geschrieben…',
|
|
148
|
+
'ai.kindHeadline': 'Überschrift',
|
|
149
|
+
'ai.kindBody': 'Fließtext',
|
|
150
|
+
'ai.kindButton': 'Button-Text',
|
|
151
|
+
'ai.actionInsertHeading': 'Als Überschrift einfügen',
|
|
152
|
+
'ai.actionInsertText': 'Als Textblock einfügen',
|
|
153
|
+
'ai.actionInsertButton': 'Als Button einfügen',
|
|
154
|
+
'toast.headingAdded': 'Überschrift hinzugefügt',
|
|
155
|
+
'toast.textBlockAdded': 'Textblock hinzugefügt',
|
|
156
|
+
'toast.buttonAdded': 'Button hinzugefügt',
|
|
157
|
+
'preview.kickerMobile': 'Vorschau — Mobil 375px',
|
|
158
|
+
'preview.kickerDesktop': 'Vorschau — Desktop {width}px',
|
|
159
|
+
'action.close': 'Schließen',
|
|
160
|
+
'toast.duplicated': 'Dupliziert',
|
|
161
|
+
'toast.fileUploadedOne': '1 Datei hochgeladen',
|
|
162
|
+
'toast.fileUploadedMany': '{count} Dateien hochgeladen',
|
|
163
|
+
'toast.imageReplaced': 'Bild ersetzt',
|
|
164
|
+
'toast.imageAdded': 'Bild zur Canvas hinzugefügt',
|
|
165
|
+
'toast.htmlCopied': 'HTML in die Zwischenablage kopiert',
|
|
166
|
+
'toast.templateLoaded': '{name} geladen',
|
|
167
|
+
'toast.snippetDefaultLabel': 'Snippet',
|
|
168
|
+
'toast.snippetInserted': '{name} eingefügt',
|
|
169
|
+
'toast.snippetCopied': '{name} kopiert — wähle einen Textblock zum Einfügen aus',
|
|
170
|
+
'rte.textStyle': 'Textstil',
|
|
171
|
+
'rte.mergeTags': 'Platzhalter',
|
|
172
|
+
'rte.noMergeTags': 'Keine Platzhalter verfügbar',
|
|
173
|
+
'rte.textColor': 'Textfarbe',
|
|
174
|
+
'rte.highlightColor': 'Markierungsfarbe',
|
|
175
|
+
'rte.removeHighlight': 'Markierung entfernen',
|
|
176
|
+
'rte.clearFormatting': 'Formatierung entfernen',
|
|
177
|
+
'action.downloadPng': 'PNG herunterladen',
|
|
178
|
+
'action.screenshot': 'Screenshot',
|
|
179
|
+
'action.screenshotHint': 'Die gesamte Vorlage als Bild ansehen und herunterladen',
|
|
180
|
+
'toast.pngSaved': 'Screenshot heruntergeladen',
|
|
181
|
+
'toast.pngFailed': 'Screenshot fehlgeschlagen — ein externes Bild konnte nicht geladen werden',
|
|
182
|
+
'toast.pngCopied': 'Screenshot in die Zwischenablage kopiert',
|
|
183
|
+
'toast.pngCopyFailed': 'Dieser Browser hat kein Bild in der Zwischenablage akzeptiert',
|
|
184
|
+
'story.kicker': 'Screenshot',
|
|
185
|
+
'story.rendering': 'Screenshot wird erstellt',
|
|
186
|
+
'story.renderingHint': 'Jeder Block wird in 2× gezeichnet — bei einer langen Vorlage dauert das einen Moment.',
|
|
187
|
+
'story.failed': 'Screenshot fehlgeschlagen',
|
|
188
|
+
'story.failedHint': 'Ein Bild in der Vorlage konnte für die Aufnahme nicht geladen werden.',
|
|
189
|
+
'story.retry': 'Erneut versuchen',
|
|
190
|
+
'story.play': 'Abspielen',
|
|
191
|
+
'story.pause': 'Pause',
|
|
192
|
+
'story.replay': 'Erneut abspielen',
|
|
193
|
+
'story.copy': 'Kopieren',
|
|
194
|
+
'story.meta': '{w}×{h} · Ansicht {i} von {n}',
|
|
195
|
+
'footer.poweredBy': 'Bereitgestellt von SELISE Blocks © 2026',
|
|
196
|
+
};
|