zu fabricjs gewechselt, noch nicht funktionsfähig

This commit is contained in:
Codex Agent
2025-10-31 20:19:09 +01:00
parent 06df61f706
commit eb0c31c90b
33 changed files with 7718 additions and 2062 deletions

View File

@@ -1,10 +1,21 @@
{
"login": {
"title": "Tenant-Admin",
"lead": "Melde dich mit deinem Fotospiel-Account an. Du wirst zur sicheren OAuth-Anmeldung weitergeleitet und anschließend zur Admin-Oberfläche zurückgebracht.",
"cta": "Mit Tenant-Account anmelden",
"badge": "Fotospiel Tenant Admin",
"hero_title": "Event-Steuerung, die sich wie Zuhause anfühlt.",
"hero_subtitle": "Wechsle mühelos zwischen Mandanten, behalte Live-Uploads im Blick und teile elegante Einladungen alles in einer ruhigen Oberfläche.",
"features": [
"Gestalte QR-Einladungen und druckfertige Layouts in wenigen Klicks passend zu eurer Marke.",
"Organisiere Aufgaben, Emotionen und Sammlungen für jeden Eventtyp ohne Excel-Chaos.",
"Bleib am Eventtag souverän mit Dashboards, Live-Statistiken und sofortiger Moderation."
],
"lead": "Die Anmeldung erfolgt über unseren sicheren OAuth-Login und bringt dich direkt wieder zurück.",
"panel_copy": "Melde dich mit deinen Fotospiel-Admin-Zugangsdaten an. Wir schützen dein Konto mit OAuth 2.1 und mandantenbewussten Berechtigungen.",
"cta": "Mit Fotospiel-Login fortfahren",
"loading": "Bitte warten …",
"oauth_error_title": "Login aktuell nicht möglich",
"oauth_error": "Anmeldung fehlgeschlagen: {{message}}",
"support": "Du brauchst Zugriff? Wende dich an den Tenant-Inhaber oder schreibe an support@fotospiel.de wir helfen gern weiter.",
"appearance_label": "Darstellung"
}
}

View File

@@ -283,12 +283,12 @@
},
"logo": {
"label": "Logo",
"hint": "PNG oder SVG, max. 1 MB. Wird oben rechts platziert.",
"hint": "PNG, max. 1 MB. Wird oben rechts platziert.",
"remove": "Logo entfernen"
},
"preview": {
"title": "Vorschau",
"hint": "Farben und Texte, wie sie im Layout erscheinen. Speichere, um neue PDFs/SVGs zu erhalten."
"hint": "Farben und Texte, wie sie im Layout erscheinen. Speichere, um neue PDFs/PNGs zu erhalten."
},
"actions": {
"save": "Speichern",
@@ -299,7 +299,9 @@
"actionLabel": "Layout anpassen",
"errors": {
"logoTooLarge": "Das Logo darf maximal 1 MB groß sein.",
"noLayout": "Bitte wähle ein Layout aus."
"noLayout": "Bitte wähle ein Layout aus.",
"downloadFailed": "Download fehlgeschlagen. Bitte versuche es erneut.",
"printFailed": "Drucken konnte nicht gestartet werden."
},
"defaults": {
"badgeLabel": "Digitale Gästebox",
@@ -310,7 +312,8 @@
"QR-Code scannen",
"Profil anlegen",
"Fotos teilen"
]
],
"textBlock": "Neuer Textblock hier kannst du eigene Hinweise ergänzen."
}
}
},
@@ -354,24 +357,35 @@
"export": {
"title": "Drucken & Export",
"description": "Lade druckfertige Dateien herunter oder starte direkt einen Testdruck.",
"mode": {
"standard": "Standardlayout",
"advanced": "Freier Editor"
},
"previewHint": "Speichere deine Änderungen, um die Exportdateien neu zu erstellen.",
"noLayoutPreview": "Noch keine Vorschau verfügbar. Speichere das Layout zuerst.",
"selectPlaceholder": "Einladung auswählen",
"noInviteSelected": "Wähle zunächst eine Einladung aus, um Downloads zu starten.",
"noLayouts": "Für diese Einladung sind aktuell keine Layouts verfügbar.",
"actions": {
"print": "Direkt drucken"
"title": "Aktionen",
"description": "Starte deinen Testdruck oder lade die Layouts herunter.",
"printNow": "Direkt drucken",
"hint": "PDF enthält Beschnittmarken, PNG ist ideal für digitale Freigaben."
},
"errorTitle": "Download fehlgeschlagen"
},
"customizer": {
"heading": "Layout anpassen",
"copy": "Verleihe der Einladung euren Ton: Texte, Farben und Logo lassen sich live bearbeiten.",
"copy": "Bearbeite Texte, Farben und Positionen direkt neben der Live-Vorschau. Änderungen werden sofort sichtbar.",
"actions": {
"save": "Layout speichern",
"reset": "Zurücksetzen",
"print": "Drucken",
"removeLogo": "Logo entfernen",
"uploadLogo": "Logo hochladen (max. 1 MB)",
"addInstruction": "Punkt hinzufügen"
"addInstruction": "Punkt hinzufügen",
"undo": "Rückgängig",
"redo": "Wiederholen"
},
"sections": {
"layouts": "Layouts",
@@ -381,6 +395,37 @@
"instructionsHint": "Helft euren Gästen mit klaren Aufgaben. Maximal fünf Punkte.",
"branding": "Farbgebung"
},
"elements": {
"title": "Elemente & Positionierung",
"hint": "Wähle ein Element aus, um es zu verschieben, anzupassen oder zu entfernen.",
"headline": "Überschrift",
"subtitle": "Untertitel",
"description": "Beschreibung",
"badge": "Badge",
"link": "Linkfeld",
"cta": "Call-to-Action",
"qr": "QR-Code",
"logo": "Logo",
"text": "Freier Textblock",
"remove": "Element entfernen",
"details": "Element-Details",
"detailsHint": "Passe Text, Ausrichtung und weitere Eigenschaften an. Änderungen werden sofort sichtbar.",
"customText": "Textinhalt",
"qrHint": "Der QR-Code lässt sich im Canvas in Größe und Position verändern.",
"logoHint": "Logos bearbeitest du im Bereich „Branding“. Hier kannst du das Element nur verschieben oder skalieren.",
"align": "Ausrichtung",
"alignLeft": "Links",
"alignCenter": "Zentriert",
"alignRight": "Rechts",
"fontSize": "Schriftgröße",
"selectHint": "Tippe ein Element im Canvas oder in der Liste an, um Details zu bearbeiten.",
"listHint": "Wähle ein Element aus, damit seine Einstellungen direkt darunter erscheinen.",
"addSubtitle": "Untertitel einblenden",
"addBadge": "Badge anzeigen",
"addLink": "Linkfeld hinzufügen",
"addCta": "Call-to-Action einfügen",
"addText": "Freien Textblock hinzufügen"
},
"fields": {
"headline": "Überschrift",
"subtitle": "Unterzeile",
@@ -415,6 +460,113 @@
"layoutFallback": "Layout"
}
},
"events": {
"errors": {
"missingSlug": "Kein Event ausgewählt.",
"loadFailed": "Event konnte nicht geladen werden.",
"notFoundTitle": "Event nicht gefunden",
"notFoundBody": "Ohne gültige Kennung können wir keine Daten laden. Kehre zur Eventliste zurück und wähle dort ein Event aus.",
"toggleFailed": "Status konnte nicht angepasst werden."
},
"alerts": {
"failedTitle": "Aktion fehlgeschlagen"
},
"placeholders": {
"untitled": "Unbenanntes Event"
},
"actions": {
"backToList": "Zurück zur Liste",
"edit": "Bearbeiten",
"members": "Team & Rollen",
"tasks": "Aufgaben verwalten",
"invites": "Einladungen & Layouts",
"photos": "Fotos moderieren",
"refresh": "Aktualisieren"
},
"workspace": {
"detailSubtitle": "Behalte Status, Aufgaben und Einladungen deines Events im Blick.",
"toolkitSubtitle": "Moderation, Aufgaben und Einladungen für deinen Eventtag bündeln.",
"sections": {
"statusTitle": "Eventstatus & Sichtbarkeit",
"statusSubtitle": "Aktiviere dein Event für Gäste oder verstecke es vorübergehend."
},
"fields": {
"status": "Status",
"active": "Aktiv für Gäste",
"date": "Eventdatum",
"eventType": "Event-Typ",
"insights": "Letzte Aktivität",
"uploadsTotal": "{{count}} Uploads gesamt",
"uploadsToday": "{{count}} Uploads (24h)",
"likesTotal": "{{count}} Likes vergeben"
},
"actions": {
"pause": "Event pausieren",
"activate": "Event aktivieren"
},
"activeYes": "Ja",
"activeNo": "Nein"
},
"status": {
"published": "Veröffentlicht",
"draft": "Entwurf",
"archived": "Archiviert"
},
"quickActions": {
"title": "Schnellaktionen",
"subtitle": "Nutze die wichtigsten Schritte vor und während deines Events.",
"moderate": "Fotos moderieren",
"tasks": "Aufgaben bearbeiten",
"invites": "Layouts & QR verwalten",
"roles": "Team & Rollen anpassen",
"print": "Layouts als PDF drucken",
"toggle": "Status ändern"
},
"metrics": {
"uploadsTotal": "Uploads gesamt",
"uploads24h": "Uploads (24h)",
"pending": "Fotos in Moderation",
"activeInvites": "Aktive Einladungen"
},
"invites": {
"title": "QR-Einladungen",
"subtitle": "Behält aktive Einladungen und Layouts im Blick.",
"activeCount": "{{count}} aktiv",
"totalCount": "{{count}} gesamt",
"empty": "Noch keine Einladungen erstellt.",
"manage": "Layouts & Einladungen verwalten"
},
"tasks": {
"title": "Aktive Aufgaben",
"subtitle": "Motiviere Gäste mit klaren Aufgaben & Highlights.",
"summary": "{{completed}} von {{total}} erledigt",
"empty": "Noch keine Aufgaben zugewiesen.",
"manage": "Aufgabenbereich öffnen"
},
"photos": {
"pendingTitle": "Fotos in Moderation",
"pendingSubtitle": "Schnell prüfen, bevor Gäste live gehen.",
"pendingCount": "{{count}} Fotos offen",
"pendingEmpty": "Aktuell warten keine Fotos auf Freigabe.",
"openModeration": "Moderation öffnen",
"recentTitle": "Neueste Uploads",
"recentSubtitle": "Halte Ausschau nach Highlight-Momenten der Gäste.",
"recentEmpty": "Noch keine neuen Uploads."
},
"feedback": {
"title": "Wie läuft dein Event?",
"subtitle": "Feedback hilft uns, neue Features zu priorisieren.",
"positive": "Super Lauf!",
"neutral": "Läuft",
"negative": "Braucht Support",
"placeholder": "Optional: Lass uns wissen, was gut funktioniert oder wo du Unterstützung brauchst.",
"errorTitle": "Feedback konnte nicht gesendet werden.",
"authError": "Deine Session ist abgelaufen. Bitte melde dich erneut an.",
"genericError": "Feedback konnte nicht gesendet werden.",
"submit": "Feedback senden",
"submitted": "Danke!"
}
},
"collections": {
"title": "Aufgabenvorlagen",
"subtitle": "Durchstöbere kuratierte Vorlagen oder aktiviere sie für deine Events.",