Files
craftvia/messages/de/notifications.json
T
msolarczekandClaude Opus 5 8aedc642ca L10b Betrieb & Aufräumen: Audit nach Commit, mergeCustomers atomar, Audit-Aktion read
- Aufräumpunkt h: writeAuditLog puffert innerhalb von inTransaction (AsyncLocalStorage) und
  schreibt nach dem Commit; bei Rollback werden die Einträge verworfen, nur „denied" bleibt.
  Verschachtelte Transaktionen nutzen den äußeren Puffer.
- Aufräumpunkt d: mergeCustomers läuft über inTransaction (sequenziell, geschützter Statuswechsel)
  statt ctx.db.$transaction([...]) und ist damit auch bei RLS_ENFORCED=true atomar und in äußere
  Transaktionen einbettbar.
- Aufräumpunkt e: AuditAction „read" (+ Label im Audit-Viewer de/en); Notdienst-Kunden- und
  Objektsuche protokollieren als „read" statt „export".

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 18:19:19 +02:00

185 lines
8.1 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"bell": {
"label": "Benachrichtigungen",
"unreadCount": "{count, plural, =0 {Keine ungelesenen} one {# ungelesen} other {# ungelesen}}",
"empty": "Keine Benachrichtigungen.",
"markAllRead": "Alle gelesen",
"showAll": "Alle anzeigen"
},
"list": {
"crumb": "Übersicht",
"title": "Benachrichtigungen",
"sub": "Zuweisungen, Berichte, Notdienst und Fehler – neueste zuerst.",
"filterStatus": "Status",
"filterType": "Art",
"statusAll": "Alle",
"statusUnread": "Ungelesen",
"statusRead": "Gelesen",
"typeAll": "Alle Arten",
"apply": "Filtern",
"reset": "Zurücksetzen",
"empty": "Keine Benachrichtigungen für diese Auswahl.",
"unread": "Neu",
"read": "Gelesen",
"open": "Öffnen",
"markRead": "Als gelesen markieren",
"markAllRead": "Alle als gelesen markieren",
"previous": "Zurück",
"next": "Weiter",
"page": "Seite {page} von {pages}"
},
"types": {
"work_order_assigned": "Teamzuweisung",
"work_order_changed": "Auftrag geändert",
"work_order_cancelled": "Auftrag storniert",
"work_order_started": "Auftrag gestartet",
"work_order_daily_report_created": "Tagesbericht erstellt",
"work_order_technically_completed": "Technisch abgeschlossen",
"work_order_signature_missing": "Unterschrift fehlt",
"work_order_missing_required": "Pflichtangaben fehlen",
"work_order_released_for_billing": "Zur Abrechnung freigegeben",
"report_submitted": "Bericht zur Prüfung",
"report_approved": "Bericht freigegeben",
"report_rejected": "Bericht zurückgewiesen",
"emergency_created": "Notdiensteinsatz erstellt",
"emergency_completed": "Notdiensteinsatz abgeschlossen",
"import_ready_for_review": "Import zur Prüfung",
"import_failed": "Fehler bei Dokumentverarbeitung",
"sync_failed": "Synchronisationsfehler"
},
"events": {
"work_order_assigned": { "title": "Neuer Auftrag {number}", "message": "{title} – {customer} wurde Ihrem Team zugewiesen." },
"work_order_changed": { "title": "Auftrag {number} geändert", "message": "{title} – {customer}: Angaben wurden aktualisiert." },
"work_order_cancelled": { "title": "Auftrag {number} storniert", "message": "{title} – {customer} wurde storniert." },
"work_order_started": { "title": "Auftrag {number} gestartet", "message": "{actor} hat den Einsatz bei {customer} begonnen." },
"work_order_daily_report_created": { "title": "Tagesbericht zu {number}", "message": "{actor} hat einen Tagesbericht für {customer} erstellt." },
"work_order_technically_completed": { "title": "Auftrag {number} technisch abgeschlossen", "message": "{title} – {customer}: Einsatz vor Ort beendet." },
"work_order_signature_missing": { "title": "Unterschrift fehlt: {number}", "message": "{title} – {customer}: Kundenunterschrift liegt nicht vor." },
"work_order_missing_required": { "title": "Pflichtangaben fehlen: {number}", "message": "{title} – {customer}: Dokumentation unvollständig." },
"work_order_released_for_billing": { "title": "Auftrag {number} zur Abrechnung", "message": "{title} – {customer} ist bereit zur Abrechnung." },
"report_submitted": { "title": "Bericht zur Prüfung: {number}", "message": "{actor} hat einen Bericht zu {title} eingereicht." },
"report_approved": { "title": "Bericht freigegeben: {number}", "message": "Der Bericht zu {title} wurde freigegeben." },
"report_rejected": { "title": "Bericht zurückgewiesen: {number}", "message": "Der Bericht zu {title} braucht eine Korrektur." },
"emergency_created": { "title": "Notdiensteinsatz {number} erstellt", "message": "{actor} hat einen Notdiensteinsatz bei {customer} angelegt." },
"emergency_completed": { "title": "Notdiensteinsatz {number} abgeschlossen", "message": "{customer}: zur Prüfung und Abrechnung." },
"import_ready_for_review": { "title": "Import zur Prüfung bereit", "message": "Die Daten aus {fileName} liegen zur Prüfung vor." },
"import_failed": { "title": "Fehler bei Dokumentverarbeitung", "message": "{fileName} konnte nicht verarbeitet werden." },
"sync_failed": { "title": "Synchronisation fehlgeschlagen", "message": "Eine Änderung konnte nicht übernommen werden ({reason})." }
},
"fallback": {
"unknown": "unbekannt",
"system": "System",
"document": "Dokument"
},
"preferences": {
"title": "Benachrichtigungen",
"sub": "In der App erhalten Sie alle Benachrichtigungen. Hier legen Sie fest, welche zusätzlich per E-Mail kommen.",
"email": "E-Mail",
"mandatory": "Pflicht – nicht abbestellbar",
"save": "Speichern",
"saved": "Einstellungen gespeichert."
},
"mailSettings": {
"crumb": "Einstellungen",
"title": "E-Mail-Versand",
"sub": "Absender, Antwortadresse und feste Empfänger für Notdienst und Abrechnung.",
"back": "Zurück zu Einstellungen",
"sender": "Absender",
"fromName": "Absendername",
"fromNameHint": "Erscheint als Name im Posteingang. Leer = Firmenname.",
"fromAddress": "Absenderadresse",
"fromAddressHint": "Die Adresse bleibt {address}, damit Mails zugestellt werden (SPF/DKIM).",
"replyTo": "Antwortadresse",
"replyToHint": "Antworten auf Benachrichtigungen gehen an diese Adresse.",
"recipients": "Feste Empfänger",
"emergencyRecipients": "Empfänger Notdienst",
"emergencyHint": "Eine Adresse je Zeile. Erhalten jeden neuen und abgeschlossenen Notdiensteinsatz.",
"billingRecipients": "Empfänger Abrechnung",
"billingHint": "Eine Adresse je Zeile. Erhalten Aufträge, die zur Abrechnung freigegeben sind. Leer = Backoffice.",
"save": "Speichern",
"saved": "Einstellungen gespeichert.",
"invalid": "Bitte Eingaben prüfen: {detail}"
},
"audit": {
"crumb": "Einstellungen",
"title": "Audit-Protokoll",
"sub": "Wer hat wann was geändert – nur lesbar.",
"back": "Zurück zu Einstellungen",
"from": "Von",
"to": "Bis",
"actor": "Benutzer",
"actorAll": "Alle Benutzer",
"action": "Aktion",
"actionAll": "Alle Aktionen",
"entity": "Objektart",
"entityAll": "Alle Objektarten",
"entityId": "Objekt-ID",
"apply": "Filtern",
"reset": "Zurücksetzen",
"time": "Zeitpunkt",
"object": "Objekt",
"result": "Ergebnis",
"resultOk": "Erfolgreich",
"resultDenied": "Abgelehnt",
"details": "Details",
"empty": "Keine Einträge für diese Auswahl.",
"total": "{count, plural, one {# Eintrag} other {# Einträge}}",
"previous": "Zurück",
"next": "Weiter",
"page": "Seite {page} von {pages}",
"system": "System",
"platform": "Plattform",
"detailTitle": "Eintrag im Audit-Protokoll",
"close": "Schließen",
"field": "Feld",
"before": "Vorher",
"after": "Nachher",
"changed": "geändert",
"noValues": "Keine Werte protokolliert.",
"ip": "IP-Adresse",
"userAgent": "User-Agent",
"notCaptured": "nicht erfasst",
"actions": {
"create": "Erstellt",
"update": "Geändert",
"delete": "Gelöscht",
"login": "Anmeldung",
"logout": "Abmeldung",
"denied": "Abgelehnt",
"export": "Export",
"read": "Lesezugriff",
"import": "Import",
"provision": "Eingerichtet",
"approve": "Freigegeben",
"reject": "Zurückgewiesen"
},
"entities": {
"user": "Benutzer",
"role": "Rolle",
"tenant": "Mandant",
"tenant_settings": "Einstellungen",
"tenant_mail_settings": "E-Mail-Versand",
"tenant_module": "Modul",
"module": "Modul",
"session": "Sitzung",
"account_inactive": "Inaktives Konto",
"work_order": "Auftrag",
"customer": "Kunde",
"site": "Objekt",
"team": "Team",
"report": "Bericht",
"signature": "Unterschrift",
"document": "Dokument",
"import_job": "Auftragsimport",
"material_usage": "Material",
"time_entry": "Arbeitszeit",
"work_session": "Einsatzzeit",
"photo": "Foto",
"voice_note": "Sprachnotiz",
"notification": "Benachrichtigung",
"notification_settings": "Benachrichtigungseinstellungen",
"sync_operation": "Synchronisation"
}
}
}