fixed notification system and added a new tenant notifications receipt table to track read status and filter messages by scope.

This commit is contained in:
Codex Agent
2025-12-17 10:57:19 +01:00
parent 0aae494945
commit d64839ba2f
31 changed files with 1089 additions and 127 deletions

View File

@@ -73,6 +73,12 @@
"photoLimit": "Für dieses Event ist das Foto-Upload-Limit erreicht.",
"goToBilling": "Zur Paketverwaltung"
},
"common": {
"loadMore": "Mehr laden",
"processing": "Verarbeite …",
"close": "Schließen",
"reset": "Zurücksetzen"
},
"limits": {
"photosTitle": "Foto-Limit",
"photosWarning": "Nur noch {{remaining}} von {{limit}} Foto-Uploads verfügbar.",

View File

@@ -149,6 +149,13 @@
"title": "Achtung",
"description": "Paket-Hinweise und Limits, die du im Blick behalten solltest."
},
"common": {
"all": "Alle",
"loadMore": "Mehr laden",
"processing": "Verarbeite …",
"close": "Schließen",
"reset": "Zurücksetzen"
},
"photos": {
"moderation": {
"title": "Fotos moderieren",
@@ -173,6 +180,7 @@
"all": "Alle",
"featured": "Highlights",
"hidden": "Versteckt",
"pending": "In Prüfung",
"photobooth": "Photobooth",
"search": "Uploads durchsuchen …",
"count": "{{count}} Uploads",
@@ -185,11 +193,77 @@
"show": "Einblenden",
"feature": "Als Highlight setzen",
"unfeature": "Highlight entfernen",
"approve": "Freigeben",
"approve": "Freigeben",
"delete": "Löschen",
"copy": "Link kopieren",
"copySuccess": "Link kopiert"
}
},
"limits": {
"photosBlocked": "Upload-Limit erreicht. Kaufe weitere Fotos, um fortzufahren.",
"photosWarning": "{{remaining}} von {{limit}} Fotos verbleiben.",
"guestsBlocked": "Gäste-Limit erreicht.",
"guestsWarning": "{{remaining}} von {{limit}} Gästen verbleiben.",
"galleryExpired": "Galerie abgelaufen. Verlängere die Laufzeit.",
"galleryWarningDay": "Galerie läuft in {{days}} Tag ab.",
"galleryWarningDays": "Galerie läuft in {{days}} Tagen ab.",
"buyMorePhotos": "Mehr Fotos freischalten",
"extendGallery": "Galerie verlängern",
"buyMoreGuests": "Mehr Gäste freischalten"
},
"notificationLogs": {
"photoLimit": {
"title": "Foto-Limit erreicht",
"body": "{{event}} hat das Foto-Limit von {{limit}} erreicht."
},
"guestLimit": {
"title": "Gäste-Limit erreicht",
"body": "{{event}} hat das Gäste-Limit von {{limit}} erreicht."
},
"eventLimit": {
"title": "Event-Kontingent erreicht",
"body": "Dein Paket erlaubt keine weiteren Events. Limit: {{limit}}."
},
"galleryWarning": {
"title": "Galerie läuft bald ab",
"body": "{{event}} läuft in {{days}} Tagen ab."
},
"galleryExpired": {
"title": "Galerie abgelaufen",
"body": "Galerie von {{event}} ist offline. Verlängern zum Reaktivieren."
},
"photoThreshold": {
"title": "Foto-Nutzung Warnung",
"body": "{{event}} liegt bei {{used}} / {{limit}} Fotos."
},
"guestThreshold": {
"title": "Gäste-Nutzung Warnung",
"body": "{{event}} liegt bei {{used}} / {{limit}} Gästen."
},
"generic": {
"body": "Benachrichtigung über {{channel}}."
},
"filterEmpty": "Keine Benachrichtigungen für dieses Event.",
"clearFilter": "Alle Benachrichtigungen anzeigen",
"filter": {
"unread": "Ungelesen",
"read": "Gelesen",
"all": "Alle"
},
"scope": {
"all": "Alle Bereiche",
"photos": "Fotos",
"guests": "Gäste",
"gallery": "Galerie",
"events": "Events",
"package": "Paket",
"general": "Allgemein"
},
"markAllRead": "Alle als gelesen markieren",
"markFailed": "Benachrichtigungen konnten nicht aktualisiert werden.",
"unread": "Ungelesen"
},
"events": {
"detail": {
"kpi": {
@@ -564,6 +638,9 @@
"eventTasks": {
"title": "Aufgaben & Missionen",
"subtitle": "Stelle Mission Cards und Aufgaben für dieses Event zusammen.",
"search": "Aufgaben suchen",
"emotionFilter": "Emotionen filtern",
"allEmotions": "Alle",
"actions": {
"back": "Zurück zur Übersicht",
"assign": "Ausgewählte Tasks zuweisen"
@@ -579,6 +656,8 @@
"emotions": {
"error": "Emotionen konnten nicht geladen werden."
},
"manageEmotions": "Emotionen verwalten",
"manageEmotionsHint": "Filtere und halte deine Taxonomie sauber.",
"alerts": {
"notFoundTitle": "Event nicht gefunden",
"notFoundDescription": "Bitte kehre zur Eventliste zurück."
@@ -1819,7 +1898,9 @@
"visibilityFailed": "Sichtbarkeit konnte nicht geändert werden.",
"featureSuccess": "Als Highlight markiert",
"unfeatureSuccess": "Highlight entfernt",
"featureFailed": "Highlight konnte nicht geändert werden."
"featureFailed": "Highlight konnte nicht geändert werden.",
"approveSuccess": "Foto freigegeben",
"approveFailed": "Freigabe fehlgeschlagen."
},
"mobileProfile": {
"title": "Profil",
@@ -1952,6 +2033,7 @@
"mobileNotifications": {
"title": "Benachrichtigungen",
"empty": "Keine Benachrichtigungen vorhanden.",
"filterByEvent": "Nach Event filtern"
"filterByEvent": "Nach Event filtern",
"unknownEvent": "Event"
}
}