@seliseblocks/mailcraft 0.1.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.
Files changed (89) hide show
  1. package/DOCS.md +557 -0
  2. package/LICENSE +21 -0
  3. package/README.md +126 -0
  4. package/dist/mailcraft-editor.bundle.js +519 -0
  5. package/dist/mailcraft-editor.bundle.js.map +7 -0
  6. package/examples/templates/activate-your-account.html +54 -0
  7. package/examples/templates/back-in-stock.html +63 -0
  8. package/examples/templates/cart-left-behind.html +74 -0
  9. package/examples/templates/community-giveaway.html +81 -0
  10. package/examples/templates/frontend-futures-invite.html +69 -0
  11. package/examples/templates/give-25-get-25.html +69 -0
  12. package/examples/templates/invoice-paid.html +77 -0
  13. package/examples/templates/meet-nova-launch.html +69 -0
  14. package/examples/templates/mega-weekend-sale.html +57 -0
  15. package/examples/templates/order-confirmed.html +80 -0
  16. package/examples/templates/rate-your-headphones.html +71 -0
  17. package/examples/templates/reset-your-password.html +54 -0
  18. package/examples/templates/thankyou-promo-code.html +68 -0
  19. package/examples/templates/the-sunday-brief.html +47 -0
  20. package/examples/templates/welcome-to-your-workspace.html +62 -0
  21. package/examples/templates/your-order-shipped.html +74 -0
  22. package/examples/templates/your-password-was-changed.html +58 -0
  23. package/examples/templates/your-signin-code.html +58 -0
  24. package/examples/vanilla.html +1574 -0
  25. package/package.json +66 -0
  26. package/src/core/accent.js +194 -0
  27. package/src/core/assets.js +15 -0
  28. package/src/core/binder.js +119 -0
  29. package/src/core/blocks.js +256 -0
  30. package/src/core/css-cascade.js +117 -0
  31. package/src/core/editor-core.js +1492 -0
  32. package/src/core/export.js +58 -0
  33. package/src/core/footer.js +73 -0
  34. package/src/core/i18n/ar.js +177 -0
  35. package/src/core/i18n/bg.js +152 -0
  36. package/src/core/i18n/bn.js +176 -0
  37. package/src/core/i18n/ca.js +152 -0
  38. package/src/core/i18n/cs.js +152 -0
  39. package/src/core/i18n/da.js +152 -0
  40. package/src/core/i18n/de-CH.js +152 -0
  41. package/src/core/i18n/de.js +152 -0
  42. package/src/core/i18n/dz.js +179 -0
  43. package/src/core/i18n/el.js +152 -0
  44. package/src/core/i18n/en.js +269 -0
  45. package/src/core/i18n/es.js +152 -0
  46. package/src/core/i18n/et.js +152 -0
  47. package/src/core/i18n/fi.js +152 -0
  48. package/src/core/i18n/fr.js +152 -0
  49. package/src/core/i18n/hr.js +152 -0
  50. package/src/core/i18n/hu.js +152 -0
  51. package/src/core/i18n/index.js +83 -0
  52. package/src/core/i18n/it.js +152 -0
  53. package/src/core/i18n/lt.js +152 -0
  54. package/src/core/i18n/lv.js +152 -0
  55. package/src/core/i18n/nb.js +152 -0
  56. package/src/core/i18n/nl.js +152 -0
  57. package/src/core/i18n/pl.js +152 -0
  58. package/src/core/i18n/pt.js +152 -0
  59. package/src/core/i18n/ro.js +152 -0
  60. package/src/core/i18n/ru.js +152 -0
  61. package/src/core/i18n/sk.js +152 -0
  62. package/src/core/i18n/sl.js +152 -0
  63. package/src/core/i18n/sv.js +152 -0
  64. package/src/core/i18n/tables.js +50 -0
  65. package/src/core/i18n/tr.js +152 -0
  66. package/src/core/i18n/uk.js +152 -0
  67. package/src/core/icons.js +235 -0
  68. package/src/core/ids.js +1 -0
  69. package/src/core/import-html.js +959 -0
  70. package/src/core/layout-style.js +115 -0
  71. package/src/core/parse.js +10 -0
  72. package/src/core/placeholder.js +15 -0
  73. package/src/core/sanitize.js +141 -0
  74. package/src/core/storage-limits.js +184 -0
  75. package/src/core/storage.js +85 -0
  76. package/src/core/theme.js +1 -0
  77. package/src/core/toolbar.js +67 -0
  78. package/src/core/variables.js +11 -0
  79. package/src/create-editor.js +109 -0
  80. package/src/index.js +9 -0
  81. package/src/mailcraft-editor.js +1862 -0
  82. package/src/render/block-body.js +295 -0
  83. package/src/render/canvas.js +284 -0
  84. package/src/render/fields.js +609 -0
  85. package/src/render/focus-preserve.js +158 -0
  86. package/src/render/rte.js +212 -0
  87. package/src/render/screenshot.js +132 -0
  88. package/src/render/story.js +415 -0
  89. package/src/render/style.js +452 -0
@@ -0,0 +1,152 @@
1
+ /** Latvian (Latviešu) — `lv`. AI-drafted, not reviewed by a native speaker. Correctable one key at a time via `.messages` overrides. */
2
+ export const LV = {
3
+ 'action.undoHint': 'Atsaukt — ⌘Z',
4
+ 'action.redoHint': 'Atkārtot — ⌘⇧Z',
5
+ 'action.chromeToDark': 'Tumšs',
6
+ 'action.chromeToLight': 'Gaišs',
7
+ 'action.chromeHint': 'Redaktora tēma gaiša / tumša',
8
+ 'action.aiCopy': 'Teksts',
9
+ 'action.aiCopyHint': 'Sastādīt tekstu ar MI',
10
+ 'action.code': 'Kods',
11
+ 'action.codeHint': 'Rediģēt neapstrādātu HTML ar tiešraides priekšskatījumu',
12
+ 'action.preview': 'Priekšskatījums',
13
+ 'action.export': 'Eksportēt',
14
+ 'device.desktop': 'Dators',
15
+ 'device.desktopHint': 'Datora platums',
16
+ 'device.mobile': 'Mobilā ierīce',
17
+ 'device.mobileHint': 'Mobilās ierīces platums',
18
+ 'device.dark': 'Tumšs',
19
+ 'device.darkHint': 'Tumšais iesūtnes režīms',
20
+ 'status.autosaveOn': 'automātiskā saglabāšana ieslēgta',
21
+ 'status.saved': 'saglabāts {time}',
22
+ 'status.saveFailed': 'nav saglabāts — krātuve pilna',
23
+ 'canvas.meta': '{rows} rindas · {blocks} bloki · {width}px',
24
+ 'tab.design': 'Stils',
25
+ 'tab.designHint': 'Noformēt atlasi',
26
+ 'tab.blocks': 'Bloki',
27
+ 'tab.blocksHint': 'Satura bloki un mainīgie',
28
+ 'tab.rows': 'Sadaļas',
29
+ 'tab.rowsHint': 'Sadaļu izkārtojumi un audekla modelis',
30
+ 'tab.files': 'Faili',
31
+ 'tab.filesHint': 'Resursu bibliotēka',
32
+ 'tab.layers': 'Struktūra',
33
+ 'tab.layersHint': 'Dokumenta struktūra',
34
+ 'tab.theme': 'Tēma',
35
+ 'tab.themeHint': 'Globālie stili',
36
+ 'tab.data': 'Main.',
37
+ 'tab.dataHint': 'Jūsu koda nodrošinātie mainīgie',
38
+ 'inspector.blockProperties': 'Bloka īpašības',
39
+ 'inspector.sectionProperties': 'Sadaļas īpašības',
40
+ 'inspector.title': 'Inspektors',
41
+ 'inspector.sectionLabel': 'Sadaļa',
42
+ 'inspector.nothingSelected': 'Nekas nav atlasīts',
43
+ 'action.duplicateHint': 'Dublēt — ⌘D',
44
+ 'action.deleteHint': 'Dzēst — ⌫',
45
+ 'inspector.emptyBody':
46
+ 'Atlasiet rindu vai bloku uz audekla, lai to šeit noformētu. Velciet blokus no cilnes <strong style="color: var(--ed-text); font-weight: 600;">Bloki</strong>; veiciet dubultklikšķi uz jebkura teksta, lai to rediģētu tieši uz vietas.',
47
+ 'inspector.shortcuts': 'Īsinājumtaustiņi',
48
+ 'shortcut.undoRedo': '⌘Z / ⌘⇧Z — atsaukt, atkārtot',
49
+ 'shortcut.duplicate': '⌘D — dublēt atlasi',
50
+ 'shortcut.delete': '⌫ — dzēst atlasi',
51
+ 'shortcut.export': '⌘E — eksportēt HTML',
52
+ 'shortcut.escape': 'ESC — atcelt atlasi, aizvērt',
53
+ 'blocks.dragHint': 'Velciet uz audeklu',
54
+ 'blocks.count': '{count} bloki',
55
+ 'rows.sectionLayouts': 'Sadaļu izkārtojumi',
56
+ 'rows.customMarkup': 'Pielāgots kods',
57
+ 'rows.htmlRowHint': 'Velciet, lai ievietotu, vai noklikšķiniet, lai pievienotu — pilna platuma rindu, ko aizpildāt ar neapstrādātu HTML',
58
+ 'rows.rawHtmlSection': 'Neapstrādāta HTML sadaļa',
59
+ 'rows.rawHtmlDesc': 'Pilna platuma sadaļa, jūsu pašu kods, joprojām velkama',
60
+ 'rows.canvasModel': 'Audekla modelis',
61
+ 'rows.modeRowBased': 'Balstīts uz rindām',
62
+ 'rows.modeFreeStack': 'Brīva kaudze',
63
+ 'rows.hintRows':
64
+ 'Balstīts uz sadaļām: vispirms nometiet izkārtojumu, tad blokus tā kolonnās — katrai sadaļai ir sava fona, apmales, flex vai režģa iestatījumi.',
65
+ 'rows.hintStack': 'Brīva kaudze: bez izkārtojumiem — katrs nomestais bloks kļūst par savu pilna platuma sadaļu, sakrautu secībā.',
66
+ 'files.libraryCount': 'Bibliotēka — {count} faili',
67
+ 'files.openManager': 'Atvērt failu pārvaldnieku',
68
+ 'files.dragToCanvas': 'Velciet jebkuru failu tieši uz audekla, lai novietotu to kā attēla bloku.',
69
+ 'layers.structure': 'Struktūra',
70
+ 'layers.sectionSingle': 'Sadaļa',
71
+ 'layers.sectionMulti': 'Sadaļa · {count} kolonnas',
72
+ 'layers.blockCount': '{count} bl.',
73
+ 'theme.globalStyles': 'Globālie stili',
74
+ 'vars.title': 'Mainīgie',
75
+ 'vars.fromCode': '{count} no jūsu koda',
76
+ 'vars.declaredNote': 'Jūsu lietotnes deklarēti — audekls vienmēr rāda marķieri, nekad vērtību.',
77
+ 'vars.filterPlaceholder': 'Filtrēt mainīgos…',
78
+ 'vars.insertHint': 'Noklikšķiniet, lai ievietotu atlasītajā tekstā, virsrakstā vai pogā',
79
+ 'vars.insert': 'ievietot',
80
+ 'vars.noMatch': 'Neviens mainīgais neatbilst šim filtram.',
81
+ 'vars.noneDeclared': 'Jūsu lietotne vēl nav deklarējusi nevienu mainīgo.',
82
+ 'vars.rteHint': 'Rediģējot tekstu, jūs varat arī izvēlēties mainīgo tieši no iegultās rīkjoslas nolaižamās izvēlnes.',
83
+ 'modal.fileManager': 'Failu pārvaldnieks',
84
+ 'modal.assetsTitle': 'Resursi',
85
+ 'modal.replaceImage': 'Aizstāt attēlu',
86
+ 'library.searchPlaceholder': 'Meklēt failus…',
87
+ 'action.upload': 'Augšupielādēt',
88
+ 'library.clickToPlace': 'Noklikšķiniet uz faila, lai to novietotu · vai velciet failu uz audeklu',
89
+ 'library.clickToReplace': 'Noklikšķiniet uz faila, lai aizstātu atlasīto attēlu',
90
+ 'library.storageLabel': '{count} faili · {size}',
91
+ 'library.folders': 'Mapes',
92
+ 'library.dropHint': 'Nometiet attēlu failus šeit, lai tos augšupielādētu — vai izmantojiet pogu Augšupielādēt.',
93
+ 'library.deleteFileHint': 'Dzēst failu',
94
+ 'library.del': 'DZĒST',
95
+ 'toast.assetDeleted': '{name} dzēsts',
96
+ 'modal.export': 'Eksportēt',
97
+ 'modal.exportTitle': 'Uz tabulām balstīts e-pasta HTML',
98
+ 'export.copy': 'Kopēt',
99
+ 'export.copied': 'Nokopēts',
100
+ 'action.download': 'Lejupielādēt',
101
+ 'export.meta': '{kb} KB · tabulas + iegultie stili · Outlook drošie platumi',
102
+ 'modal.rawHtmlTitle': 'Neapstrādāts HTML, tiešraides priekšskatījums',
103
+ 'code.statusEdited': 'Koda skats — rediģēts — priekšskatījums tiešraidē, vēl nav lietots',
104
+ 'code.statusSynced': 'Koda skats — sinhronizēts ar audeklu',
105
+ 'action.reload': 'Ielādēt no jauna',
106
+ 'action.reloadHint': 'Ielādēt avotu no jauna no audekla',
107
+ 'action.applyToCanvas': 'Lietot audeklam',
108
+ 'action.applyToCanvasHint': 'Analizēt avotu atpakaļ rediģējamās rindās',
109
+ 'action.closeWithoutApplyingHint': 'Aizvērt bez lietošanas',
110
+ 'code.source': 'Avots',
111
+ 'code.livePreview': 'Tiešraides priekšskatījums',
112
+ 'code.liveHtmlPreviewTitle': 'HTML tiešraides priekšskatījums',
113
+ 'code.applyNote':
114
+ 'Lietošana analizē katru augšējā līmeņa tabulas rindu audekla rindā, ko joprojām varat atlasīt, pārkārtot un dzēst — ar roku rakstīts kods pāri notikumam paliek nemainīgs.',
115
+ 'code.meta': '{kb} KB · {lines} rindas',
116
+ 'toast.sourceReloaded': 'Avots ielādēts no jauna no audekla',
117
+ 'toast.sourceAppliedOne': 'Avots lietots — 1 rinda uz audekla',
118
+ 'toast.sourceAppliedMany': 'Avots lietots — {rows} rindas uz audekla',
119
+ 'toast.parseError': 'Šo HTML neizdevās analizēt',
120
+ 'modal.copyAssist': 'Teksta palīgs',
121
+ 'modal.draftCopyTitle': 'Sastādīt tekstu šai kampaņai',
122
+ 'ai.goal': 'Mērķis',
123
+ 'ai.tone': 'Tonis',
124
+ 'ai.briefLabel': 'Par ko ir šis e-pasts?',
125
+ 'ai.briefPlaceholder': 'piem., rudens kolekcija, 15% abonentiem, bezmaksas piegāde virs 150 €',
126
+ 'ai.generate': 'Ģenerēt tekstu',
127
+ 'ai.writing': 'Notiek rakstīšana…',
128
+ 'ai.kindHeadline': 'Virsraksts',
129
+ 'ai.kindBody': 'Pamatteksts',
130
+ 'ai.kindButton': 'Pogas teksts',
131
+ 'ai.actionInsertHeading': 'Ievietot kā virsrakstu',
132
+ 'ai.actionInsertText': 'Ievietot kā teksta bloku',
133
+ 'ai.actionInsertButton': 'Ievietot kā pogu',
134
+ 'toast.headingAdded': 'Virsraksts pievienots',
135
+ 'toast.textBlockAdded': 'Teksta bloks pievienots',
136
+ 'toast.buttonAdded': 'Poga pievienota',
137
+ 'preview.kickerMobile': 'Priekšskatījums — mobilā ierīce 375px',
138
+ 'preview.kickerDark': 'Priekšskatījums — tumšā iesūtne',
139
+ 'preview.kickerDesktop': 'Priekšskatījums — dators {width}px',
140
+ 'action.close': 'Aizvērt',
141
+ 'toast.duplicated': 'Dublēts',
142
+ 'toast.fileUploadedOne': 'Augšupielādēts 1 fails',
143
+ 'toast.fileUploadedMany': 'Augšupielādēti {count} faili',
144
+ 'toast.imageReplaced': 'Attēls aizstāts',
145
+ 'toast.imageAdded': 'Attēls pievienots audeklam',
146
+ 'toast.htmlCopied': 'HTML nokopēts starpliktuvē',
147
+ 'toast.templateLoaded': '{name} ielādēts',
148
+ 'toast.snippetDefaultLabel': 'Fragments',
149
+ 'toast.snippetInserted': '{name} ievietots',
150
+ 'toast.snippetCopied': '{name} nokopēts — atlasiet teksta bloku, lai to ievietotu',
151
+ };
152
+
@@ -0,0 +1,152 @@
1
+ /** Norwegian Bokmål (Norsk bokmål) — `nb`. AI-drafted, not reviewed by a native speaker. Correctable one key at a time via `.messages` overrides. */
2
+ export const NB = {
3
+ 'action.undoHint': 'Angre — ⌘Z',
4
+ 'action.redoHint': 'Gjør om — ⌘⇧Z',
5
+ 'action.chromeToDark': 'Mørk',
6
+ 'action.chromeToLight': 'Lys',
7
+ 'action.chromeHint': 'Redigeringstema lys / mørk',
8
+ 'action.aiCopy': 'Tekst',
9
+ 'action.aiCopyHint': 'Skriv tekst med AI',
10
+ 'action.code': 'Kode',
11
+ 'action.codeHint': 'Rediger rå HTML med direkte forhåndsvisning',
12
+ 'action.preview': 'Forhåndsvisning',
13
+ 'action.export': 'Eksporter',
14
+ 'device.desktop': 'Datamaskin',
15
+ 'device.desktopHint': 'Bredde for datamaskin',
16
+ 'device.mobile': 'Mobil',
17
+ 'device.mobileHint': 'Bredde for mobil',
18
+ 'device.dark': 'Mørk',
19
+ 'device.darkHint': 'Mørk modus for innboks',
20
+ 'status.autosaveOn': 'automatisk lagring på',
21
+ 'status.saved': 'lagret {time}',
22
+ 'status.saveFailed': 'ikke lagret — lagringsplassen er full',
23
+ 'canvas.meta': '{rows} rader · {blocks} blokker · {width}px',
24
+ 'tab.design': 'Stil',
25
+ 'tab.designHint': 'Formater utvalget',
26
+ 'tab.blocks': 'Blokker',
27
+ 'tab.blocksHint': 'Innholdsblokker og variabler',
28
+ 'tab.rows': 'Seksjoner',
29
+ 'tab.rowsHint': 'Seksjonslayouter og lerretsmodell',
30
+ 'tab.files': 'Filer',
31
+ 'tab.filesHint': 'Ressursbibliotek',
32
+ 'tab.layers': 'Struktur',
33
+ 'tab.layersHint': 'Dokumentstruktur',
34
+ 'tab.theme': 'Tema',
35
+ 'tab.themeHint': 'Globale stiler',
36
+ 'tab.data': 'Var.',
37
+ 'tab.dataHint': 'Variabler levert av koden din',
38
+ 'inspector.blockProperties': 'Blokkegenskaper',
39
+ 'inspector.sectionProperties': 'Seksjonsegenskaper',
40
+ 'inspector.title': 'Inspektør',
41
+ 'inspector.sectionLabel': 'Seksjon',
42
+ 'inspector.nothingSelected': 'Ingenting valgt',
43
+ 'action.duplicateHint': 'Dupliser — ⌘D',
44
+ 'action.deleteHint': 'Slett — ⌫',
45
+ 'inspector.emptyBody':
46
+ 'Velg en rad eller en blokk på lerretet for å formatere den her. Dra blokker fra fanen <strong style="color: var(--ed-text); font-weight: 600;">Blokker</strong>; dobbeltklikk på tekst for å redigere direkte.',
47
+ 'inspector.shortcuts': 'Snarveier',
48
+ 'shortcut.undoRedo': '⌘Z / ⌘⇧Z — angre, gjør om',
49
+ 'shortcut.duplicate': '⌘D — dupliser utvalg',
50
+ 'shortcut.delete': '⌫ — slett utvalg',
51
+ 'shortcut.export': '⌘E — eksporter HTML',
52
+ 'shortcut.escape': 'ESC — fjern utvalg, lukk',
53
+ 'blocks.dragHint': 'Dra til lerretet',
54
+ 'blocks.count': '{count} blokker',
55
+ 'rows.sectionLayouts': 'Seksjonslayouter',
56
+ 'rows.customMarkup': 'Egendefinert kode',
57
+ 'rows.htmlRowHint': 'Dra for å sette inn, eller klikk for å legge til — en fullbredde-rad du fyller med rå HTML',
58
+ 'rows.rawHtmlSection': 'Rå HTML-seksjon',
59
+ 'rows.rawHtmlDesc': 'Fullbredde-seksjon, din egen kode, fortsatt drabar',
60
+ 'rows.canvasModel': 'Lerretsmodell',
61
+ 'rows.modeRowBased': 'Radbasert',
62
+ 'rows.modeFreeStack': 'Fri stabel',
63
+ 'rows.hintRows':
64
+ 'Seksjonsbasert: slipp en layout først, deretter blokker i kolonnene — hver seksjon har egen bakgrunn, kant, flex- eller rutenettinnstillinger.',
65
+ 'rows.hintStack': 'Fri stabel: uten layouter — hver blokk du slipper blir sin egen fullbredde-seksjon, stablet i rekkefølge.',
66
+ 'files.libraryCount': 'Bibliotek — {count} filer',
67
+ 'files.openManager': 'Åpne filbehandling',
68
+ 'files.dragToCanvas': 'Dra en hvilken som helst fil direkte til lerretet for å plassere den som en bildeblokk.',
69
+ 'layers.structure': 'Struktur',
70
+ 'layers.sectionSingle': 'Seksjon',
71
+ 'layers.sectionMulti': 'Seksjon · {count} kol.',
72
+ 'layers.blockCount': '{count} bl.',
73
+ 'theme.globalStyles': 'Globale stiler',
74
+ 'vars.title': 'Variabler',
75
+ 'vars.fromCode': '{count} fra koden din',
76
+ 'vars.declaredNote': 'Erklært av applikasjonen din — lerretet viser alltid tokenet, aldri en verdi.',
77
+ 'vars.filterPlaceholder': 'Filtrer variabler…',
78
+ 'vars.insertHint': 'Klikk for å sette inn i valgt tekst, overskrift eller knapp',
79
+ 'vars.insert': 'sett inn',
80
+ 'vars.noMatch': 'Ingen variabel samsvarer med dette filteret.',
81
+ 'vars.noneDeclared': 'Applikasjonen din har ennå ikke erklært noen variabler.',
82
+ 'vars.rteHint': 'Når du redigerer tekst kan du også velge en variabel direkte fra rullegardinmenyen i den innebygde verktøylinjen.',
83
+ 'modal.fileManager': 'Filbehandling',
84
+ 'modal.assetsTitle': 'Ressurser',
85
+ 'modal.replaceImage': 'Erstatt bilde',
86
+ 'library.searchPlaceholder': 'Søk i filer…',
87
+ 'action.upload': 'Last opp',
88
+ 'library.clickToPlace': 'Klikk på en fil for å plassere den · eller dra en fil til lerretet',
89
+ 'library.clickToReplace': 'Klikk på en fil for å erstatte det valgte bildet',
90
+ 'library.storageLabel': '{count} filer · {size}',
91
+ 'library.folders': 'Mapper',
92
+ 'library.dropHint': 'Slipp bildefiler her for å laste opp — eller bruk Last opp-knappen.',
93
+ 'library.deleteFileHint': 'Slett fil',
94
+ 'library.del': 'SLETT',
95
+ 'toast.assetDeleted': '{name} slettet',
96
+ 'modal.export': 'Eksporter',
97
+ 'modal.exportTitle': 'Tabellbasert e-post-HTML',
98
+ 'export.copy': 'Kopier',
99
+ 'export.copied': 'Kopiert',
100
+ 'action.download': 'Last ned',
101
+ 'export.meta': '{kb} KB · tabeller + inline-stiler · Outlook-sikre bredder',
102
+ 'modal.rawHtmlTitle': 'Rå HTML, direkte forhåndsvisning',
103
+ 'code.statusEdited': 'Kodevisning — redigert — forhåndsvisning live, ikke brukt ennå',
104
+ 'code.statusSynced': 'Kodevisning — synkronisert med lerretet',
105
+ 'action.reload': 'Last inn på nytt',
106
+ 'action.reloadHint': 'Last inn kilden på nytt fra lerretet',
107
+ 'action.applyToCanvas': 'Bruk på lerretet',
108
+ 'action.applyToCanvasHint': 'Tolk kilden på nytt til redigerbare rader',
109
+ 'action.closeWithoutApplyingHint': 'Lukk uten å bruke',
110
+ 'code.source': 'Kilde',
111
+ 'code.livePreview': 'Direkte forhåndsvisning',
112
+ 'code.liveHtmlPreviewTitle': 'Direkte HTML-forhåndsvisning',
113
+ 'code.applyNote':
114
+ 'Bruk tolker hver tabellrad på øverste nivå til en lerretsrad du fortsatt kan velge, omorganisere og slette — håndskrevet kode overlever prosessen uendret.',
115
+ 'code.meta': '{kb} KB · {lines} linjer',
116
+ 'toast.sourceReloaded': 'Kilden lastet inn på nytt fra lerretet',
117
+ 'toast.sourceAppliedOne': 'Kilde brukt — 1 rad på lerretet',
118
+ 'toast.sourceAppliedMany': 'Kilde brukt — {rows} rader på lerretet',
119
+ 'toast.parseError': 'Kunne ikke tolke den HTML-en',
120
+ 'modal.copyAssist': 'Tekstassistent',
121
+ 'modal.draftCopyTitle': 'Skriv tekst for denne kampanjen',
122
+ 'ai.goal': 'Mål',
123
+ 'ai.tone': 'Tone',
124
+ 'ai.briefLabel': 'Hva handler denne e-posten om?',
125
+ 'ai.briefPlaceholder': 'f.eks. Høstkolleksjon, 15% for abonnenter, fri frakt over 1500 kr',
126
+ 'ai.generate': 'Generer tekst',
127
+ 'ai.writing': 'Skriver…',
128
+ 'ai.kindHeadline': 'Overskrift',
129
+ 'ai.kindBody': 'Brødtekst',
130
+ 'ai.kindButton': 'Knappetekst',
131
+ 'ai.actionInsertHeading': 'Sett inn som overskrift',
132
+ 'ai.actionInsertText': 'Sett inn som tekstblokk',
133
+ 'ai.actionInsertButton': 'Sett inn som knapp',
134
+ 'toast.headingAdded': 'Overskrift lagt til',
135
+ 'toast.textBlockAdded': 'Tekstblokk lagt til',
136
+ 'toast.buttonAdded': 'Knapp lagt til',
137
+ 'preview.kickerMobile': 'Forhåndsvisning — mobil 375px',
138
+ 'preview.kickerDark': 'Forhåndsvisning — mørk innboks',
139
+ 'preview.kickerDesktop': 'Forhåndsvisning — datamaskin {width}px',
140
+ 'action.close': 'Lukk',
141
+ 'toast.duplicated': 'Duplisert',
142
+ 'toast.fileUploadedOne': '1 fil lastet opp',
143
+ 'toast.fileUploadedMany': '{count} filer lastet opp',
144
+ 'toast.imageReplaced': 'Bilde erstattet',
145
+ 'toast.imageAdded': 'Bilde lagt til på lerretet',
146
+ 'toast.htmlCopied': 'HTML kopiert til utklippstavlen',
147
+ 'toast.templateLoaded': '{name} lastet inn',
148
+ 'toast.snippetDefaultLabel': 'Utdrag',
149
+ 'toast.snippetInserted': '{name} satt inn',
150
+ 'toast.snippetCopied': '{name} kopiert — velg en tekstblokk for å sette den inn',
151
+ };
152
+
@@ -0,0 +1,152 @@
1
+ /** Dutch (Nederlands) — `nl`. AI-drafted, not reviewed by a native speaker. Correctable one key at a time via `.messages` overrides. */
2
+ export const NL = {
3
+ 'action.undoHint': 'Ongedaan maken — ⌘Z',
4
+ 'action.redoHint': 'Opnieuw — ⌘⇧Z',
5
+ 'action.chromeToDark': 'Donker',
6
+ 'action.chromeToLight': 'Licht',
7
+ 'action.chromeHint': 'Editorthema licht / donker',
8
+ 'action.aiCopy': 'Tekst',
9
+ 'action.aiCopyHint': 'Tekst opstellen met AI',
10
+ 'action.code': 'Code',
11
+ 'action.codeHint': 'Ruwe HTML bewerken met live voorbeeld',
12
+ 'action.preview': 'Voorbeeld',
13
+ 'action.export': 'Exporteren',
14
+ 'device.desktop': 'Desktop',
15
+ 'device.desktopHint': 'Desktopbreedte',
16
+ 'device.mobile': 'Mobiel',
17
+ 'device.mobileHint': 'Mobiele breedte',
18
+ 'device.dark': 'Donker',
19
+ 'device.darkHint': 'Donkere inbox',
20
+ 'status.autosaveOn': 'automatisch opslaan aan',
21
+ 'status.saved': 'opgeslagen {time}',
22
+ 'status.saveFailed': 'niet opgeslagen — opslag vol',
23
+ 'canvas.meta': '{rows} rijen · {blocks} blokken · {width}px',
24
+ 'tab.design': 'Stijl',
25
+ 'tab.designHint': 'Selectie stylen',
26
+ 'tab.blocks': 'Blokken',
27
+ 'tab.blocksHint': 'Inhoudsblokken en variabelen',
28
+ 'tab.rows': 'Secties',
29
+ 'tab.rowsHint': 'Sectielay-outs en canvasmodel',
30
+ 'tab.files': 'Bestanden',
31
+ 'tab.filesHint': 'Bibliotheek met bestanden',
32
+ 'tab.layers': 'Structuur',
33
+ 'tab.layersHint': 'Documentstructuur',
34
+ 'tab.theme': 'Thema',
35
+ 'tab.themeHint': 'Globale stijlen',
36
+ 'tab.data': 'Var.',
37
+ 'tab.dataHint': 'Variabelen aangeleverd door jouw code',
38
+ 'inspector.blockProperties': 'Blokeigenschappen',
39
+ 'inspector.sectionProperties': 'Sectie-eigenschappen',
40
+ 'inspector.title': 'Inspecteur',
41
+ 'inspector.sectionLabel': 'Sectie',
42
+ 'inspector.nothingSelected': 'Niets geselecteerd',
43
+ 'action.duplicateHint': 'Dupliceren — ⌘D',
44
+ 'action.deleteHint': 'Verwijderen — ⌫',
45
+ 'inspector.emptyBody':
46
+ 'Kies een rij of blok op het canvas om het hier te stylen. Sleep blokken vanuit het tabblad <strong style="color: var(--ed-text); font-weight: 600;">Blokken</strong>; dubbelklik op tekst om deze direct te bewerken.',
47
+ 'inspector.shortcuts': 'Sneltoetsen',
48
+ 'shortcut.undoRedo': '⌘Z / ⌘⇧Z — ongedaan maken, opnieuw',
49
+ 'shortcut.duplicate': '⌘D — selectie dupliceren',
50
+ 'shortcut.delete': '⌫ — selectie verwijderen',
51
+ 'shortcut.export': '⌘E — HTML exporteren',
52
+ 'shortcut.escape': 'ESC — selectie opheffen, sluiten',
53
+ 'blocks.dragHint': 'Sleep naar het canvas',
54
+ 'blocks.count': '{count} blokken',
55
+ 'rows.sectionLayouts': 'Sectielay-outs',
56
+ 'rows.customMarkup': 'Aangepaste opmaak',
57
+ 'rows.htmlRowHint': 'Sleep om in te voegen, of klik om toe te voegen — een volledige rij die je vult met ruwe HTML',
58
+ 'rows.rawHtmlSection': 'Ruwe HTML-sectie',
59
+ 'rows.rawHtmlDesc': 'Volledige sectie, jouw eigen opmaak, nog steeds versleepbaar',
60
+ 'rows.canvasModel': 'Canvasmodel',
61
+ 'rows.modeRowBased': 'Op rijen gebaseerd',
62
+ 'rows.modeFreeStack': 'Vrije stapel',
63
+ 'rows.hintRows':
64
+ 'Op secties gebaseerd: plaats eerst een lay-out, sleep dan blokken in de kolommen — elke sectie heeft zijn eigen achtergrond, rand, flex- of gridinstellingen.',
65
+ 'rows.hintStack': 'Vrije stapel: zonder lay-outs — elk blok dat je plaatst wordt een eigen sectie over de volle breedte, op volgorde gestapeld.',
66
+ 'files.libraryCount': 'Bibliotheek — {count} bestanden',
67
+ 'files.openManager': 'Bestandsbeheer openen',
68
+ 'files.dragToCanvas': 'Sleep elk bestand direct naar het canvas om het als afbeeldingsblok te plaatsen.',
69
+ 'layers.structure': 'Structuur',
70
+ 'layers.sectionSingle': 'Sectie',
71
+ 'layers.sectionMulti': 'Sectie · {count} kol.',
72
+ 'layers.blockCount': '{count} bl.',
73
+ 'theme.globalStyles': 'Globale stijlen',
74
+ 'vars.title': 'Variabelen',
75
+ 'vars.fromCode': '{count} uit jouw code',
76
+ 'vars.declaredNote': 'Gedeclareerd door jouw applicatie — het canvas toont altijd het token, nooit een waarde.',
77
+ 'vars.filterPlaceholder': 'Variabelen filteren…',
78
+ 'vars.insertHint': 'Klik om in te voegen in geselecteerde tekst, kop of knop',
79
+ 'vars.insert': 'invoegen',
80
+ 'vars.noMatch': 'Geen variabele komt overeen met dit filter.',
81
+ 'vars.noneDeclared': 'Jouw applicatie heeft nog geen variabelen gedeclareerd.',
82
+ 'vars.rteHint': 'Tijdens het bewerken van tekst kun je ook een variabele kiezen via het dropdownmenu van de inline werkbalk.',
83
+ 'modal.fileManager': 'Bestandsbeheer',
84
+ 'modal.assetsTitle': 'Bestanden',
85
+ 'modal.replaceImage': 'Afbeelding vervangen',
86
+ 'library.searchPlaceholder': 'Bestanden zoeken…',
87
+ 'action.upload': 'Uploaden',
88
+ 'library.clickToPlace': 'Klik op een bestand om te plaatsen · of sleep een bestand naar het canvas',
89
+ 'library.clickToReplace': 'Klik op een bestand om de geselecteerde afbeelding te vervangen',
90
+ 'library.storageLabel': '{count} bestanden · {size}',
91
+ 'library.folders': 'Mappen',
92
+ 'library.dropHint': 'Zet afbeeldingsbestanden hier neer om te uploaden — of gebruik de knop Uploaden.',
93
+ 'library.deleteFileHint': 'Bestand verwijderen',
94
+ 'library.del': 'VERW',
95
+ 'toast.assetDeleted': '{name} verwijderd',
96
+ 'modal.export': 'Exporteren',
97
+ 'modal.exportTitle': 'Op tabellen gebaseerde e-mail-HTML',
98
+ 'export.copy': 'Kopiëren',
99
+ 'export.copied': 'Gekopieerd',
100
+ 'action.download': 'Downloaden',
101
+ 'export.meta': '{kb} KB · tabellen + inline stijlen · Outlook-veilige breedtes',
102
+ 'modal.rawHtmlTitle': 'Ruwe HTML, live voorbeeld',
103
+ 'code.statusEdited': 'Codeweergave — bewerkt — voorbeeld live, nog niet toegepast',
104
+ 'code.statusSynced': 'Codeweergave — gesynchroniseerd met het canvas',
105
+ 'action.reload': 'Herladen',
106
+ 'action.reloadHint': 'Bron herladen vanuit het canvas',
107
+ 'action.applyToCanvas': 'Toepassen op canvas',
108
+ 'action.applyToCanvasHint': 'Bron opnieuw ontleden tot bewerkbare rijen',
109
+ 'action.closeWithoutApplyingHint': 'Sluiten zonder toe te passen',
110
+ 'code.source': 'Bron',
111
+ 'code.livePreview': 'Live voorbeeld',
112
+ 'code.liveHtmlPreviewTitle': 'Live HTML-voorbeeld',
113
+ 'code.applyNote':
114
+ 'Toepassen ontleedt elke tabelrij op het hoogste niveau tot een canvasrij die je nog kunt selecteren, herschikken en verwijderen — handgeschreven opmaak overleeft de omzetting.',
115
+ 'code.meta': '{kb} KB · {lines} regels',
116
+ 'toast.sourceReloaded': 'Bron herladen vanuit het canvas',
117
+ 'toast.sourceAppliedOne': 'Bron toegepast — 1 rij op het canvas',
118
+ 'toast.sourceAppliedMany': 'Bron toegepast — {rows} rijen op het canvas',
119
+ 'toast.parseError': 'Kan die HTML niet ontleden',
120
+ 'modal.copyAssist': 'Tekstassistent',
121
+ 'modal.draftCopyTitle': 'Tekst opstellen voor deze campagne',
122
+ 'ai.goal': 'Doel',
123
+ 'ai.tone': 'Toon',
124
+ 'ai.briefLabel': 'Waar gaat deze e-mail over?',
125
+ 'ai.briefPlaceholder': 'bijv. Herfstcollectie, 15% voor abonnees, gratis verzending vanaf €150',
126
+ 'ai.generate': 'Tekst genereren',
127
+ 'ai.writing': 'Bezig met schrijven…',
128
+ 'ai.kindHeadline': 'Kop',
129
+ 'ai.kindBody': 'Hoofdtekst',
130
+ 'ai.kindButton': 'Knoptekst',
131
+ 'ai.actionInsertHeading': 'Invoegen als kop',
132
+ 'ai.actionInsertText': 'Invoegen als tekstblok',
133
+ 'ai.actionInsertButton': 'Invoegen als knop',
134
+ 'toast.headingAdded': 'Kop toegevoegd',
135
+ 'toast.textBlockAdded': 'Tekstblok toegevoegd',
136
+ 'toast.buttonAdded': 'Knop toegevoegd',
137
+ 'preview.kickerMobile': 'Voorbeeld — mobiel 375px',
138
+ 'preview.kickerDark': 'Voorbeeld — donkere inbox',
139
+ 'preview.kickerDesktop': 'Voorbeeld — desktop {width}px',
140
+ 'action.close': 'Sluiten',
141
+ 'toast.duplicated': 'Gedupliceerd',
142
+ 'toast.fileUploadedOne': '1 bestand geüpload',
143
+ 'toast.fileUploadedMany': '{count} bestanden geüpload',
144
+ 'toast.imageReplaced': 'Afbeelding vervangen',
145
+ 'toast.imageAdded': 'Afbeelding toegevoegd aan canvas',
146
+ 'toast.htmlCopied': 'HTML gekopieerd naar klembord',
147
+ 'toast.templateLoaded': '{name} geladen',
148
+ 'toast.snippetDefaultLabel': 'Fragment',
149
+ 'toast.snippetInserted': '{name} ingevoegd',
150
+ 'toast.snippetCopied': '{name} gekopieerd — selecteer een tekstblok om in te voegen',
151
+ };
152
+
@@ -0,0 +1,152 @@
1
+ /** Polish (Polski) — `pl`. AI-drafted, not reviewed by a native speaker. Correctable one key at a time via `.messages` overrides. */
2
+ export const PL = {
3
+ 'action.undoHint': 'Cofnij — ⌘Z',
4
+ 'action.redoHint': 'Ponów — ⌘⇧Z',
5
+ 'action.chromeToDark': 'Ciemny',
6
+ 'action.chromeToLight': 'Jasny',
7
+ 'action.chromeHint': 'Motyw edytora jasny / ciemny',
8
+ 'action.aiCopy': 'Tekst',
9
+ 'action.aiCopyHint': 'Napisz tekst przy pomocy AI',
10
+ 'action.code': 'Kod',
11
+ 'action.codeHint': 'Edytuj surowy HTML z podglądem na żywo',
12
+ 'action.preview': 'Podgląd',
13
+ 'action.export': 'Eksportuj',
14
+ 'device.desktop': 'Komputer',
15
+ 'device.desktopHint': 'Szerokość na komputerze',
16
+ 'device.mobile': 'Telefon',
17
+ 'device.mobileHint': 'Szerokość na telefonie',
18
+ 'device.dark': 'Ciemny',
19
+ 'device.darkHint': 'Ciemny tryb skrzynki',
20
+ 'status.autosaveOn': 'automatyczny zapis włączony',
21
+ 'status.saved': 'zapisano {time}',
22
+ 'status.saveFailed': 'nie zapisano — brak miejsca',
23
+ 'canvas.meta': '{rows} wierszy · {blocks} bloków · {width}px',
24
+ 'tab.design': 'Styl',
25
+ 'tab.designHint': 'Stylizuj zaznaczenie',
26
+ 'tab.blocks': 'Bloki',
27
+ 'tab.blocksHint': 'Bloki treści i zmienne',
28
+ 'tab.rows': 'Sekcje',
29
+ 'tab.rowsHint': 'Układy sekcji i model płótna',
30
+ 'tab.files': 'Pliki',
31
+ 'tab.filesHint': 'Biblioteka zasobów',
32
+ 'tab.layers': 'Struktura',
33
+ 'tab.layersHint': 'Struktura dokumentu',
34
+ 'tab.theme': 'Motyw',
35
+ 'tab.themeHint': 'Style globalne',
36
+ 'tab.data': 'Zmien.',
37
+ 'tab.dataHint': 'Zmienne dostarczone przez Twój kod',
38
+ 'inspector.blockProperties': 'Właściwości bloku',
39
+ 'inspector.sectionProperties': 'Właściwości sekcji',
40
+ 'inspector.title': 'Inspektor',
41
+ 'inspector.sectionLabel': 'Sekcja',
42
+ 'inspector.nothingSelected': 'Nic nie zaznaczono',
43
+ 'action.duplicateHint': 'Duplikuj — ⌘D',
44
+ 'action.deleteHint': 'Usuń — ⌫',
45
+ 'inspector.emptyBody':
46
+ 'Wybierz wiersz lub blok na płótnie, aby go tutaj stylizować. Przeciągnij bloki z zakładki <strong style="color: var(--ed-text); font-weight: 600;">Bloki</strong>; kliknij dwukrotnie dowolny tekst, aby edytować go w miejscu.',
47
+ 'inspector.shortcuts': 'Skróty',
48
+ 'shortcut.undoRedo': '⌘Z / ⌘⇧Z — cofnij, ponów',
49
+ 'shortcut.duplicate': '⌘D — duplikuj zaznaczenie',
50
+ 'shortcut.delete': '⌫ — usuń zaznaczenie',
51
+ 'shortcut.export': '⌘E — eksportuj HTML',
52
+ 'shortcut.escape': 'ESC — odznacz, zamknij',
53
+ 'blocks.dragHint': 'Przeciągnij na płótno',
54
+ 'blocks.count': '{count} bloków',
55
+ 'rows.sectionLayouts': 'Układy sekcji',
56
+ 'rows.customMarkup': 'Własny znacznik',
57
+ 'rows.htmlRowHint': 'Przeciągnij, aby wstawić, lub kliknij, aby dodać — pełnowymiarowy wiersz, który wypełniasz surowym HTML',
58
+ 'rows.rawHtmlSection': 'Sekcja surowego HTML',
59
+ 'rows.rawHtmlDesc': 'Pełnowymiarowa sekcja, Twój własny kod, wciąż przeciągalna',
60
+ 'rows.canvasModel': 'Model płótna',
61
+ 'rows.modeRowBased': 'Oparty na wierszach',
62
+ 'rows.modeFreeStack': 'Wolny stos',
63
+ 'rows.hintRows':
64
+ 'Oparty na sekcjach: najpierw upuść układ, potem bloki w jego kolumnach — każda sekcja ma własne tło, obramowanie, ustawienia flex lub siatki.',
65
+ 'rows.hintStack': 'Wolny stos: bez układów — każdy upuszczony blok staje się osobną, pełnowymiarową sekcją, ułożoną w kolejności.',
66
+ 'files.libraryCount': 'Biblioteka — {count} plików',
67
+ 'files.openManager': 'Otwórz menedżera plików',
68
+ 'files.dragToCanvas': 'Przeciągnij dowolny plik bezpośrednio na płótno, aby umieścić go jako blok obrazu.',
69
+ 'layers.structure': 'Struktura',
70
+ 'layers.sectionSingle': 'Sekcja',
71
+ 'layers.sectionMulti': 'Sekcja · {count} kol.',
72
+ 'layers.blockCount': '{count} bl.',
73
+ 'theme.globalStyles': 'Style globalne',
74
+ 'vars.title': 'Zmienne',
75
+ 'vars.fromCode': '{count} z Twojego kodu',
76
+ 'vars.declaredNote': 'Zadeklarowane przez Twoją aplikację — płótno zawsze pokazuje token, nigdy wartość.',
77
+ 'vars.filterPlaceholder': 'Filtruj zmienne…',
78
+ 'vars.insertHint': 'Kliknij, aby wstawić do zaznaczonego tekstu, nagłówka lub przycisku',
79
+ 'vars.insert': 'wstaw',
80
+ 'vars.noMatch': 'Żadna zmienna nie pasuje do tego filtra.',
81
+ 'vars.noneDeclared': 'Twoja aplikacja nie zadeklarowała jeszcze żadnych zmiennych.',
82
+ 'vars.rteHint': 'Podczas edycji tekstu możesz też wybrać zmienną bezpośrednio z rozwijanego menu paska narzędzi.',
83
+ 'modal.fileManager': 'Menedżer plików',
84
+ 'modal.assetsTitle': 'Zasoby',
85
+ 'modal.replaceImage': 'Zastąp obraz',
86
+ 'library.searchPlaceholder': 'Szukaj plików…',
87
+ 'action.upload': 'Prześlij',
88
+ 'library.clickToPlace': 'Kliknij plik, aby go umieścić · lub przeciągnij plik na płótno',
89
+ 'library.clickToReplace': 'Kliknij plik, aby zastąpić zaznaczony obraz',
90
+ 'library.storageLabel': '{count} plików · {size}',
91
+ 'library.folders': 'Foldery',
92
+ 'library.dropHint': 'Upuść tutaj pliki obrazów, aby je przesłać — lub użyj przycisku Prześlij.',
93
+ 'library.deleteFileHint': 'Usuń plik',
94
+ 'library.del': 'USUŃ',
95
+ 'toast.assetDeleted': 'Usunięto {name}',
96
+ 'modal.export': 'Eksportuj',
97
+ 'modal.exportTitle': 'HTML e-maila oparty na tabelach',
98
+ 'export.copy': 'Kopiuj',
99
+ 'export.copied': 'Skopiowano',
100
+ 'action.download': 'Pobierz',
101
+ 'export.meta': '{kb} KB · tabele + style inline · szerokości bezpieczne dla Outlooka',
102
+ 'modal.rawHtmlTitle': 'Surowy HTML, podgląd na żywo',
103
+ 'code.statusEdited': 'Widok kodu — edytowany — podgląd na żywo, jeszcze nie zastosowano',
104
+ 'code.statusSynced': 'Widok kodu — zsynchronizowany z płótnem',
105
+ 'action.reload': 'Odśwież',
106
+ 'action.reloadHint': 'Odśwież źródło z płótna',
107
+ 'action.applyToCanvas': 'Zastosuj do płótna',
108
+ 'action.applyToCanvasHint': 'Przeanalizuj źródło z powrotem na edytowalne wiersze',
109
+ 'action.closeWithoutApplyingHint': 'Zamknij bez zastosowania',
110
+ 'code.source': 'Źródło',
111
+ 'code.livePreview': 'Podgląd na żywo',
112
+ 'code.liveHtmlPreviewTitle': 'Podgląd HTML na żywo',
113
+ 'code.applyNote':
114
+ 'Zastosowanie analizuje każdy wiersz tabeli najwyższego poziomu na wiersz płótna, który nadal można zaznaczać, zmieniać kolejność i usuwać — ręcznie napisany kod przetrwa ten proces.',
115
+ 'code.meta': '{kb} KB · {lines} wierszy',
116
+ 'toast.sourceReloaded': 'Odświeżono źródło z płótna',
117
+ 'toast.sourceAppliedOne': 'Zastosowano źródło — 1 wiersz na płótnie',
118
+ 'toast.sourceAppliedMany': 'Zastosowano źródło — {rows} wierszy na płótnie',
119
+ 'toast.parseError': 'Nie udało się przeanalizować tego HTML',
120
+ 'modal.copyAssist': 'Asystent tekstu',
121
+ 'modal.draftCopyTitle': 'Napisz tekst dla tej kampanii',
122
+ 'ai.goal': 'Cel',
123
+ 'ai.tone': 'Ton',
124
+ 'ai.briefLabel': 'Czego dotyczy ten e-mail?',
125
+ 'ai.briefPlaceholder': 'np. Kolekcja jesienna, 15% dla subskrybentów, darmowa dostawa od 150 zł',
126
+ 'ai.generate': 'Generuj tekst',
127
+ 'ai.writing': 'Piszę…',
128
+ 'ai.kindHeadline': 'Nagłówek',
129
+ 'ai.kindBody': 'Treść główna',
130
+ 'ai.kindButton': 'Tekst przycisku',
131
+ 'ai.actionInsertHeading': 'Wstaw jako nagłówek',
132
+ 'ai.actionInsertText': 'Wstaw jako blok tekstu',
133
+ 'ai.actionInsertButton': 'Wstaw jako przycisk',
134
+ 'toast.headingAdded': 'Dodano nagłówek',
135
+ 'toast.textBlockAdded': 'Dodano blok tekstu',
136
+ 'toast.buttonAdded': 'Dodano przycisk',
137
+ 'preview.kickerMobile': 'Podgląd — telefon 375px',
138
+ 'preview.kickerDark': 'Podgląd — ciemna skrzynka',
139
+ 'preview.kickerDesktop': 'Podgląd — komputer {width}px',
140
+ 'action.close': 'Zamknij',
141
+ 'toast.duplicated': 'Zduplikowano',
142
+ 'toast.fileUploadedOne': 'Przesłano 1 plik',
143
+ 'toast.fileUploadedMany': 'Przesłano {count} plików',
144
+ 'toast.imageReplaced': 'Zastąpiono obraz',
145
+ 'toast.imageAdded': 'Dodano obraz do płótna',
146
+ 'toast.htmlCopied': 'Skopiowano HTML do schowka',
147
+ 'toast.templateLoaded': 'Wczytano {name}',
148
+ 'toast.snippetDefaultLabel': 'Fragment',
149
+ 'toast.snippetInserted': 'Wstawiono {name}',
150
+ 'toast.snippetCopied': 'Skopiowano {name} — zaznacz blok tekstu, aby go wstawić',
151
+ };
152
+