@roastcodes/ttdash 6.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.
@@ -0,0 +1,996 @@
1
+ {
2
+ "app": {
3
+ "name": "TTDash",
4
+ "language": "Sprache",
5
+ "languages": {
6
+ "de": "Deutsch",
7
+ "en": "Englisch"
8
+ }
9
+ },
10
+ "header": {
11
+ "import": "Import",
12
+ "upload": "Upload",
13
+ "limits": "Limits",
14
+ "settings": "Einstellungen",
15
+ "report": "Report",
16
+ "csv": "CSV",
17
+ "delete": "Löschen",
18
+ "help": "Hilfe & Tastenkürzel",
19
+ "loaded": "Geladen",
20
+ "loadedAt": "Zuletzt geladen: {{time}}",
21
+ "autoLoadActive": "Auto-Load beim Start",
22
+ "autoLoadAt": "Beim Start automatisch geladen: {{time}}"
23
+ },
24
+ "emptyState": {
25
+ "description": "Lade ein `toktrack`- oder Legacy-JSON hoch oder starte den lokalen Auto-Import mit lokalem `toktrack`, `bunx toktrack daily --json` oder `npx --yes toktrack daily --json`.",
26
+ "autoImport": "Auto-Import",
27
+ "uploadFile": "Datei hochladen",
28
+ "openSettings": "Einstellungen & Backups",
29
+ "or": "oder"
30
+ },
31
+ "viewModes": {
32
+ "daily": "Tagesansicht",
33
+ "monthly": "Monatsansicht",
34
+ "yearly": "Jahresansicht"
35
+ },
36
+ "periods": {
37
+ "day": "Tag",
38
+ "days": "Tage",
39
+ "month": "Monat",
40
+ "months": "Monate",
41
+ "year": "Jahr",
42
+ "years": "Jahre",
43
+ "unitDay": "Tag",
44
+ "unitMonth": "Mt.",
45
+ "unitYear": "Jahr"
46
+ },
47
+ "common": {
48
+ "all": "Alle",
49
+ "none": "Keine",
50
+ "reset": "Reset",
51
+ "notAvailable": "n/v",
52
+ "noData": "Keine Daten",
53
+ "generated": "Generiert",
54
+ "view": "Ansicht",
55
+ "dateRange": "Zeitraum",
56
+ "month": "Monat",
57
+ "provider": "Anbieter",
58
+ "providers": "Anbieter",
59
+ "model": "Modell",
60
+ "models": "Modelle",
61
+ "cost": "Kosten",
62
+ "costs": "Kosten",
63
+ "tokens": "Tokens",
64
+ "requests": "Requests",
65
+ "today": "Heute",
66
+ "currentMonth": "Monat",
67
+ "yes": "Ja",
68
+ "no": "Nein",
69
+ "enabled": "Aktiv",
70
+ "disabled": "Inaktiv",
71
+ "visible": "Sichtbar",
72
+ "hidden": "Versteckt",
73
+ "open": "Öffnen",
74
+ "close": "Schliessen",
75
+ "startDate": "Startdatum",
76
+ "endDate": "Enddatum",
77
+ "selectedProviders": "Ausgewählte Provider",
78
+ "selectedModels": "Ausgewählte Modelle",
79
+ "allProviders": "Alle Anbieter",
80
+ "allModels": "Alle Modelle",
81
+ "allMonths": "Alle Monate",
82
+ "noFilter": "Kein Filter",
83
+ "focusMonth": "Fokusmonat",
84
+ "showInfo": "Info anzeigen",
85
+ "expand": "Vergrössern",
86
+ "input": "Input",
87
+ "output": "Output",
88
+ "cacheWrite": "Cache Write",
89
+ "cacheRead": "Cache Read",
90
+ "thinking": "Thinking",
91
+ "requestsShort": "Req",
92
+ "request": "Request",
93
+ "share": "Anteil",
94
+ "top": "Top"
95
+ },
96
+ "filterBar": {
97
+ "status": "Filterstatus",
98
+ "providersActive": "{{count}} Anbieter aktiv",
99
+ "modelsActive": "{{count}} Modelle aktiv",
100
+ "dateFilterActive": "Datumsfilter aktiv",
101
+ "presets": {
102
+ "7d": "7T",
103
+ "30d": "30T",
104
+ "month": "Monat",
105
+ "year": "Jahr",
106
+ "all": "Alle"
107
+ },
108
+ "until": "bis",
109
+ "resetDateRange": "Zeitraum zurücksetzen",
110
+ "resetAll": "Alles zurücksetzen",
111
+ "providers": "Anbieter",
112
+ "models": "Modelle",
113
+ "resetModels": "Modelle zurücksetzen"
114
+ },
115
+ "dashboard": {
116
+ "insights": {
117
+ "title": "Insights",
118
+ "badge": "Verdichtete Signale",
119
+ "description": "Konzentrierte Aussagen aus Kosten-, Modell- und Request-Daten",
120
+ "quickRead": "Quick Read"
121
+ },
122
+ "metrics": {
123
+ "title": "Metriken",
124
+ "badge": "10 Kennzahlen",
125
+ "description": "Wichtigste KPIs im Überblick"
126
+ },
127
+ "activity": {
128
+ "title": "Aktivität",
129
+ "dailyDescription": "Tägliche Nutzungsübersicht",
130
+ "monthlyDescription": "Monatliche Nutzungsübersicht",
131
+ "yearlyDescription": "Jährliche Nutzungsübersicht"
132
+ },
133
+ "forecastCache": {
134
+ "title": "Prognose & Cache",
135
+ "description": "Kostenprognose und Cache-Effizienz"
136
+ },
137
+ "costAnalysis": {
138
+ "title": "Kostenanalyse",
139
+ "description": "Detaillierte Kostenaufschlüsselung"
140
+ },
141
+ "tokenAnalysis": {
142
+ "title": "Token-Analyse",
143
+ "description": "Verbrauch nach Token-Typ"
144
+ },
145
+ "requestAnalysis": {
146
+ "title": "Request-Analyse",
147
+ "description": "Requests gesamt, pro Modell und im Verlauf"
148
+ },
149
+ "advancedAnalysis": {
150
+ "title": "Verteilungen & Risiko",
151
+ "description": "Zusätzliche Signale zu Streuung, Korrelation und Abhängigkeiten"
152
+ },
153
+ "comparisons": {
154
+ "title": "Vergleiche & Anomalien",
155
+ "description": "Periodenvergleich und Ausreisser"
156
+ },
157
+ "tables": {
158
+ "title": "Tabellen",
159
+ "description": "Detaillierte Aufschlüsselungen"
160
+ },
161
+ "cards": {
162
+ "periodComparison": "Periodenvergleich",
163
+ "anomalyDetection": "Anomalie-Erkennung",
164
+ "costForecast": "Kostenprognose",
165
+ "cacheRoi": "Cache ROI"
166
+ },
167
+ "stats": {
168
+ "cacheHitRate": "Cache-Hit-Rate",
169
+ "totalTokens": "Gesamt-Tokens",
170
+ "cacheRead": "Cache Read",
171
+ "dataPoints": "Datenpunkte",
172
+ "avgCostPerUnit": "Ø Kosten/{{unit}}",
173
+ "total": "Gesamt",
174
+ "avgPerUnit": "Ø / {{unit}}"
175
+ }
176
+ },
177
+ "metricCards": {
178
+ "primary": {
179
+ "totalCost": "Gesamtkosten",
180
+ "totalTokens": "Gesamt-Tokens",
181
+ "activeDays": "Aktive Tage",
182
+ "topModel": "Top Modell",
183
+ "cacheHitRate": "Cache-Hit-Rate",
184
+ "costPerMillion": "$/1M Tokens",
185
+ "requests": "Requests",
186
+ "thinking": "Thinking",
187
+ "avgPerPeriod": "{{value}}/{{unit}} im Mittel",
188
+ "tokensPerRequestAvg": "{{value}} pro Request im Mittel",
189
+ "coverageOfDays": "{{coverage}} Abdeckung von {{days}} Tagen",
190
+ "providersActive": "{{count}} Anbieter aktiv",
191
+ "share": "{{value}} Anteil",
192
+ "requestLead": "Req-Lead: {{value}}",
193
+ "allTokensViaCacheRead": "{{value}} aller Tokens via Cache Read",
194
+ "requestCountersMissing": "Keine Request-Zähler im Datensatz",
195
+ "thinkingShareOfVolume": "{{value}} des gesamten Tokenvolumens",
196
+ "requestsSubtitle": "Ø {{requests}} / {{unit}} · {{cost}} / Req · σ {{volatility}}",
197
+ "thinkingSubtitle": "{{share}} Anteil · {{tokens}} / Request"
198
+ },
199
+ "secondary": {
200
+ "mostExpensiveDay": "Teuerster Tag",
201
+ "mostExpensiveMonth": "Teuerster Monat",
202
+ "mostExpensiveYear": "Teuerstes Jahr",
203
+ "dominantProvider": "Dominanter Anbieter",
204
+ "peak7Days": "Peak 7 Tage",
205
+ "avgCostPerUnit": "Ø Kosten/{{unit}}",
206
+ "spread": "Spanne: {{value}}",
207
+ "medianPerUnit": "Median/{{unit}}",
208
+ "vsAverage": "{{direction}}{{value}}% vs. Ø",
209
+ "medianInfo": "Der Median zeigt den typischen Wert und ist weniger anfällig für Ausreisser als der Durchschnitt.",
210
+ "requestLeader": "{{model}} · {{requests}} Req",
211
+ "dominantProviderSubtitle": "{{share}} Anteil · {{cost}}{{requestLeader}}"
212
+ },
213
+ "today": {
214
+ "title": "Heute — {{date}}",
215
+ "description": "KPIs des aktuellen Tages",
216
+ "costToday": "Kosten heute",
217
+ "tokensToday": "Tokens heute",
218
+ "models": "Modelle",
219
+ "costPerMillion": "$/1M Tokens",
220
+ "cacheHitRate": "Cache-Hit-Rate",
221
+ "requests": "Requests",
222
+ "thinking": "Thinking",
223
+ "vsAverageShort": "vs. Ø",
224
+ "overallAverage": "Gesamt-Ø: {{value}}",
225
+ "cacheShare": "{{value}} Cache-Anteil",
226
+ "requestsToday": "Requests heute",
227
+ "avgPerDay": "Ø {{value}}/Tag",
228
+ "ioRatio": "I/O Ratio: {{value}}:1",
229
+ "topModel": "Top: {{value}}",
230
+ "requestsSubtitle": "{{value}} / Modell · {{cost}}/Req",
231
+ "requestCountersMissing": "Keine Request-Zähler",
232
+ "thinkingSubtitle": "{{value}} Anteil"
233
+ },
234
+ "month": {
235
+ "title": "Monat — {{date}}",
236
+ "badge": "{{count}} Tage",
237
+ "description": "KPIs des laufenden Monats",
238
+ "costMonth": "Kosten Monat",
239
+ "tokensMonth": "Tokens Monat",
240
+ "activeDays": "Aktive Tage",
241
+ "models": "Modelle",
242
+ "costPerMillion": "$/1M Tokens",
243
+ "cacheHitRate": "Cache-Hit-Rate",
244
+ "requests": "Requests",
245
+ "thinking": "Thinking",
246
+ "vsPreviousMonth": "vs. Vormonat",
247
+ "coverage": "{{value}} Abdeckung",
248
+ "requestsInMonth": "Requests im Monat",
249
+ "avgPerDay": "Ø {{value}}/Tag",
250
+ "ioRatio": "I/O Ratio: {{value}}:1",
251
+ "topModel": "Top: {{value}}",
252
+ "cacheMix": "In: {{input}} / Out: {{output}}",
253
+ "requestsSubtitle": "Ø {{value}}/Tag · {{cost}}/Req",
254
+ "requestCountersMissing": "Keine Request-Zähler",
255
+ "thinkingSubtitle": "{{value}} Anteil"
256
+ }
257
+ },
258
+ "insights": {
259
+ "concentration": {
260
+ "title": "Kostenkonzentration",
261
+ "summary": "{{provider}} ist aktuell der dominante Anbieter im gewählten Ausschnitt, während {{model}} den grössten Einzelhebel setzt.",
262
+ "fallback": "Noch keine stabile Anbieter-Verteilung verfügbar.",
263
+ "topProvider": "Top Anbieter",
264
+ "topModel": "Top Modell",
265
+ "topModelShare": "Top Modell Anteil",
266
+ "topThreeModels": "Top 3 Modelle"
267
+ },
268
+ "requestEconomy": {
269
+ "title": "Request-Ökonomie",
270
+ "valueLabel": "Ø Kosten pro Request",
271
+ "summary": "Jede Anfrage kostet im Mittel {{cost}} und verarbeitet {{tokens}}. {{leader}}",
272
+ "leader": "{{model}} führt aktuell beim Request-Volumen.",
273
+ "fallback": "Der geladene Datensatz enthält keine verlässlichen Request-Zähler. Request-Ökonomie ist deshalb nicht verfügbar.",
274
+ "avgRequests": "Ø Req/{{unit}}",
275
+ "avgTokensPerRequest": "Ø Tokens/Req",
276
+ "costPerMillion": "$/1M Tokens",
277
+ "totalRequests": "Gesamt Requests"
278
+ },
279
+ "usagePatterns": {
280
+ "title": "Nutzungsmuster",
281
+ "summaryWithCoverage": "{{activeDays}} von {{totalDays}} Kalendertagen enthalten Aktivität im gefilterten Zeitraum. Die Requests schwanken dabei um {{volatility}}.",
282
+ "summaryWithoutCoverage": "{{activeDays}} aktive {{unit}} im gewählten Ausschnitt.",
283
+ "avgModels": "Ø Modelle/Eintrag",
284
+ "providersActive": "Anbieter aktiv",
285
+ "weekendShare": "Wochenend-Anteil",
286
+ "thinkingShare": "Thinking Anteil"
287
+ },
288
+ "peakWindow": {
289
+ "title": "Peak-Fenster",
290
+ "summary": "Stärkste 7-Tage-Phase von {{start}} bis {{end}}.",
291
+ "fallback": "Kein 7-Tage-Fenster verfügbar, daher Fokus auf den teuersten Einzelwert.",
292
+ "peakDay": "Peak Tag",
293
+ "avgPerUnit": "Ø/{{unit}}",
294
+ "peak7DayAverage": "Peak 7T Ø/Tag",
295
+ "signal": "Signal",
296
+ "signalStrong": "stark konzentriert",
297
+ "signalModerate": "moderat konzentriert",
298
+ "signalWide": "breit verteilt"
299
+ },
300
+ "quickRead": {
301
+ "summary": "{{provider}} trägt {{providerShare}} der Kosten, während die Top-3-Modelle {{topThreeShare}} bündeln. {{requestLeader}}",
302
+ "requestLeader": "{{requestModel}} führt bei den Requests, {{tokenModel}} beim Tokenvolumen.",
303
+ "fallback": "Für den aktuellen Filterausschnitt sind noch nicht genug Daten für eine stabile Zusammenfassung vorhanden."
304
+ }
305
+ },
306
+ "charts": {
307
+ "costOverTime": {
308
+ "title": "Kosten im Zeitverlauf + 7-Tage Ø",
309
+ "subtitle": "Tageskosten mit 7-Tage gleitendem Durchschnitt",
310
+ "summary": "Letzter Wert {{latest}} · Peak {{peak}} am {{date}}",
311
+ "cost": "Kosten",
312
+ "movingAverage": "7-Tage Ø"
313
+ },
314
+ "costByModel": {
315
+ "title": "Kosten nach Modell",
316
+ "subtitle": "Kostenverteilung nach Modell",
317
+ "total": "Gesamt"
318
+ },
319
+ "costByModelOverTime": {
320
+ "title": "Kosten nach Modell im Zeitverlauf",
321
+ "subtitle": "Pro Modell über die Zeit",
322
+ "topDriver": "Top Treiber: {{model}} · {{total}} kumuliert",
323
+ "movingAverageHeading": "7-Tage Durchschnitt pro Modell",
324
+ "movingAverageSuffix": "Ø"
325
+ },
326
+ "cumulativeCost": {
327
+ "title": "Kumulative Kosten",
328
+ "total": "Gesamt: {{value}}",
329
+ "cumulative": "Kumulativ",
330
+ "projection": "Projektion"
331
+ },
332
+ "tokensOverTime": {
333
+ "title": "Tokens im Zeitverlauf",
334
+ "subtitle": "Alle Token-Typen mit 7-Tage Ø",
335
+ "allTypes": "Gesamt-Tokens (alle Typen)",
336
+ "totalTokens": "Gesamt-Tokens",
337
+ "movingAverage": "7-Tage Ø",
338
+ "cacheTokens": "Cache Tokens",
339
+ "inputOutputTokens": "Input / Output Tokens",
340
+ "thinkingTokens": "Thinking Tokens",
341
+ "averageSuffix": "Ø"
342
+ },
343
+ "requestsOverTime": {
344
+ "title": "Requests im Zeitverlauf",
345
+ "subtitle": "Requests gesamt, nach Modell und mit 7-Tage-Ø",
346
+ "summary": "Gesamt {{total}} · Peak {{peak}} am {{date}}",
347
+ "averagePerUnit": "Ø / {{unit}}",
348
+ "trend": "Trend Ø",
349
+ "movingAverage": "7-Tage Ø",
350
+ "trendHeading": "Gleitender Durchschnitt pro Modell",
351
+ "movingAverageHeading": "7-Tage Durchschnitt pro Modell",
352
+ "totalMovingAverage": "Gesamt {{label}}",
353
+ "requestsByModelTotal": "Requests nach Modell gesamt",
354
+ "requestsInRange": "Requests im gewählten Zeitraum",
355
+ "total": "Gesamt",
356
+ "topModel": "Top Modell",
357
+ "topShare": "Top Share",
358
+ "totalRequestsSeries": "Gesamt-Requests"
359
+ },
360
+ "requestCacheHitRate": {
361
+ "title": "Cache-Hit-Rate nach Modell",
362
+ "subtitle": "Gesamt {{total}} · 7-Tage-Ø {{trailing}}",
363
+ "totalRate": "Gesamt",
364
+ "trailing7Rate": "7-Tage-Ø",
365
+ "trendRate": "Trend-Ø",
366
+ "topModel": "Top Modell",
367
+ "models": "Modelle",
368
+ "total": "Gesamt",
369
+ "timelineHeading": "Cache-Hit-Rate im Zeitverlauf / {{unit}}",
370
+ "modelBreakdownHeading": "Aktueller Modell-Snapshot"
371
+ },
372
+ "heatmap": {
373
+ "costTitle": "Kosten-Heatmap",
374
+ "requestsTitle": "Request-Heatmap",
375
+ "tokensTitle": "Token-Heatmap",
376
+ "costEmpty": "Kosten-Heatmap nur in der Tagesansicht verfügbar",
377
+ "requestsEmpty": "Request-Heatmap nur in der Tagesansicht verfügbar",
378
+ "tokensEmpty": "Token-Heatmap nur in der Tagesansicht verfügbar",
379
+ "switchToDaily": "Wechsle zur Tagesansicht für die Kalender-Heatmap",
380
+ "less": "Weniger",
381
+ "more": "Mehr"
382
+ },
383
+ "tokenTypes": {
384
+ "title": "Token-Typen",
385
+ "subtitle": "Verteilung der Token-Typen",
386
+ "total": "Gesamt"
387
+ },
388
+ "modelMix": {
389
+ "title": "Modell-Mix",
390
+ "subtitle": "Kostenanteil pro Modell über die Zeit"
391
+ },
392
+ "distribution": {
393
+ "title": "Verteilungen",
394
+ "requiresData": "Für Verteilungen werden mindestens 2 Datenpunkte im aktuellen Filter benötigt.",
395
+ "costPerPeriod": "Kosten je {{period}}",
396
+ "requestsPerPeriod": "Requests je {{period}}",
397
+ "tokensPerRequest": "Tokens pro Request",
398
+ "interval": "Intervall",
399
+ "dataPoints": "Datenpunkte",
400
+ "buckets": "Buckets"
401
+ },
402
+ "correlation": {
403
+ "title": "Korrelationen",
404
+ "requiresData": "Für Korrelationen werden mindestens 2 Datenpunkte im aktuellen Filter benötigt.",
405
+ "points": "{{count}} Punkte",
406
+ "requestsVsCost": "Requests vs. Kosten",
407
+ "cacheVsCostPerRequest": "Cache-Rate vs. $/Req",
408
+ "requestsAxis": "Requests",
409
+ "requestsLabel": "Requests",
410
+ "tokensLabel": "Tokens",
411
+ "costPerRequestAxis": "$/Req",
412
+ "cost": "Kosten",
413
+ "costPerRequest": "Kosten / Req",
414
+ "cacheRate": "Cache-Rate",
415
+ "strongRequestCost": "Starker Zusammenhang: Mehr Requests treiben die Kosten sichtbar.",
416
+ "mediumRequestCost": "Moderater Zusammenhang zwischen Last und Kosten.",
417
+ "weakRequestCost": "Schwacher Zusammenhang: Kosten werden stärker von Modellmix und Tokenlast geprägt.",
418
+ "negativeCache": "Negativer Zusammenhang: Höhere Cache-Rate senkt tendenziell die Kosten pro Request.",
419
+ "neutralCache": "Kaum linearer Effekt: Cache wirkt, aber nicht allein entscheidend.",
420
+ "positiveCache": "Positiver Zusammenhang: Hohe Cache-Raten fallen hier nicht automatisch mit niedrigen Kosten pro Request zusammen."
421
+ },
422
+ "costByWeekday": {
423
+ "title": "Kosten nach Wochentag",
424
+ "subtitle": "Peak: {{peak}} · Low: {{low}} · Wochenende {{share}}",
425
+ "averageCost": "Ø Kosten"
426
+ },
427
+ "tokenEfficiency": {
428
+ "title": "Token-Effizienz ($/1M)",
429
+ "subtitle": "Ø {{value}}/1M Tokens",
430
+ "series": "$/1M Tokens",
431
+ "movingAverage": "7T-Ø"
432
+ }
433
+ },
434
+ "risk": {
435
+ "title": "Konzentrationsrisiko",
436
+ "modelDependency": "Modell-Abhängigkeit",
437
+ "providerDependency": "Provider-Abhängigkeit",
438
+ "high": "hoch",
439
+ "medium": "mittel",
440
+ "low": "niedrig",
441
+ "modelHint": "HHI {{value}} · Hohe Werte sprechen für wenige dominante Modelle.",
442
+ "providerHint": "HHI {{value}} · Zeigt die Abhängigkeit von einzelnen Anbietern."
443
+ },
444
+ "requestQuality": {
445
+ "title": "Request-Qualität",
446
+ "tokensPerRequest": "Tokens / Request",
447
+ "costPerRequest": "Kosten / Request",
448
+ "cachePerRequest": "Cache / Request",
449
+ "thinkingPerRequest": "Thinking / Request",
450
+ "tokensHint": "Durchschnittliche Tokenlast pro Anfrage",
451
+ "costHint": "Direkte Kosten pro Anfrage",
452
+ "cacheHint": "Gelesene Cache-Tokens pro Anfrage",
453
+ "thinkingHint": "Thinking-Tokens pro Anfrage",
454
+ "requestDensity": "Request-Dichte",
455
+ "averagePerActiveUnit": "Ø pro aktivem {{unit}}",
456
+ "cacheHitRate": "Cache-Hit-Rate",
457
+ "cacheHitHint": "Direkt aus Cache-Read relativ zu allen Tokens",
458
+ "inputOutput": "Input / Output",
459
+ "inputOutputHint": "Drift zwischen eingehenden und erzeugten Tokens",
460
+ "topRequestModel": "Top Request-Modell",
461
+ "noRequestLeader": "Kein Request-Leader"
462
+ },
463
+ "forecast": {
464
+ "noData": "Keine Daten verfügbar",
465
+ "noForecast": "Keine Prognose verfügbar",
466
+ "requiresTwoDays": "Mindestens 2 Tage mit Daten benötigt",
467
+ "avgMonthlyCost": "Ø Monatskosten",
468
+ "avgYearlyCost": "Ø Jahreskosten",
469
+ "totalOverPeriods": "Gesamt: {{total}} über {{count}} {{unit}}",
470
+ "monthEndForecast": "Prognose Monatsende",
471
+ "low": "niedrig",
472
+ "medium": "mittel",
473
+ "high": "hoch",
474
+ "soFar": "Bisher: {{value}}",
475
+ "remainingDays": "Resttage: {{count}}",
476
+ "projectedPerDay": "Prognose {{value}}/Tag",
477
+ "vsLastWeek": "vs. Vorwoche",
478
+ "chartTitle": "Kostenprognose aktueller Monat",
479
+ "chartSubtitle": "Monatsend-Prognose auf Basis geglätteter Kalender-Tageskosten",
480
+ "lowerBound": "Untere Spanne",
481
+ "uncertaintyBand": "Unsicherheitsband",
482
+ "actualCost": "Ist-Kosten",
483
+ "projection": "Prognose"
484
+ },
485
+ "cacheRoi": {
486
+ "title": "Cache-Ersparnis (ROI)",
487
+ "noData": "Keine Daten verfügbar",
488
+ "heuristicFallback": "Für {{count}} {{modelsLabel}} ohne hinterlegte Preistabelle nutzt die ROI-Schätzung einen Heuristik-Fallback.",
489
+ "model": "Modell",
490
+ "models": "Modelle",
491
+ "withoutCache": "Ohne Cache",
492
+ "withCache": "Mit Cache",
493
+ "withCacheActual": "Mit Cache (tatsächlich)",
494
+ "savings": "Ersparnis",
495
+ "avgCostPerUnit": "Ø Kosten/{{unit}}",
496
+ "paid": "Bezahlt",
497
+ "saved": "Gespart"
498
+ },
499
+ "comparison": {
500
+ "title": "Perioden-Vergleich",
501
+ "notEnoughData": "Nicht genügend Daten für einen Vergleich",
502
+ "requiresDays": "Mindestens 7 Tage benötigt (aktuell: {{count}})",
503
+ "thisWeek": "Diese Woche",
504
+ "lastWeek": "Letzte Woche",
505
+ "thisMonth": "Dieser Monat",
506
+ "lastMonth": "Letzter Monat",
507
+ "week": "Woche",
508
+ "month": "Monat",
509
+ "metric": "Metrik",
510
+ "delta": "Delta",
511
+ "cost": "Kosten",
512
+ "tokens": "Tokens",
513
+ "avgPerDay": "Ø/Tag",
514
+ "cacheRate": "Cache-Rate",
515
+ "days": "Tage"
516
+ },
517
+ "anomaly": {
518
+ "title": "Auffällige {{period}}",
519
+ "none": "Keine Anomalien erkannt",
520
+ "withinStdDev": "Alle Kosten liegen innerhalb von 2 Standardabweichungen",
521
+ "description": "{{period}} mit Kosten >2 Standardabweichungen vom Mittelwert ({{mean}} ± {{stdDev}})",
522
+ "critical": "kritisch"
523
+ },
524
+ "tables": {
525
+ "modelEfficiency": {
526
+ "title": "Modell-Effizienz",
527
+ "count": "{{count}} Modelle",
528
+ "topModel": "Top Modell",
529
+ "mostEfficient": "Effizientestes Modell",
530
+ "totalRequests": "Gesamt-Requests",
531
+ "topModelTokens": "Top Modell Tokens",
532
+ "share": "{{value}} Anteil",
533
+ "perModel": "{{value}} / Modell",
534
+ "more": "+{{count}} weitere",
535
+ "model": "Modell",
536
+ "cost": "Kosten",
537
+ "tokens": "Tokens",
538
+ "shareShort": "Anteil",
539
+ "req": "Req",
540
+ "reqShare": "Req %",
541
+ "costPerReq": "$ / Req",
542
+ "tokensPerReq": "Tokens / Req",
543
+ "cacheShare": "Cache %",
544
+ "thinkingShare": "Think %",
545
+ "avgPerUnit": "Ø/{{unit}}"
546
+ },
547
+ "providerEfficiency": {
548
+ "title": "Provider-Effizienz",
549
+ "count": "{{count}} Anbieter",
550
+ "leadProvider": "Lead Provider",
551
+ "mostEfficient": "Effizientester Provider",
552
+ "totalRequests": "Gesamt-Requests",
553
+ "share": "{{value}} Anteil",
554
+ "perProvider": "{{value}} / Anbieter",
555
+ "avgPerUnit": "Ø/{{unit}}",
556
+ "provider": "Provider",
557
+ "cost": "Kosten",
558
+ "shareShort": "Anteil",
559
+ "req": "Req",
560
+ "tokens": "Tokens",
561
+ "costPerReq": "$ / Req",
562
+ "costPerMillion": "$/1M",
563
+ "cacheShare": "Cache %"
564
+ },
565
+ "recentDays": {
566
+ "daysDetail": "Letzte Tage im Detail",
567
+ "monthsDetail": "Monate im Detail",
568
+ "yearsDetail": "Jahre im Detail",
569
+ "showing": "Zeige {{shown}} von {{total}} {{unit}}",
570
+ "showLess": "Weniger anzeigen",
571
+ "showAll": "Alle anzeigen",
572
+ "totalCost": "Gesamtkosten",
573
+ "totalTokens": "Gesamt-Tokens",
574
+ "requests": "Requests",
575
+ "cacheReadShare": "Cache Read Anteil",
576
+ "peak": "Peak",
577
+ "previousDay": "Vortag",
578
+ "avg7d": "7T-Ø",
579
+ "reqAvg": "Req-Ø",
580
+ "date": "Datum",
581
+ "cost": "Kosten",
582
+ "tokens": "Tokens",
583
+ "models": "Modelle"
584
+ }
585
+ },
586
+ "helpPanel": {
587
+ "chartsAndFeatures": "Charts & Features",
588
+ "metricLabels": {
589
+ "totalCost": "Gesamtkosten",
590
+ "totalTokens": "Tokens gesamt",
591
+ "activeDays": "Aktive Tage",
592
+ "topModel": "Top-Modell",
593
+ "cacheHitRate": "Cache-Hit-Rate",
594
+ "costPerMillion": "Kosten / 1M Tokens",
595
+ "mostExpensiveDay": "Teuerster Tag",
596
+ "cheapestDay": "Günstigster Tag",
597
+ "avgCostPerDay": "Ø Kosten / Tag",
598
+ "outputTokens": "Output-Tokens"
599
+ },
600
+ "chartLabels": {
601
+ "costOverTime": "Kosten über Zeit",
602
+ "costByModel": "Kosten nach Modell",
603
+ "costByModelOverTime": "Kosten/Modell über Zeit",
604
+ "cumulativeCost": "Kumulative Kosten",
605
+ "costByWeekday": "Kosten nach Wochentag",
606
+ "tokensOverTime": "Tokens über Zeit",
607
+ "requestsOverTime": "Requests im Zeitverlauf",
608
+ "requestCacheHitRate": "Cache-Hit-Rate nach Modell",
609
+ "tokenTypes": "Token-Typen",
610
+ "tokenEfficiency": "Token-Effizienz",
611
+ "modelMix": "Modell-Mix",
612
+ "distributionAnalysis": "Verteilungen",
613
+ "correlationAnalysis": "Korrelationen",
614
+ "heatmap": "Kosten-Heatmap",
615
+ "requestHeatmap": "Request-Heatmap",
616
+ "tokenHeatmap": "Token-Heatmap",
617
+ "forecast": "Prognose",
618
+ "cacheROI": "Cache-ROI",
619
+ "periodComparison": "Periodenvergleich",
620
+ "anomalyDetection": "Anomalie-Erkennung"
621
+ },
622
+ "sectionLabels": {
623
+ "insights": "Insights",
624
+ "metrics": "Metriken",
625
+ "today": "Heute",
626
+ "currentMonth": "Monat",
627
+ "activity": "Aktivität",
628
+ "forecastCache": "Prognose & Cache",
629
+ "costAnalysis": "Kostenanalyse",
630
+ "tokenAnalysis": "Token-Analyse",
631
+ "requestAnalysis": "Request-Analyse",
632
+ "advancedAnalysis": "Verteilungen & Risiko",
633
+ "comparisons": "Vergleiche & Anomalien",
634
+ "tables": "Tabellen",
635
+ "limits": "Limits & Subscriptions"
636
+ },
637
+ "featureLabels": {
638
+ "requestQuality": "Request-Qualität",
639
+ "providerLimits": "Limits & Subscriptions",
640
+ "concentrationRisk": "Konzentrationsrisiko",
641
+ "providerEfficiency": "Provider-Effizienz",
642
+ "modelEfficiency": "Modell-Effizienz",
643
+ "recentDays": "Zeiträume im Detail"
644
+ }
645
+ },
646
+ "autoImportModal": {
647
+ "title": "Toktrack Auto-Import",
648
+ "description": "Importiert lokale Nutzungsdaten automatisch via lokalem `toktrack`, `bunx` oder `npm exec` und speichert sie nur auf diesem Gerät.",
649
+ "connecting": "Verbinde...",
650
+ "checkingTool": "Prüfe {{tool}}...",
651
+ "toolFound": "{{tool}} gefunden ({{method}}, v{{version}})",
652
+ "toolNotFound": "{{tool}} nicht gefunden",
653
+ "importedDays": "{{days}} Tage importiert ({{cost}} USD)",
654
+ "checkingPrerequisites": "Prüfe Voraussetzungen...",
655
+ "importingData": "Importiere Daten...",
656
+ "startingLocalImport": "Starte lokalen toktrack-Import...",
657
+ "loadingUsageData": "Lade Nutzungsdaten via {{command}}...",
658
+ "processingUsageData": "Verarbeite Nutzungsdaten... ({{seconds}}s)",
659
+ "serverConnectionLost": "Verbindung zum Server verloren.",
660
+ "autoImportRunning": "Ein Auto-Import läuft bereits. Bitte warten.",
661
+ "noRunnerFound": "Kein lokales toktrack, Bun oder npm exec gefunden.",
662
+ "errorPrefix": "Fehler: {{message}}",
663
+ "loadedDays": "{{days}} Tage geladen ({{cost}} USD)",
664
+ "errorOccurred": "Fehler aufgetreten",
665
+ "close": "Schliessen"
666
+ },
667
+ "commandPalette": {
668
+ "title": "Command Palette",
669
+ "description": "Tastaturgesteuerte Befehlsauswahl für Navigation und Aktionen im ttdash Dashboard.",
670
+ "placeholder": "Befehl suchen...",
671
+ "empty": "Kein Befehl gefunden.",
672
+ "groups": {
673
+ "actions": "Aktionen",
674
+ "filters": "Filter & Ansicht",
675
+ "navigation": "Navigation",
676
+ "view": "Ansicht",
677
+ "language": "Sprache",
678
+ "help": "Hilfe",
679
+ "providers": "Anbieter",
680
+ "models": "Modelle"
681
+ },
682
+ "commands": {
683
+ "autoImport": {
684
+ "label": "Auto-Import starten",
685
+ "description": "Lokalen toktrack Import ausführen"
686
+ },
687
+ "openSettings": {
688
+ "label": "Einstellungen öffnen",
689
+ "description": "Backups, App-Optionen und Provider Limits verwalten"
690
+ },
691
+ "exportCsv": {
692
+ "label": "CSV exportieren",
693
+ "description": "Aktuell gefilterte Daten exportieren"
694
+ },
695
+ "generateReport": {
696
+ "label": "PDF-Report generieren",
697
+ "labelLoading": "PDF-Report wird generiert",
698
+ "description": "Aktuell gefilterte Daten als PDF exportieren"
699
+ },
700
+ "upload": {
701
+ "label": "JSON hochladen",
702
+ "description": "toktrack oder Legacy JSON importieren"
703
+ },
704
+ "delete": {
705
+ "label": "Daten löschen",
706
+ "description": "Lokalen Datensatz entfernen"
707
+ },
708
+ "viewDaily": {
709
+ "label": "Zur Tagesansicht wechseln",
710
+ "description": "Daten pro Tag anzeigen"
711
+ },
712
+ "viewMonthly": {
713
+ "label": "Zur Monatsansicht wechseln",
714
+ "description": "Daten pro Monat anzeigen"
715
+ },
716
+ "viewYearly": {
717
+ "label": "Zur Jahresansicht wechseln",
718
+ "description": "Daten pro Jahr anzeigen"
719
+ },
720
+ "preset7d": {
721
+ "label": "Zeitraum: letzte 7 Tage",
722
+ "description": "Setzt den Datumsfilter auf 7 Tage"
723
+ },
724
+ "preset30d": {
725
+ "label": "Zeitraum: letzte 30 Tage",
726
+ "description": "Setzt den Datumsfilter auf 30 Tage"
727
+ },
728
+ "presetMonth": {
729
+ "label": "Zeitraum: aktueller Monat",
730
+ "description": "Setzt den Datumsfilter auf den laufenden Monat"
731
+ },
732
+ "presetYear": {
733
+ "label": "Zeitraum: aktuelles Jahr",
734
+ "description": "Setzt den Datumsfilter auf das laufende Jahr"
735
+ },
736
+ "presetAll": {
737
+ "label": "Zeitraum: alle Daten",
738
+ "description": "Entfernt Preset-Zeitraumfilter"
739
+ },
740
+ "clearProviders": {
741
+ "label": "Anbieterfilter zurücksetzen",
742
+ "description": "Alle aktiven Anbieterfilter entfernen"
743
+ },
744
+ "clearModels": {
745
+ "label": "Modellfilter zurücksetzen",
746
+ "description": "Alle aktiven Modellfilter entfernen"
747
+ },
748
+ "clearDates": {
749
+ "label": "Datumsfilter zurücksetzen",
750
+ "description": "Start- und Enddatum entfernen"
751
+ },
752
+ "resetAll": {
753
+ "label": "Alle Filter zurücksetzen",
754
+ "description": "Den Standardzustand der Dashboard-Filter wiederherstellen"
755
+ },
756
+ "scrollTop": {
757
+ "label": "Nach oben scrollen",
758
+ "description": "Zum Seitenanfang springen"
759
+ },
760
+ "scrollBottom": {
761
+ "label": "Nach unten scrollen",
762
+ "description": "Zum Seitenende springen"
763
+ },
764
+ "filters": {
765
+ "label": "Zu Filtern",
766
+ "description": "Springt zur Filterleiste"
767
+ },
768
+ "goToSection": {
769
+ "label": "Zu {{section}}",
770
+ "description": "Springt zur Sektion {{section}}"
771
+ },
772
+ "insights": {
773
+ "label": "Zu Insights",
774
+ "description": "Springt zur Executive Summary"
775
+ },
776
+ "metrics": {
777
+ "label": "Zu Metriken",
778
+ "description": "Springt zu den KPI-Karten"
779
+ },
780
+ "today": {
781
+ "label": "Zu Heute",
782
+ "description": "Springt zu den KPIs des aktuellen Tages"
783
+ },
784
+ "month": {
785
+ "label": "Zu Monat",
786
+ "description": "Springt zu den KPIs des aktuellen Monats"
787
+ },
788
+ "activity": {
789
+ "label": "Zu Aktivität",
790
+ "description": "Springt zur Aktivitäts-Heatmap"
791
+ },
792
+ "forecastCache": {
793
+ "label": "Zu Prognose & Cache",
794
+ "description": "Springt zu Forecast und Cache ROI"
795
+ },
796
+ "limits": {
797
+ "label": "Zu Limits & Subscriptions",
798
+ "description": "Springt zur Limits-Sektion"
799
+ },
800
+ "charts": {
801
+ "label": "Zu Kostenanalyse",
802
+ "description": "Springt zu den Kostencharts"
803
+ },
804
+ "tokenAnalysis": {
805
+ "label": "Zu Token-Analyse",
806
+ "description": "Springt zu Token-Charts und Verteilungen"
807
+ },
808
+ "requestAnalysis": {
809
+ "label": "Zu Request-Analyse",
810
+ "description": "Springt zu Requests im Zeitverlauf und Request-Verteilung"
811
+ },
812
+ "comparisons": {
813
+ "label": "Zu Vergleiche & Anomalien",
814
+ "description": "Springt zu Periodenvergleich und Auffälligkeiten"
815
+ },
816
+ "tables": {
817
+ "label": "Zu Tabellen",
818
+ "description": "Springt zu den Detailtabellen"
819
+ },
820
+ "themeLight": {
821
+ "label": "Light Mode aktivieren",
822
+ "description": "Zwischen hellem und dunklem Theme wechseln"
823
+ },
824
+ "themeDark": {
825
+ "label": "Dark Mode aktivieren",
826
+ "description": "Zwischen hellem und dunklem Theme wechseln"
827
+ },
828
+ "languageGerman": {
829
+ "label": "Auf Deutsch wechseln",
830
+ "description": "Die Dashboard-Sprache auf Deutsch umstellen"
831
+ },
832
+ "languageEnglish": {
833
+ "label": "Auf Englisch wechseln",
834
+ "description": "Die Dashboard-Sprache auf Englisch umstellen"
835
+ },
836
+ "help": {
837
+ "label": "Hilfe & Tastenkürzel öffnen",
838
+ "description": "Öffnet die Hilfeübersicht"
839
+ }
840
+ }
841
+ },
842
+ "settings": {
843
+ "modal": {
844
+ "title": "Einstellungen",
845
+ "description": "Verwalte App-Backups, gespeicherte Daten und Provider Limits an einem Ort.",
846
+ "dataStatus": "Datenstatus",
847
+ "lastLoaded": "Zuletzt geladen",
848
+ "loadedVia": "Geladen über",
849
+ "cliAutoLoad": "CLI Auto-Load",
850
+ "defaultFiltersTitle": "Standardfilter fürs Dashboard",
851
+ "defaultFiltersDescription": "Lege den Filterzustand fest, der beim Öffnen des Dashboards und beim Zurücksetzen verwendet wird.",
852
+ "defaultViewMode": "Standardansicht",
853
+ "defaultDateRange": "Standardzeitraum",
854
+ "filterProviders": "Standard-Anbieterfilter",
855
+ "filterModels": "Standard-Modellfilter",
856
+ "noModels": "Keine Modelle im geladenen Report gefunden.",
857
+ "sectionVisibilityTitle": "Sichtbare Dashboard-Sektionen",
858
+ "sectionVisibilityDescription": "Steuere, welche Sektionen im Dashboard gerendert werden und in welcher Reihenfolge sie erscheinen.",
859
+ "sectionOrderHint": "Ziehe die Sektionen per Drag and Drop in die gewünschte Reihenfolge. Die aktuelle Reihenfolge ist das Standardlayout.",
860
+ "positionLabel": "Position {{position}} von {{total}}",
861
+ "moveSectionUp": "{{section}} nach oben verschieben",
862
+ "moveSectionDown": "{{section}} nach unten verschieben",
863
+ "settingsBackupTitle": "Einstellungen sichern",
864
+ "settingsBackupDescription": "Exportiert und importiert Sprache, Theme, Limits und die gespeicherten Lade-Metadaten als versioniertes Backup.",
865
+ "dataBackupTitle": "Daten sichern",
866
+ "dataBackupDescription": "Exportiert den lokal gespeicherten Nutzungsstand als Backup und importiert Backups konservativ zurück.",
867
+ "dataImportPolicy": "Beim Datenimport werden nur fehlende Tage ergänzt. Bestehende Tage mit abweichenden Werten bleiben lokal erhalten und werden als Konflikt gemeldet.",
868
+ "dataImportReplaceHint": "Wenn du einen Datensatz vollständig ersetzen willst, nutze weiter den normalen JSON-Upload im Header.",
869
+ "providerLimitsTitle": "Provider Limits",
870
+ "providerLimitsDescription": "Definiere Subscription und Monatslimit pro Anbieter. Nur Anbieter aus dem aktuell geladenen Report sind editierbar.",
871
+ "noProviders": "Keine Anbieter im geladenen Report gefunden.",
872
+ "exportSettings": "Einstellungen exportieren",
873
+ "importSettings": "Einstellungen importieren",
874
+ "exportData": "Daten exportieren",
875
+ "importData": "Daten importieren",
876
+ "close": "Schliessen",
877
+ "save": "Speichern",
878
+ "viewModes": {
879
+ "daily": "Täglich",
880
+ "monthly": "Monatlich",
881
+ "yearly": "Jährlich"
882
+ },
883
+ "datePresets": {
884
+ "all": "Alle Daten",
885
+ "7d": "Letzte 7 Tage",
886
+ "30d": "Letzte 30 Tage",
887
+ "month": "Aktueller Monat",
888
+ "year": "Aktuelles Jahr"
889
+ },
890
+ "sources": {
891
+ "file": "Datei-Upload",
892
+ "auto-import": "Auto-Import",
893
+ "cli-auto-load": "CLI Auto-Load",
894
+ "unknown": "Unbekannt"
895
+ }
896
+ }
897
+ },
898
+ "limits": {
899
+ "sectionTitle": "Limits & Subscriptions",
900
+ "sectionDescription": "Budget-Risiko getrennt von Subscription-Wirkung im aktuellen Filterkontext",
901
+ "providersBadge": "{{count}} Anbieter",
902
+ "warningBanner": "{{count}} Anbieter haben ihr Monatslimit im aktuellen Ausschnitt erreicht oder überschritten.",
903
+ "cards": {
904
+ "atLimit": "Anbieter am Limit",
905
+ "nearLimit": "Nahe am Limit",
906
+ "subscriptionVolume": "Subscription-Volumen",
907
+ "subscriptionValue": "Subscription-Mehrwert",
908
+ "nearLimitHint": "ab 80% Auslastung",
909
+ "subscriptionVolumeHint": "fixe Kosten / Monat",
910
+ "subscriptionValueHint": "Usage über Subscription",
911
+ "noMonth": "Kein Monat"
912
+ },
913
+ "statuses": {
914
+ "limitExceeded": "Limit überschritten",
915
+ "budgetTight": "Budget angespannt",
916
+ "budgetStable": "Budget stabil",
917
+ "noLimit": "Kein Limit gesetzt",
918
+ "noSubscription": "Keine Subscription",
919
+ "subscriptionPaysOff": "Subscription zahlt sich aus",
920
+ "belowSubscription": "Noch unter Subscription"
921
+ },
922
+ "tracks": {
923
+ "budgetTitle": "Budget-Status je Anbieter",
924
+ "budgetSubtitle": "Jeder Track zeigt pro Anbieter direkt den Abstand bis zum Limit oder den bereits eingetretenen Überzug",
925
+ "budgetNoMonth": "Kein Monat im aktuellen Ausschnitt",
926
+ "subscriptionTitle": "Subscription-Status je Anbieter",
927
+ "subscriptionSubtitle": "Jeder Track zeigt pro Anbieter direkt den Abstand zum Break-even oder den bereits erreichten Mehrwert",
928
+ "subscriptionNoMonth": "Kein Monat im aktuellen Ausschnitt",
929
+ "portfolioTitle": "Portfolio-Entwicklung",
930
+ "portfolioSubtitle": "Monatlicher Verlauf von Usage, konfigurierten Limits und Subscription-Wirkung",
931
+ "usage": "Usage",
932
+ "limit": "Limit",
933
+ "subscription": "Subscription",
934
+ "breakEven": "Break-even",
935
+ "currentlyUsed": "Aktuell verbraucht",
936
+ "remainingToLimit": "Bis Limit offen",
937
+ "alreadyOverLimit": "Schon darüber",
938
+ "remainingToBreakEven": "Bis Break-even offen",
939
+ "alreadyAboveBreakEven": "Schon darüber",
940
+ "usageFocusMonth": "Kosten Fokusmonat",
941
+ "limitSubscription": "Limit / Subscription",
942
+ "budgetRisk": "Budget-Risiko",
943
+ "subscriptionEffect": "Subscription-Wirkung",
944
+ "stillToLimit": "Noch {{value}} bis zum Limit",
945
+ "alreadyAboveLimit": "Schon {{value}} über Limit",
946
+ "stillToBreakEven": "Noch {{value}} bis Break-even",
947
+ "alreadyAboveBreakEvenText": "Schon {{value}} über Break-even",
948
+ "noSubscriptionSet": "Keine Subscription gesetzt"
949
+ },
950
+ "modal": {
951
+ "title": "Provider Limits",
952
+ "description": "Definiere pro Anbieter Subscription und Monatslimit. Nur Anbieter aus dem aktuell geladenen Report sind editierbar. Ein Limit von 0 bedeutet kein Limit.",
953
+ "dataStatus": "Datenstatus",
954
+ "lastLoaded": "Zuletzt geladen",
955
+ "loadedVia": "Geladen über",
956
+ "cliAutoLoad": "CLI Auto-Load",
957
+ "noProviders": "Keine Anbieter im geladenen Report gefunden.",
958
+ "hasSubscription": "Subscription vorhanden",
959
+ "subscriptionPerMonth": "Subscription $/Monat",
960
+ "monthlyLimit": "Monatslimit $",
961
+ "close": "Schliessen",
962
+ "save": "Speichern",
963
+ "sources": {
964
+ "file": "Datei-Upload",
965
+ "auto-import": "Auto-Import",
966
+ "cli-auto-load": "CLI Auto-Load",
967
+ "unknown": "Unbekannt"
968
+ }
969
+ }
970
+ },
971
+ "report": {
972
+ "title": "TTDash Report"
973
+ },
974
+ "api": {
975
+ "fetchUsageFailed": "Fehler beim Laden der Daten",
976
+ "uploadFailed": "Upload fehlgeschlagen",
977
+ "deleteFailed": "Löschen fehlgeschlagen",
978
+ "importUsageFailed": "Datenimport fehlgeschlagen",
979
+ "importSettingsFailed": "Einstellungs-Import fehlgeschlagen",
980
+ "pdfFailed": "PDF-Generierung fehlgeschlagen"
981
+ },
982
+ "toasts": {
983
+ "fileLoaded": "Datei {{name}} erfolgreich geladen",
984
+ "fileReadFailed": "Datei konnte nicht gelesen werden",
985
+ "dataDeleted": "Daten gelöscht",
986
+ "csvExported": "CSV exportiert",
987
+ "dataImported": "Daten erfolgreich importiert",
988
+ "settingsExported": "Einstellungs-Backup exportiert",
989
+ "dataExported": "Daten-Backup exportiert",
990
+ "noDataToExport": "Keine Daten zum Exportieren vorhanden",
991
+ "settingsImported": "Einstellungen aus {{name}} importiert",
992
+ "settingsSaved": "Einstellungen gespeichert",
993
+ "dataBackupImported": "Backup importiert: {{added}} neue Tage ergänzt, {{unchanged}} identische Tage übersprungen",
994
+ "dataBackupImportedWithConflicts": "Backup importiert: {{added}} neue Tage ergänzt, {{conflicts}} Konflikttage lokal beibehalten"
995
+ }
996
+ }