@jjlmoya/utils-games-development 1.69.0 → 1.70.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 (43) hide show
  1. package/package.json +1 -1
  2. package/src/category/index.ts +2 -1
  3. package/src/entries.ts +4 -1
  4. package/src/index.ts +1 -0
  5. package/src/tests/locale_completeness.test.ts +9 -2
  6. package/src/tests/tool_validation.test.ts +2 -2
  7. package/src/tool/fixerEditor/auto-trim.ts +37 -0
  8. package/src/tool/fixerEditor/bibliography.astro +6 -0
  9. package/src/tool/fixerEditor/bibliography.ts +6 -0
  10. package/src/tool/fixerEditor/component.astro +114 -0
  11. package/src/tool/fixerEditor/controller.ts +275 -0
  12. package/src/tool/fixerEditor/dom-views.ts +200 -0
  13. package/src/tool/fixerEditor/entry.ts +28 -0
  14. package/src/tool/fixerEditor/evaluator.ts +17 -0
  15. package/src/tool/fixerEditor/events.ts +98 -0
  16. package/src/tool/fixerEditor/exporter.ts +42 -0
  17. package/src/tool/fixerEditor/fixer-editor.css +603 -0
  18. package/src/tool/fixerEditor/i18n/de.ts +82 -0
  19. package/src/tool/fixerEditor/i18n/en.ts +114 -0
  20. package/src/tool/fixerEditor/i18n/es.ts +82 -0
  21. package/src/tool/fixerEditor/i18n/fr.ts +82 -0
  22. package/src/tool/fixerEditor/i18n/id.ts +82 -0
  23. package/src/tool/fixerEditor/i18n/it.ts +82 -0
  24. package/src/tool/fixerEditor/i18n/ja.ts +81 -0
  25. package/src/tool/fixerEditor/i18n/ko.ts +81 -0
  26. package/src/tool/fixerEditor/i18n/localized.ts +391 -0
  27. package/src/tool/fixerEditor/i18n/nl.ts +82 -0
  28. package/src/tool/fixerEditor/i18n/pl.ts +82 -0
  29. package/src/tool/fixerEditor/i18n/pt.ts +82 -0
  30. package/src/tool/fixerEditor/i18n/ru.ts +82 -0
  31. package/src/tool/fixerEditor/i18n/sv.ts +82 -0
  32. package/src/tool/fixerEditor/i18n/tr.ts +82 -0
  33. package/src/tool/fixerEditor/i18n/zh.ts +80 -0
  34. package/src/tool/fixerEditor/index.ts +11 -0
  35. package/src/tool/fixerEditor/logic.test.ts +69 -0
  36. package/src/tool/fixerEditor/logic.ts +234 -0
  37. package/src/tool/fixerEditor/runtime.ts +88 -0
  38. package/src/tool/fixerEditor/seo.astro +15 -0
  39. package/src/tool/fixerEditor/state.ts +10 -0
  40. package/src/tool/fixerEditor/storage.ts +68 -0
  41. package/src/tool/fixerEditor/types.ts +70 -0
  42. package/src/tool/fixerEditor/ui.ts +71 -0
  43. package/src/tools.ts +2 -0
@@ -0,0 +1,603 @@
1
+ .fe-shell {
2
+ --n-bg: #f4efe6;
3
+ --n-surface: #fffdf8;
4
+ --n-surface-alt: #eee6d8;
5
+ --n-ink: #1d2730;
6
+ --n-muted: #65727a;
7
+ --n-line: #d7cfc1;
8
+ --n-accent: #a7442f;
9
+ --n-accent-ink: #fff;
10
+ --n-gold: #c28b2c;
11
+ --n-gold-ink: #1d2730;
12
+ --n-teal: #197a78;
13
+ --n-danger: #a43d38;
14
+ --n-checker-a: #f8f5ee;
15
+ --n-checker-b: #e5ded1;
16
+
17
+ color: var(--n-ink);
18
+ display: grid;
19
+ gap: 1rem;
20
+ background: var(--n-bg);
21
+ border: 1px solid var(--n-line);
22
+ padding: 1rem;
23
+ }
24
+
25
+ .theme-dark .fe-shell {
26
+ --n-bg: #171b1d;
27
+ --n-surface: #22292b;
28
+ --n-surface-alt: #2c3537;
29
+ --n-ink: #f6f0e7;
30
+ --n-muted: #b4bbb8;
31
+ --n-line: #465154;
32
+ --n-accent: #ae432f;
33
+ --n-accent-ink: #fff;
34
+ --n-gold: #e4b54d;
35
+ --n-gold-ink: #1c1714;
36
+ --n-teal: #6fd1c0;
37
+ --n-danger: #ee8b79;
38
+ --n-checker-a: #2b3335;
39
+ --n-checker-b: #202628;
40
+ }
41
+
42
+ .fe-shell[hidden],
43
+ .fe-workbench[hidden],
44
+ .fe-output-bar[hidden] {
45
+ display: none;
46
+ }
47
+ .fe-command-rail,
48
+ .fe-output-bar {
49
+ align-items: center;
50
+ background: var(--n-surface);
51
+ border: 0;
52
+ display: flex;
53
+ gap: 0.75rem;
54
+ padding: 0 0 1rem;
55
+ }
56
+ .fe-command-rail {
57
+ border-bottom: 1px solid var(--n-line);
58
+ display: grid;
59
+ gap: 0;
60
+ grid-template-columns: 1fr;
61
+ }
62
+ .fe-upload-zone {
63
+ align-items: center;
64
+ border: 1px dashed var(--n-accent);
65
+ cursor: pointer;
66
+ display: flex;
67
+ flex-direction: column;
68
+ gap: 0.7rem;
69
+ justify-content: center;
70
+ min-height: 11rem;
71
+ padding: 1.5rem;
72
+ text-align: center;
73
+ }
74
+ .fe-upload-zone:focus-visible,
75
+ .fe-button:focus-visible,
76
+ .fe-frame-button:focus-visible,
77
+ .fe-nudge:focus-visible,
78
+ .fe-step:focus-visible,
79
+ input:focus-visible {
80
+ outline: 3px solid var(--n-gold);
81
+ outline-offset: 2px;
82
+ }
83
+ .fe-upload-zone.is-dragging {
84
+ background: var(--n-surface-alt);
85
+ }
86
+ .fe-upload-mark {
87
+ align-items: center;
88
+ background: var(--n-accent);
89
+ color: var(--n-accent-ink);
90
+ display: flex;
91
+ font-size: 1.4rem;
92
+ height: 2rem;
93
+ justify-content: center;
94
+ width: 2rem;
95
+ }
96
+ .fe-upload-copy {
97
+ display: grid;
98
+ gap: 0.15rem;
99
+ }
100
+ .fe-upload-cta {
101
+ pointer-events: none;
102
+ white-space: nowrap;
103
+ }
104
+ .fe-upload-copy small,
105
+ .fe-file-name,
106
+ .fe-status,
107
+ .fe-stage-footer,
108
+ .fe-output-copy {
109
+ color: var(--n-muted);
110
+ font-size: 0.78rem;
111
+ }
112
+
113
+ .fe-file-name {
114
+ display: flex;
115
+ flex-wrap: wrap;
116
+ gap: 0.35rem;
117
+ }
118
+
119
+ .fe-source-meta {
120
+ align-items: center;
121
+ border-top: 1px solid var(--n-line);
122
+ display: flex;
123
+ justify-content: space-between;
124
+ gap: 0.35rem;
125
+ padding: 0.65rem 0;
126
+ }
127
+
128
+ .fe-file-name strong {
129
+ color: var(--n-ink);
130
+ }
131
+ .fe-status {
132
+ text-align: right;
133
+ }
134
+ .fe-shell.has-image .fe-command-rail {
135
+ gap: 0.75rem;
136
+ grid-template-columns: minmax(0, 1fr) minmax(12rem, 18rem);
137
+ padding-bottom: 1rem;
138
+ }
139
+ .fe-shell.has-image .fe-upload-zone {
140
+ flex-direction: row;
141
+ justify-content: flex-start;
142
+ min-height: 3.4rem;
143
+ padding: 0.55rem 0.8rem;
144
+ text-align: left;
145
+ }
146
+ .fe-shell.has-image .fe-upload-cta {
147
+ margin-left: auto;
148
+ }
149
+ .fe-shell.has-image .fe-source-meta {
150
+ border-top: 0;
151
+ padding: 0.2rem 0 0.2rem 0.8rem;
152
+ }
153
+ .fe-button {
154
+ background: var(--n-surface-alt);
155
+ border: 1px solid var(--n-line);
156
+ color: var(--n-ink);
157
+ cursor: pointer;
158
+ font: inherit;
159
+ padding: 0.65rem 0.8rem;
160
+ }
161
+ .fe-button:hover,
162
+ .fe-step:hover,
163
+ .fe-nudge:hover {
164
+ border-color: var(--n-accent);
165
+ }
166
+ .fe-primary {
167
+ background: var(--n-accent);
168
+ border-color: var(--n-accent);
169
+ color: var(--n-accent-ink);
170
+ }
171
+ .fe-quiet {
172
+ background: transparent;
173
+ }
174
+ .fe-hidden {
175
+ display: none;
176
+ }
177
+ .fe-workbench {
178
+ background: var(--n-surface);
179
+ border-bottom: 1px solid var(--n-line);
180
+ border-top: 1px solid var(--n-line);
181
+ display: grid;
182
+ gap: 0;
183
+ grid-template-columns: minmax(15rem, 18rem) minmax(0, 1fr) minmax(
184
+ 16rem,
185
+ 20rem
186
+ );
187
+ }
188
+ .fe-panel,
189
+ .fe-stage-panel {
190
+ background: var(--n-surface);
191
+ border: 0;
192
+ min-width: 0;
193
+ padding: 1rem;
194
+ }
195
+ .fe-grid-panel,
196
+ .fe-inspector-panel {
197
+ border-right: 1px solid var(--n-line);
198
+ }
199
+ .fe-panel-label {
200
+ color: var(--n-accent);
201
+ font-size: 0.75rem;
202
+ font-weight: 800;
203
+ letter-spacing: 0.12em;
204
+ }
205
+ .fe-panel h2,
206
+ .fe-stage-panel h2 {
207
+ font-size: 1rem;
208
+ margin: 0.25rem 0 1rem;
209
+ }
210
+ .fe-field-grid,
211
+ .fe-crop-grid {
212
+ display: grid;
213
+ gap: 0.6rem;
214
+ grid-template-columns: repeat(2, minmax(0, 1fr));
215
+ }
216
+ .fe-field-grid label,
217
+ .fe-crop-grid label {
218
+ display: grid;
219
+ gap: 0.25rem;
220
+ }
221
+ .fe-field-grid span,
222
+ .fe-crop-grid span,
223
+ .fe-nudge-heading span,
224
+ .fe-zoom span,
225
+ .fe-fps span {
226
+ color: var(--n-muted);
227
+ font-size: 0.75rem;
228
+ text-transform: uppercase;
229
+ }
230
+ input[type="number"] {
231
+ background: var(--n-bg);
232
+ border: 1px solid var(--n-line);
233
+ color: var(--n-ink);
234
+ font: inherit;
235
+ min-width: 0;
236
+ padding: 0.48rem;
237
+ width: 100%;
238
+ }
239
+ input[type="range"] {
240
+ accent-color: var(--n-accent);
241
+ min-width: 5rem;
242
+ }
243
+ .fe-panel-actions,
244
+ .fe-inspector-actions,
245
+ .fe-output-actions,
246
+ .fe-step-buttons {
247
+ display: flex;
248
+ flex-wrap: wrap;
249
+ gap: 0.45rem;
250
+ }
251
+ .fe-panel-actions {
252
+ border-top: 1px solid var(--n-line);
253
+ margin-top: 1rem;
254
+ padding-top: 0.8rem;
255
+ }
256
+ .fe-stage-panel {
257
+ display: grid;
258
+ gap: 0.85rem;
259
+ }
260
+ .fe-stage-heading,
261
+ .fe-strip-heading,
262
+ .fe-inspector-heading,
263
+ .fe-nudge-heading {
264
+ align-items: center;
265
+ display: flex;
266
+ justify-content: space-between;
267
+ gap: 0.75rem;
268
+ }
269
+ .fe-stage-heading h2,
270
+ .fe-strip-heading h2 {
271
+ display: inline;
272
+ margin-left: 0.45rem;
273
+ }
274
+ .fe-zoom,
275
+ .fe-fps {
276
+ align-items: center;
277
+ display: flex;
278
+ gap: 0.4rem;
279
+ }
280
+ .fe-zoom output,
281
+ .fe-fps output {
282
+ color: var(--n-accent);
283
+ font-weight: 700;
284
+ min-width: 2.2rem;
285
+ }
286
+ .fe-sheet-pair {
287
+ display: grid;
288
+ gap: 0.8rem;
289
+ grid-template-columns: repeat(2, minmax(0, 1fr));
290
+ }
291
+ .fe-sheet-view {
292
+ background: var(--n-bg);
293
+ border: 1px solid var(--n-line);
294
+ margin: 0;
295
+ min-width: 0;
296
+ padding: 0.55rem;
297
+ }
298
+ .fe-sheet-view figcaption {
299
+ align-items: center;
300
+ display: flex;
301
+ font-size: 0.75rem;
302
+ font-weight: 700;
303
+ gap: 0.4rem;
304
+ margin-bottom: 0.45rem;
305
+ text-transform: uppercase;
306
+ }
307
+ .fe-source-mark,
308
+ .fe-result-mark {
309
+ background: var(--n-accent);
310
+ display: inline-block;
311
+ height: 0.55rem;
312
+ width: 0.55rem;
313
+ }
314
+ .fe-result-mark {
315
+ background: var(--n-teal);
316
+ }
317
+ .fe-canvas-wrap,
318
+ .fe-active-canvas-wrap {
319
+ align-items: center;
320
+ background-color: var(--n-checker-a);
321
+ background-image:
322
+ linear-gradient(
323
+ 45deg,
324
+ var(--n-checker-b) 25%,
325
+ transparent 25%,
326
+ transparent 75%,
327
+ var(--n-checker-b) 75%
328
+ ),
329
+ linear-gradient(
330
+ 45deg,
331
+ var(--n-checker-b) 25%,
332
+ transparent 25%,
333
+ transparent 75%,
334
+ var(--n-checker-b) 75%
335
+ );
336
+ background-position:
337
+ 0 0,
338
+ 8px 8px;
339
+ background-size: 16px 16px;
340
+ display: flex;
341
+ justify-content: center;
342
+ min-height: 12rem;
343
+ overflow: auto;
344
+ }
345
+ .fe-canvas-wrap canvas {
346
+ height: auto;
347
+ image-rendering: pixelated;
348
+ max-height: 28rem;
349
+ max-width: 100%;
350
+ transform: scale(var(--fe-zoom, 1));
351
+ transform-origin: center;
352
+ width: auto;
353
+ }
354
+ .fe-corrected-view canvas {
355
+ filter: saturate(1.12);
356
+ }
357
+ .fe-stage-footer {
358
+ display: flex;
359
+ justify-content: space-between;
360
+ gap: 0.75rem;
361
+ }
362
+ .fe-filmstrip {
363
+ align-items: start;
364
+ display: grid;
365
+ gap: 0.45rem;
366
+ grid-auto-rows: auto;
367
+ grid-template-columns: repeat(var(--fe-frame-columns, 4), minmax(0, 1fr));
368
+ overflow: visible;
369
+ padding: 0.25rem 0 0.5rem;
370
+ }
371
+ .fe-frame-button {
372
+ align-items: center;
373
+ background: var(--n-surface-alt);
374
+ border: 1px solid var(--n-line);
375
+ color: var(--n-ink);
376
+ cursor: pointer;
377
+ display: grid;
378
+ font-size: clamp(0.48rem, 0.75vw, 0.68rem);
379
+ font-variant-numeric: tabular-nums;
380
+ height: auto;
381
+ justify-items: center;
382
+ line-height: 1;
383
+ min-width: 0;
384
+ overflow: hidden;
385
+ padding: 0;
386
+ position: relative;
387
+ white-space: nowrap;
388
+ text-overflow: clip;
389
+ width: 100%;
390
+ aspect-ratio: 1;
391
+ max-width: 3rem;
392
+ }
393
+ .fe-frame-button.is-selected {
394
+ border: 2px solid var(--n-gold);
395
+ box-shadow: inset 0 -0.3rem var(--n-gold);
396
+ }
397
+ .fe-frame-button.is-modified::after {
398
+ background: var(--n-teal);
399
+ content: "";
400
+ height: 0.45rem;
401
+ position: absolute;
402
+ right: 0.3rem;
403
+ top: 0.3rem;
404
+ width: 0.45rem;
405
+ }
406
+ .fe-count {
407
+ color: var(--n-muted);
408
+ font-size: 0.8rem;
409
+ }
410
+ .fe-inspector-heading strong {
411
+ color: var(--n-accent);
412
+ font-size: 0.8rem;
413
+ }
414
+ .fe-active-canvas-wrap {
415
+ min-height: 13rem;
416
+ }
417
+ .fe-active-canvas-wrap canvas {
418
+ image-rendering: pixelated;
419
+ max-height: 13rem;
420
+ max-width: 100%;
421
+ width: min(100%, 13rem);
422
+ }
423
+ .fe-frame-state {
424
+ border-left: 0.25rem solid var(--n-teal);
425
+ color: var(--n-teal);
426
+ font-size: 0.78rem;
427
+ margin: 0.7rem 0;
428
+ padding: 0.35rem 0.5rem;
429
+ }
430
+ .fe-nudge-heading {
431
+ border-top: 1px solid var(--n-line);
432
+ margin-top: 0.8rem;
433
+ padding-top: 0.8rem;
434
+ }
435
+ .fe-step {
436
+ background: transparent;
437
+ border: 1px solid var(--n-line);
438
+ color: var(--n-muted);
439
+ cursor: pointer;
440
+ font-size: 0.75rem;
441
+ padding: 0.35rem 0.45rem;
442
+ }
443
+ .fe-step.is-active {
444
+ background: var(--n-gold);
445
+ border-color: var(--n-gold);
446
+ color: var(--n-gold-ink);
447
+ }
448
+ .fe-nudge-pad {
449
+ display: grid;
450
+ gap: 0.35rem;
451
+ grid-template-columns: repeat(3, 1fr);
452
+ margin: 0.8rem auto;
453
+ max-width: 10rem;
454
+ }
455
+ .fe-nudge {
456
+ background: var(--n-surface-alt);
457
+ border: 1px solid var(--n-line);
458
+ color: var(--n-ink);
459
+ cursor: pointer;
460
+ min-height: 2.4rem;
461
+ }
462
+ .fe-crosshair {
463
+ align-self: center;
464
+ background: var(--n-accent);
465
+ height: 0.45rem;
466
+ justify-self: center;
467
+ position: relative;
468
+ width: 0.45rem;
469
+ }
470
+ .fe-crosshair::before,
471
+ .fe-crosshair::after {
472
+ background: var(--n-accent);
473
+ content: "";
474
+ position: absolute;
475
+ }
476
+ .fe-crosshair::before {
477
+ height: 1.2rem;
478
+ left: 0.18rem;
479
+ top: -0.38rem;
480
+ width: 0.08rem;
481
+ }
482
+ .fe-crosshair::after {
483
+ height: 0.08rem;
484
+ left: -0.38rem;
485
+ top: 0.18rem;
486
+ width: 1.2rem;
487
+ }
488
+ .fe-inspector-actions {
489
+ flex-direction: column;
490
+ }
491
+ .fe-output-bar {
492
+ align-items: center;
493
+ display: grid;
494
+ gap: 1rem;
495
+ grid-template-columns: minmax(9rem, 1fr) minmax(18rem, 1.6fr) minmax(23rem, 2fr);
496
+ padding: 1rem 0 0;
497
+ }
498
+ .fe-output-copy {
499
+ align-items: center;
500
+ display: flex;
501
+ gap: 0.8rem;
502
+ }
503
+ .fe-output-copy strong {
504
+ color: var(--n-ink);
505
+ font-size: 0.8rem;
506
+ max-width: 5rem;
507
+ }
508
+ .fe-output-stat {
509
+ align-items: baseline;
510
+ display: flex;
511
+ gap: 0.35rem;
512
+ }
513
+ .fe-output-stat span:first-child {
514
+ color: var(--n-accent);
515
+ font-size: 1.4rem;
516
+ font-weight: 800;
517
+ }
518
+ .fe-output-stat span:last-child {
519
+ color: var(--n-muted);
520
+ font-size: 0.75rem;
521
+ line-height: 1.1;
522
+ max-width: 4rem;
523
+ }
524
+ .fe-playback {
525
+ align-items: center;
526
+ display: flex;
527
+ flex-wrap: wrap;
528
+ gap: 0.45rem;
529
+ }
530
+ .fe-flipbook-label {
531
+ color: var(--n-muted);
532
+ font-size: 0.75rem;
533
+ margin-right: 0.2rem;
534
+ text-transform: uppercase;
535
+ }
536
+ .fe-output-actions {
537
+ align-items: center;
538
+ display: grid;
539
+ gap: 0.45rem;
540
+ grid-template-columns: repeat(2, minmax(0, 1fr));
541
+ justify-content: flex-end;
542
+ }
543
+
544
+ @media (max-width: 1100px) {
545
+ .fe-workbench {
546
+ grid-template-columns: minmax(14rem, 16rem) minmax(0, 1fr);
547
+ }
548
+ .fe-inspector-panel {
549
+ grid-column: 1 / -1;
550
+ }
551
+ .fe-inspector-actions {
552
+ flex-direction: row;
553
+ }
554
+ }
555
+
556
+ @media (max-width: 720px) {
557
+ .fe-command-rail,
558
+ .fe-output-bar {
559
+ align-items: stretch;
560
+ flex-direction: column;
561
+ }
562
+ .fe-output-bar {
563
+ align-items: stretch;
564
+ display: grid;
565
+ grid-template-columns: 1fr;
566
+ }
567
+ .fe-command-rail {
568
+ grid-template-columns: 1fr;
569
+ }
570
+ .fe-shell.has-image .fe-command-rail {
571
+ grid-template-columns: 1fr;
572
+ }
573
+ .fe-source-meta {
574
+ padding: 0;
575
+ }
576
+ .fe-shell.has-image .fe-source-meta {
577
+ border-top: 1px solid var(--n-line);
578
+ padding: 0.65rem 0 0;
579
+ }
580
+ .fe-status {
581
+ margin-left: 0;
582
+ }
583
+ .fe-sheet-pair,
584
+ .fe-workbench {
585
+ grid-template-columns: 1fr;
586
+ }
587
+ .fe-inspector-panel {
588
+ grid-column: auto;
589
+ }
590
+ .fe-grid-panel,
591
+ .fe-inspector-panel {
592
+ border-right: 0;
593
+ }
594
+ .fe-output-actions {
595
+ justify-content: stretch;
596
+ }
597
+ .fe-output-actions .fe-button {
598
+ flex: 1 1 auto;
599
+ }
600
+ .fe-stage-footer {
601
+ flex-direction: column;
602
+ }
603
+ }
@@ -0,0 +1,82 @@
1
+ import { createLocalizedContent } from "./localized";
2
+
3
+ export const content = createLocalizedContent({
4
+ locale: "de",
5
+ slug: "sprite-sheet-reparatur-editor",
6
+ title: "Sprite Sheet Reparatur Editor",
7
+ description:
8
+ "Korrigiere Zuschnitt und Pixelausrichtung einer Sprite Sheet direkt im Browser und exportiere das Ergebnis.",
9
+ ui: {
10
+ uploadTitle: "Sprite-Sheet öffnen",
11
+ uploadHint:
12
+ "PNG oder WebP hier ablegen, um die Frames auf der Reparaturfläche zu platzieren",
13
+ chooseImage: "Bild auswählen",
14
+ sourceFile: "Quelldatei",
15
+ noImage: "Keine Sprite-Sheet geladen",
16
+ gridSettings: "Rasterregistrierung",
17
+ columns: "Spalten",
18
+ rows: "Zeilen",
19
+ cellWidth: "Zellenbreite",
20
+ cellHeight: "Zellenhöhe",
21
+ marginX: "Linker Rand",
22
+ marginY: "Oberer Rand",
23
+ gapX: "Spaltenabstand",
24
+ gapY: "Zeilenabstand",
25
+ frameTools: "Frame-Anpassung",
26
+ cropX: "Zuschnitt links",
27
+ cropY: "Zuschnitt oben",
28
+ cropWidth: "Zuschnittbreite",
29
+ cropHeight: "Zuschnitthöhe",
30
+ offsetX: "Versatz X",
31
+ offsetY: "Versatz Y",
32
+ trimTransparent: "Transparente Pixel zuschneiden",
33
+ trimAll: "Alle Frames automatisch zuschneiden",
34
+ autoDetectGrid: "Raster automatisch erkennen",
35
+ resetFrame: "Ausgewählten Frame zurücksetzen",
36
+ nudgeStep: "Verschiebeschritt",
37
+ stepOne: "Ein Pixel",
38
+ stepTwo: "Zwei Pixel",
39
+ stepFour: "Vier Pixel",
40
+ history: "Reparaturprotokoll",
41
+ undo: "Rückgängig",
42
+ redo: "Wiederholen",
43
+ resetAll: "Sheet zurücksetzen",
44
+ saveProject: "Projekt speichern",
45
+ loadProject: "Projekt laden",
46
+ exportSheet: "Korrigierte Sheet exportieren",
47
+ exportJson: "Frame-JSON exportieren",
48
+ sheetView: "Registrierungsansicht",
49
+ correctedView: "Korrigierte Sheet",
50
+ activeFrame: "Frame-Inspektor",
51
+ frameStrip: "Frame-Übersicht",
52
+ flipbook: "Flipbook",
53
+ play: "Abspielen",
54
+ pause: "Pausieren",
55
+ fps: "FPS",
56
+ zoom: "Vorschau-Zoom",
57
+ ready: "Anpassungen sind sofort sichtbar",
58
+ loaded: "Sprite-Sheet geladen",
59
+ modified: "Angepasst",
60
+ unchanged: "Originalposition",
61
+ frameCount: "Frames",
62
+ correctionCount: "Angepasste Frames",
63
+ imageSize: "Bildgröße",
64
+ statusEmpty: "Warte auf eine Sprite-Sheet",
65
+ statusSaved: "Projekt lokal gespeichert",
66
+ statusLoaded: "Projekt geladen",
67
+ statusExported: "Export bereit",
68
+ statusInvalidImage: "Dieses Bild konnte nicht geöffnet werden",
69
+ statusInvalidProject: "Diese Projektdatei ist ungültig",
70
+ statusProjectNeedsImage:
71
+ "Projekt gemerkt. Öffne die Quelldatei, um es anzuwenden",
72
+ statusImageMismatch: "Projekt mit anderer Quellgröße geladen",
73
+ metadataNote: "Transparente Pixel bleiben beim Export transparent",
74
+ sourceLabel: "Quell-Sheet",
75
+ resultLabel: "Korrigierte Sheet",
76
+ selectFrame: "Frame auswählen",
77
+ moveUp: "Frame nach oben bewegen",
78
+ moveDown: "Frame nach unten bewegen",
79
+ moveLeft: "Frame nach links bewegen",
80
+ moveRight: "Frame nach rechts bewegen",
81
+ },
82
+ });