Limit-Status im Upload-Flow anzeigen (Warnbanner + Sperrzustände).

Upload-Fehlercodes auswerten und freundliche Dialoge zeigen.
This commit is contained in:
Codex Agent
2025-11-01 19:50:17 +01:00
parent 2c14493604
commit 79b209de9a
55 changed files with 3348 additions and 462 deletions

View File

@@ -28,5 +28,18 @@
"creditsExhausted": "Keine Event-Credits mehr verfügbar. Bitte buche Credits oder upgrade dein Paket.",
"photoLimit": "Für dieses Event ist das Foto-Upload-Limit erreicht.",
"goToBilling": "Zur Paketverwaltung"
},
"limits": {
"photosTitle": "Foto-Limit",
"photosWarning": "Nur noch {remaining} von {limit} Foto-Uploads verfügbar.",
"photosBlocked": "Foto-Uploads sind blockiert. Bitte Paket upgraden oder erweitern.",
"guestsTitle": "Gäste-Limit",
"guestsWarning": "Nur noch {remaining} von {limit} Gästelinks verfügbar.",
"guestsBlocked": "Gästeinladungen sind blockiert. Bitte Paket upgraden oder Kontingent freigeben.",
"galleryTitle": "Galerie",
"galleryWarningDay": "Galerie läuft in {days} Tag ab.",
"galleryWarningDays": "Galerie läuft in {days} Tagen ab.",
"galleryExpired": "Galerie ist abgelaufen. Gäste sehen keine Inhalte mehr.",
"unlimited": "Unbegrenzt"
}
}

View File

@@ -86,6 +86,18 @@
"description": "Aktives Paket und Historie einsehen."
}
},
"limitsCard": {
"title": "Kontingente & Laufzeiten",
"description": "Fokus-Event: {{name}}",
"descriptionFallback": "Kein Fokus-Event ausgewählt",
"photosLabel": "Foto-Uploads",
"guestsLabel": "Gastzugänge",
"galleryLabel": "Galerie-Laufzeit",
"usageLabel": "{{used}} von {{limit}} genutzt",
"remainingLabel": "{{remaining}} übrig (Limit {{limit}})",
"galleryExpires": "Läuft am {{date}} ab",
"galleryNoExpiry": "Keine Ablaufzeit hinterlegt"
},
"upcoming": {
"title": "Kommende Events",
"description": "Die nächsten Termine inklusive Status & Zugriff.",
@@ -158,6 +170,18 @@
"description": "Aktives Paket und Historie einsehen."
}
},
"limitsCard": {
"title": "Kontingente & Laufzeiten",
"description": "Fokus-Event: {{name}}",
"descriptionFallback": "Kein Fokus-Event ausgewählt",
"photosLabel": "Foto-Uploads",
"guestsLabel": "Gastzugänge",
"galleryLabel": "Galerie-Laufzeit",
"usageLabel": "{{used}} von {{limit}} genutzt",
"remainingLabel": "{{remaining}} übrig (Limit {{limit}})",
"galleryExpires": "Läuft am {{date}} ab",
"galleryNoExpiry": "Keine Ablaufzeit hinterlegt"
},
"upcoming": {
"title": "Kommende Events",
"description": "Die nächsten Termine inklusive Status & Zugriff.",

View File

@@ -32,6 +32,12 @@
"label": "Läuft ab",
"helper": "Automatische Verlängerung, falls aktiv"
}
},
"warnings": {
"noEvents": "Event-Kontingent aufgebraucht. Bitte Paket upgraden oder erneuern.",
"lowEvents": "Nur noch {{remaining}} Event-Slots verfügbar.",
"expiresSoon": "Paket läuft am {{date}} ab.",
"expired": "Paket ist abgelaufen."
}
},
"packages": {
@@ -43,7 +49,13 @@
"statusInactive": "Inaktiv",
"used": "Genutzte Events",
"available": "Verfügbar",
"expires": "Läuft ab"
"expires": "Läuft ab",
"warnings": {
"noEvents": "Event-Kontingent aufgebraucht.",
"lowEvents": "Nur noch {{remaining}} Events verbleiben.",
"expiresSoon": "Läuft am {{date}} ab.",
"expired": "Paket ist abgelaufen."
}
}
},
"transactions": {
@@ -81,6 +93,39 @@
}
}
},
"photos": {
"moderation": {
"title": "Fotos moderieren",
"subtitle": "Setze Highlights oder entferne unpassende Uploads."
},
"alerts": {
"errorTitle": "Aktion fehlgeschlagen"
},
"gallery": {
"title": "Galerie",
"description": "Klick auf ein Foto, um es hervorzuheben oder zu löschen.",
"emptyTitle": "Noch keine Fotos vorhanden",
"emptyDescription": "Motiviere deine Gäste zum Hochladen - hier erscheint anschließend die Galerie."
}
},
"events": {
"list": {
"title": "Deine Events",
"subtitle": "Plane Momente, die in Erinnerung bleiben. Hier verwaltest du alles rund um deine Veranstaltungen.",
"actions": {
"create": "Neues Event",
"settings": "Einstellungen"
},
"overview": {
"title": "Übersicht",
"empty": "Noch keine Events - starte jetzt und lege dein erstes Event an.",
"count": "{{count}} {{count, plural, one {Event} other {Events}}} aktiv verwaltet.",
"badge": {
"dashboard": "Tenant Dashboard"
}
}
}
},
"members": {
"title": "Event-Mitglieder",
"subtitle": "Verwalte Moderatoren, Admins und Helfer für dieses Event.",
@@ -715,4 +760,68 @@
}
}
}
,
"settings": {
"notifications": {
"title": "Benachrichtigungen",
"description": "Lege fest, für welche Ereignisse wir dich per E-Mail informieren.",
"errorLoad": "Benachrichtigungseinstellungen konnten nicht geladen werden.",
"errorSave": "Speichern fehlgeschlagen. Bitte versuche es erneut.",
"hint": "Du kannst Benachrichtigungen jederzeit wieder aktivieren.",
"actions": {
"save": "Speichern",
"reset": "Auf Standard setzen"
},
"meta": {
"creditLast": "Letzte Credit-Warnung: {{date}}",
"creditNever": "Noch keine Credit-Warnung versendet."
},
"items": {
"photoThresholds": {
"label": "Warnung bei Foto-Schwellen",
"description": "Sende Warnungen bei 80 % und 95 % Foto-Auslastung."
},
"photoLimits": {
"label": "Sperre bei Foto-Limit",
"description": "Informiere mich, sobald keine Foto-Uploads mehr möglich sind."
},
"guestThresholds": {
"label": "Warnung bei Gästekontingent",
"description": "Warnung kurz bevor alle Gästelinks vergeben sind."
},
"guestLimits": {
"label": "Sperre bei Gästelimit",
"description": "Hinweis, wenn keine neuen Gästelinks mehr erzeugt werden können."
},
"galleryWarnings": {
"label": "Galerie läuft bald ab",
"description": "Erhalte 7 und 1 Tag vor Ablauf eine Erinnerung."
},
"galleryExpired": {
"label": "Galerie ist abgelaufen",
"description": "Informiere mich, sobald Gäste die Galerie nicht mehr sehen können."
},
"eventThresholds": {
"label": "Warnung bei Event-Kontingent",
"description": "Hinweis, wenn das Reseller-Paket fast ausgeschöpft ist."
},
"eventLimits": {
"label": "Sperre bei Event-Kontingent",
"description": "Nachricht, sobald keine weiteren Events erstellt werden können."
},
"packageExpiring": {
"label": "Paket läuft bald ab",
"description": "Erinnerungen bei 30, 7 und 1 Tag vor Paketablauf."
},
"packageExpired": {
"label": "Paket ist abgelaufen",
"description": "Benachrichtige mich, wenn das Paket abgelaufen ist."
},
"creditsLow": {
"label": "Event-Credits werden knapp",
"description": "Informiert mich bei niedrigen Credit-Schwellen."
}
}
}
}
}

View File

@@ -28,5 +28,18 @@
"creditsExhausted": "You have no event credits remaining. Purchase credits or upgrade your package.",
"photoLimit": "This event reached its photo upload limit.",
"goToBilling": "Manage subscription"
},
"limits": {
"photosTitle": "Photo limit",
"photosWarning": "Only {remaining} of {limit} photo uploads remaining.",
"photosBlocked": "Photo uploads are blocked. Please upgrade or extend your package.",
"guestsTitle": "Guest limit",
"guestsWarning": "Only {remaining} of {limit} guest invites remaining.",
"guestsBlocked": "Guest invites are blocked. Please upgrade your package.",
"galleryTitle": "Gallery",
"galleryWarningDay": "Gallery expires in {days} day.",
"galleryWarningDays": "Gallery expires in {days} days.",
"galleryExpired": "Gallery has expired. Guests can no longer access the photos.",
"unlimited": "Unlimited"
}
}

View File

@@ -86,6 +86,18 @@
"description": "View your active package and history."
}
},
"limitsCard": {
"title": "Limits & gallery status",
"description": "Focus event: {{name}}",
"descriptionFallback": "No focus event selected",
"photosLabel": "Photo uploads",
"guestsLabel": "Guest invites",
"galleryLabel": "Gallery runtime",
"usageLabel": "{{used}} of {{limit}} used",
"remainingLabel": "{{remaining}} remaining (limit {{limit}})",
"galleryExpires": "Expires on {{date}}",
"galleryNoExpiry": "No expiry configured"
},
"upcoming": {
"title": "Upcoming events",
"description": "The next dates including status and quick access.",
@@ -158,6 +170,18 @@
"description": "View your active package and history."
}
},
"limitsCard": {
"title": "Limits & gallery status",
"description": "Focus event: {{name}}",
"descriptionFallback": "No focus event selected",
"photosLabel": "Photo uploads",
"guestsLabel": "Guest invites",
"galleryLabel": "Gallery runtime",
"usageLabel": "{{used}} of {{limit}} used",
"remainingLabel": "{{remaining}} remaining (limit {{limit}})",
"galleryExpires": "Expires on {{date}}",
"galleryNoExpiry": "No expiry configured"
},
"upcoming": {
"title": "Upcoming events",
"description": "The next dates including status and quick access.",

View File

@@ -32,6 +32,12 @@
"label": "Expires",
"helper": "Auto-renews if enabled"
}
},
"warnings": {
"noEvents": "Event allowance exhausted. Please upgrade or renew your package.",
"lowEvents": "Only {{remaining}} event slots remaining.",
"expiresSoon": "Package expires on {{date}}.",
"expired": "Package has expired."
}
},
"packages": {
@@ -43,7 +49,13 @@
"statusInactive": "Inactive",
"used": "Events used",
"available": "Remaining",
"expires": "Expires"
"expires": "Expires",
"warnings": {
"noEvents": "Event allowance exhausted.",
"lowEvents": "Only {{remaining}} events left.",
"expiresSoon": "Expires on {{date}}.",
"expired": "Package has expired."
}
}
},
"transactions": {
@@ -81,6 +93,39 @@
}
}
},
"photos": {
"moderation": {
"title": "Moderate photos",
"subtitle": "Highlight favourites or remove unsuitable uploads."
},
"alerts": {
"errorTitle": "Action failed"
},
"gallery": {
"title": "Gallery",
"description": "Click a photo to feature it or remove it.",
"emptyTitle": "No photos yet",
"emptyDescription": "Encourage your guests to upload the gallery will appear here."
}
},
"events": {
"list": {
"title": "Your events",
"subtitle": "Plan memorable moments. Manage everything around your events here.",
"actions": {
"create": "New event",
"settings": "Settings"
},
"overview": {
"title": "Overview",
"empty": "No events yet create your first one to get started.",
"count": "{{count}} {{count, plural, one {event} other {events}}} managed.",
"badge": {
"dashboard": "Tenant dashboard"
}
}
}
},
"members": {
"title": "Event members",
"subtitle": "Manage moderators, admins, and helpers for this event.",
@@ -715,4 +760,68 @@
}
}
}
,
"settings": {
"notifications": {
"title": "Notifications",
"description": "Choose which events should trigger an email notification.",
"errorLoad": "Unable to load notification preferences.",
"errorSave": "Saving failed. Please try again.",
"hint": "You can re-enable notifications at any time.",
"actions": {
"save": "Save",
"reset": "Reset to defaults"
},
"meta": {
"creditLast": "Last credit warning: {{date}}",
"creditNever": "No credit warning sent yet."
},
"items": {
"photoThresholds": {
"label": "Photo thresholds",
"description": "Send warnings when photo usage reaches 80% and 95%."
},
"photoLimits": {
"label": "Photo limit reached",
"description": "Let me know when no further uploads are possible."
},
"guestThresholds": {
"label": "Guest quota warning",
"description": "Warn me shortly before all guest links are in use."
},
"guestLimits": {
"label": "Guest quota exhausted",
"description": "Inform me when no more guest links can be generated."
},
"galleryWarnings": {
"label": "Gallery ends soon",
"description": "Receive reminders 7 and 1 day before the gallery expires."
},
"galleryExpired": {
"label": "Gallery expired",
"description": "Let me know when guests can no longer access the gallery."
},
"eventThresholds": {
"label": "Event quota warning",
"description": "Notify me when the reseller package is almost used up."
},
"eventLimits": {
"label": "Event quota exhausted",
"description": "Notify me when no further events can be created."
},
"packageExpiring": {
"label": "Package expires soon",
"description": "Reminders 30, 7, and 1 day before the package expires."
},
"packageExpired": {
"label": "Package expired",
"description": "Inform me once the package has expired."
},
"creditsLow": {
"label": "Event credits running low",
"description": "Warn me when credit thresholds are reached."
}
}
}
}
}