Update partner packages, copy, and demo switcher
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-01-15 17:33:36 +01:00
parent 2f93271d94
commit ad829ae509
50 changed files with 1335 additions and 411 deletions

View File

@@ -74,8 +74,8 @@
},
"errors": {
"generic": "Etwas ist schiefgelaufen. Bitte versuche es erneut.",
"eventLimit": "Dein aktuelles Paket enthält keine freien Event-Slots mehr.",
"eventLimitDetails": "{used} von {limit} Events genutzt. {remaining} verbleiben.",
"eventLimit": "Dein aktuelles Paket enthält kein freies Event-Kontingent mehr.",
"eventLimitDetails": "{used} von {limit} Events genutzt. {remaining} verbleiben im Kontingent.",
"photoLimit": "Für dieses Event ist das Foto-Upload-Limit erreicht.",
"goToBilling": "Zur Paketverwaltung"
},
@@ -174,7 +174,7 @@
"plans": {
"title": "Pakete im Überblick",
"subtitle": "Wähle das passende Kontingent",
"hint": "Starter, Standard oder Reseller alles mit Moderation & QR-Codes.",
"hint": "Starter, Standard oder Partner alles mit Moderation & QR-Codes.",
"starter": {
"title": "Starter",
"badge": "Für ein Event",
@@ -191,23 +191,23 @@
"p3": "Support bei Live-Events"
},
"reseller": {
"title": "Reseller S",
"badge": "Für Dienstleister",
"title": "Partner Start",
"badge": "Für Agenturen",
"highlight": "Mehrere Events parallel verwalten",
"p1": "Bis zu 5 Events pro Paket",
"p1": "Bis zu 5 Events pro Kontingent",
"p2": "Aufgaben-Sammlungen und Vorlagen",
"p3": "Teamrollen & Rechteverwaltung"
}
},
"audience": {
"title": "Für wen?",
"subtitle": "Endkunden & Reseller im Blick",
"subtitle": "Endkunden & Partner im Blick",
"endcustomers": {
"title": "Endkund:innen",
"description": "Schnell einrichten, mobil moderieren und nach dem Event die Galerie teilen."
},
"resellers": {
"title": "Reseller & Agenturen",
"title": "Partner / Agenturen",
"description": "Mehrere Events im Blick behalten, Kontingente überwachen und Vorlagen nutzen."
},
"cta": "Wenige Klicks bis zum Start"

View File

@@ -32,8 +32,8 @@
"publishedHint": "{{count}} veröffentlicht",
"newPhotos": "Neue Fotos (7 Tage)",
"taskProgress": "Task-Fortschritt",
"credits": "Event-Slots",
"lowCredits": "Mehr Slots buchen empfohlen"
"credits": "Event-Kontingent",
"lowCredits": "Mehr Kontingent buchen empfohlen"
}
},
"liveNow": {
@@ -238,8 +238,8 @@
"publishedHint": "{{count}} veröffentlicht",
"newPhotos": "Neue Fotos (7 Tage)",
"taskProgress": "Task-Fortschritt",
"credits": "Event-Slots",
"lowCredits": "Mehr Slots buchen empfohlen"
"credits": "Event-Kontingent",
"lowCredits": "Mehr Kontingent buchen empfohlen"
}
},
"quickActions": {

View File

@@ -90,7 +90,7 @@
},
"warnings": {
"noEvents": "Event-Kontingent aufgebraucht. Bitte Paket upgraden oder erneuern.",
"lowEvents": "Nur noch {{remaining}} Event-Slots verfügbar.",
"lowEvents": "Nur noch {{remaining}} Events im Kontingent verfügbar.",
"expiresSoon": "Paket läuft am {{date}} ab.",
"expired": "Paket ist abgelaufen."
}
@@ -108,7 +108,7 @@
"expires": "Läuft ab",
"warnings": {
"noEvents": "Event-Kontingent aufgebraucht.",
"lowEvents": "Nur noch {{remaining}} Events verbleiben.",
"lowEvents": "Nur noch {{remaining}} Events im Kontingent verbleiben.",
"expiresSoon": "Läuft am {{date}} ab.",
"expired": "Paket ist abgelaufen."
}
@@ -1558,12 +1558,12 @@
"title": "Benachrichtigungsübersicht",
"channel": "E-Mail Kanal",
"channelCopy": "Alle Warnungen werden per E-Mail versendet.",
"credits": "Credits",
"threshold": "Warnung bei {{count}} verbleibenden Slots"
"credits": "Event-Kontingent",
"threshold": "Warnung bei {{count}} verbleibenden Events"
},
"meta": {
"creditLast": "Letzte Slot-Warnung: {{date}}",
"creditNever": "Noch keine Slot-Warnung versendet."
"creditLast": "Letzte Kontingent-Warnung: {{date}}",
"creditNever": "Noch keine Kontingent-Warnung versendet."
},
"items": {
"photoThresholds": {
@@ -1592,7 +1592,7 @@
},
"eventThresholds": {
"label": "Warnung bei Event-Kontingent",
"description": "Hinweis, wenn das Reseller-Paket fast ausgeschöpft ist."
"description": "Hinweis, wenn das Partner / Agentur-Paket fast ausgeschöpft ist."
},
"eventLimits": {
"label": "Sperre bei Event-Kontingent",
@@ -2192,7 +2192,7 @@
"featuresTitle": "Enthaltene Features",
"feature": {
"priority_support": "Priority Support",
"reseller_dashboard": "Reseller-Dashboard",
"reseller_dashboard": "Partner-Dashboard",
"custom_domain": "Eigene Domain",
"custom_branding": "Benutzerdefiniertes Branding",
"custom_tasks": "Individuelle Aufgaben",
@@ -2907,7 +2907,7 @@
"max_guests": "Gäste",
"max_tasks": "Aufgaben",
"gallery_days": "Galerietage",
"max_events_per_year": "Events pro Jahr"
"max_events_per_year": "Event-Kontingent"
},
"mobileEvents": {
"edit": "Event bearbeiten"
@@ -3064,6 +3064,30 @@
"shop": {
"title": "Paket upgraden",
"subtitle": "Wähle ein Paket, um mehr Funktionen und Limits freizuschalten.",
"partner": {
"title": "Event-Kontingent kaufen",
"subtitle": "Kaufe Event-Kontingente, um mehrere Events mit unseren Services umzusetzen.",
"buy": "Kaufen",
"unavailable": "Nicht verfügbar",
"confirmSubtitle": "Du kaufst:",
"includedTier": "Inklusive Event-Level: {{tier}}",
"eventsIncluded": "{{count}} Events im Kontingent",
"recommendedUsage": "Empfohlen innerhalb von 24 Monaten zu nutzen.",
"tiers": {
"starter": "Starter",
"standard": "Standard",
"premium": "Premium"
},
"compare": {
"rows": {
"includedTier": "Inklusive Event-Level",
"events": "Events im Kontingent"
},
"values": {
"unknown": "—"
}
}
},
"recommendationTitle": "Empfohlen für dich",
"recommendationBody": "Das hervorgehobene Paket enthält das gewünschte Feature.",
"compare": {

View File

@@ -41,7 +41,7 @@
"ctaList": {
"choosePackage": {
"label": "Dein Eventpaket auswählen",
"description": "Reserviere Event-Slots oder Abos, um sofort Events zu aktivieren. Flexible Optionen für jede Eventgröße.",
"description": "Reserviere Event-Kontingente oder Pakete, um sofort Events zu aktivieren. Flexible Optionen für jede Eventgröße.",
"button": "Weiter zu Paketen"
},
"createEvent": {
@@ -61,7 +61,7 @@
"steps": {
"package": {
"title": "Paket sichern",
"hint": "Event-Slots oder ein Abo brauchst du, bevor Gäste live gehen."
"hint": "Event-Kontingent oder Paket brauchst du, bevor Gäste live gehen."
},
"invite": {
"title": "Team einladen",
@@ -77,10 +77,10 @@
"layout": {
"eyebrow": "Schritt 2",
"title": "Wähle dein Eventpaket",
"subtitle": "Fotospiel bietet flexible Preismodelle: einmalige Event-Slots oder Abos, die mehrere Events abdecken."
"subtitle": "Fotospiel bietet flexible Preismodelle: einzelne Event-Pakete oder Kontingente für mehrere Events."
},
"step": {
"title": "Aktiviere die passenden Event-Slots",
"title": "Aktiviere das passende Event-Kontingent",
"description": "Sichere dir Kapazität für dein nächstes Event. Du kannst jederzeit upgraden bezahle nur, was du brauchst."
},
"state": {
@@ -92,7 +92,7 @@
},
"card": {
"subscription": "Abo",
"creditPack": "Event-Slot-Paket",
"creditPack": "Event-Kontingent",
"description": "Sofort einsatzbereit für dein nächstes Event.",
"descriptionWithPhotos": "Bis zu {{count}} Fotos inklusive perfekt für lebendige Reportagen.",
"active": "Aktives Paket",
@@ -151,7 +151,7 @@
},
"details": {
"subscription": "Abo",
"creditPack": "Event-Slot-Paket",
"creditPack": "Event-Kontingent",
"photos": "Bis zu {{count}} Fotos",
"galleryDays": "Galerie {{count}} Tage",
"guests": "{{count}} Gäste",
@@ -188,7 +188,7 @@
"activate": "Gratis-Paket aktivieren",
"progress": "Aktivierung läuft …",
"successTitle": "Gratis-Paket aktiviert",
"successDescription": "Deine Event-Slots wurden hinzugefügt. Weiter geht's mit dem Event-Setup.",
"successDescription": "Dein Event-Kontingent wurde hinzugefügt. Weiter geht's mit dem Event-Setup.",
"failureTitle": "Aktivierung fehlgeschlagen",
"errorMessage": "Kostenloses Paket konnte nicht aktiviert werden."
},
@@ -205,12 +205,12 @@
"nextSteps": [
"Optional: Abrechnung über Paddle im Billing-Bereich abschließen.",
"Event-Setup durchlaufen und Aufgaben, Team & Galerie konfigurieren.",
"Vor dem Go-Live Event-Slots prüfen und Gäste-Link teilen."
"Vor dem Go-Live Event-Kontingent prüfen und Gäste-Link teilen."
],
"cta": {
"billing": {
"label": "Abrechnung starten",
"description": "Öffnet den Billing-Bereich mit Paddle- und Slot-Optionen.",
"description": "Öffnet den Billing-Bereich mit Paddle- und Kontingent-Optionen.",
"button": "Zu Billing & Zahlung"
},
"setup": {

View File

@@ -74,8 +74,8 @@
},
"errors": {
"generic": "Something went wrong. Please try again.",
"eventLimit": "Your current package has no remaining event slots.",
"eventLimitDetails": "{used} of {limit} events used. {remaining} remaining.",
"eventLimit": "Your current package has no remaining event kontingent.",
"eventLimitDetails": "{used} of {limit} events used. {remaining} remaining in the kontingent.",
"photoLimit": "This event reached its photo upload limit.",
"goToBilling": "Manage subscription"
},
@@ -174,7 +174,7 @@
"plans": {
"title": "Packages at a glance",
"subtitle": "Choose the right quota",
"hint": "Starter, Standard or Reseller all include moderation & invites.",
"hint": "Starter, Standard or Partner all include moderation & invites.",
"starter": {
"title": "Starter",
"badge": "For one event",
@@ -191,24 +191,24 @@
"p3": "Support on live days"
},
"reseller": {
"title": "Reseller S",
"badge": "For pros",
"title": "Partner Start",
"badge": "For agencies",
"highlight": "Manage multiple events",
"p1": "Up to 5 events per package",
"p1": "Up to 5 events per kontingent",
"p2": "Task collections and templates",
"p3": "Team roles & permissions"
}
},
"audience": {
"title": "Who is it for?",
"subtitle": "Built for hosts and resellers",
"subtitle": "Built for hosts and partners",
"endcustomers": {
"title": "Event hosts",
"description": "Set up fast, moderate on mobile and share the gallery afterwards."
},
"resellers": {
"title": "Resellers & agencies",
"description": "Track multiple events, monitor quotas and reuse templates."
"title": "Partner / Agencies",
"description": "Track multiple events, monitor kontingent and reuse templates."
},
"cta": "Just a few clicks to go live"
},

View File

@@ -32,8 +32,8 @@
"publishedHint": "{{count}} published",
"newPhotos": "New photos (7 days)",
"taskProgress": "Task progress",
"credits": "Event slots",
"lowCredits": "Add slots soon"
"credits": "Event kontingent",
"lowCredits": "Add kontingent soon"
}
},
"liveNow": {
@@ -238,8 +238,8 @@
"publishedHint": "{{count}} published",
"newPhotos": "New photos (7 days)",
"taskProgress": "Task progress",
"credits": "Event slots",
"lowCredits": "Add slots soon"
"credits": "Event kontingent",
"lowCredits": "Add kontingent soon"
}
},
"quickActions": {

View File

@@ -90,7 +90,7 @@
},
"warnings": {
"noEvents": "Event allowance exhausted. Please upgrade or renew your package.",
"lowEvents": "Only {{remaining}} event slots remaining.",
"lowEvents": "Only {{remaining}} events remaining in the kontingent.",
"expiresSoon": "Package expires on {{date}}.",
"expired": "Package has expired."
}
@@ -108,7 +108,7 @@
"expires": "Expires",
"warnings": {
"noEvents": "Event allowance exhausted.",
"lowEvents": "Only {{remaining}} events left.",
"lowEvents": "Only {{remaining}} events remaining in the kontingent.",
"expiresSoon": "Expires on {{date}}.",
"expired": "Package has expired."
}
@@ -1556,12 +1556,12 @@
"title": "Notification overview",
"channel": "Email channel",
"channelCopy": "All warnings are delivered via email.",
"credits": "Credits",
"threshold": "Warning at {{count}} remaining slots"
"credits": "Event kontingent",
"threshold": "Warning at {{count}} remaining events"
},
"meta": {
"creditLast": "Last slot warning: {{date}}",
"creditNever": "No slot warning sent yet."
"creditLast": "Last kontingent warning: {{date}}",
"creditNever": "No kontingent warning sent yet."
},
"items": {
"photoThresholds": {
@@ -1590,7 +1590,7 @@
},
"eventThresholds": {
"label": "Event quota warning",
"description": "Notify me when the reseller package is almost used up."
"description": "Notify me when the partner / agency package is almost used up."
},
"eventLimits": {
"label": "Event quota exhausted",
@@ -2196,7 +2196,7 @@
"featuresTitle": "Included features",
"feature": {
"priority_support": "Priority support",
"reseller_dashboard": "Reseller dashboard",
"reseller_dashboard": "Partner dashboard",
"custom_domain": "Custom domain",
"custom_branding": "Custom branding",
"custom_tasks": "Custom tasks",
@@ -2911,7 +2911,7 @@
"max_guests": "Guests",
"max_tasks": "Tasks",
"gallery_days": "Gallery days",
"max_events_per_year": "Events per year"
"max_events_per_year": "Event kontingent"
},
"mobileEvents": {
"edit": "Edit event"
@@ -3068,6 +3068,30 @@
"shop": {
"title": "Upgrade Package",
"subtitle": "Choose a package to unlock more features and limits.",
"partner": {
"title": "Buy event kontingent",
"subtitle": "Buy event kontingents to run multiple events with our services.",
"buy": "Buy",
"unavailable": "Unavailable",
"confirmSubtitle": "You're buying:",
"includedTier": "Included event tier: {{tier}}",
"eventsIncluded": "{{count}} events in kontingent",
"recommendedUsage": "Recommended to use within 24 months.",
"tiers": {
"starter": "Starter",
"standard": "Standard",
"premium": "Premium"
},
"compare": {
"rows": {
"includedTier": "Included event tier",
"events": "Events in kontingent"
},
"values": {
"unknown": "—"
}
}
},
"recommendationTitle": "Recommended for you",
"recommendationBody": "The highlighted package includes the feature you requested.",
"compare": {

View File

@@ -41,7 +41,7 @@
"ctaList": {
"choosePackage": {
"label": "Choose your package",
"description": "Reserve event slots or subscriptions to activate events instantly. Flexible options for any event size.",
"description": "Reserve event kontingent or packages to activate events instantly. Flexible options for any event size.",
"button": "Continue to packages"
},
"createEvent": {
@@ -61,7 +61,7 @@
"steps": {
"package": {
"title": "Secure your package",
"hint": "Event slots or a subscription are required before guests go live."
"hint": "Event kontingent or a package is required before guests go live."
},
"invite": {
"title": "Invite your co-hosts",
@@ -77,10 +77,10 @@
"layout": {
"eyebrow": "Step 2",
"title": "Choose your package",
"subtitle": "Fotospiel supports flexible pricing: single-use event slots or subscriptions covering multiple events."
"subtitle": "Fotospiel supports flexible pricing: single event packages or kontingent for multiple events."
},
"step": {
"title": "Activate the right plan",
"title": "Activate the right event kontingent",
"description": "Secure capacity for your next event. Upgrade at any time only pay for what you need."
},
"state": {
@@ -92,7 +92,7 @@
},
"card": {
"subscription": "Subscription",
"creditPack": "Event slot pack",
"creditPack": "Event kontingent",
"description": "Ready for your next event right away.",
"descriptionWithPhotos": "Up to {{count}} photos included perfect for vibrant storytelling.",
"active": "Active package",
@@ -151,7 +151,7 @@
},
"details": {
"subscription": "Subscription",
"creditPack": "Event slot pack",
"creditPack": "Event kontingent",
"photos": "Up to {{count}} photos",
"galleryDays": "{{count}} gallery days",
"guests": "{{count}} guests",
@@ -188,7 +188,7 @@
"activate": "Activate free package",
"progress": "Activating …",
"successTitle": "Free package activated",
"successDescription": "Event slots added. Continue with the setup.",
"successDescription": "Event kontingent added. Continue with the setup.",
"failureTitle": "Activation failed",
"errorMessage": "The free package could not be activated."
},
@@ -205,12 +205,12 @@
"nextSteps": [
"Optional: finish billing via Paddle inside the billing area.",
"Complete the event setup and configure tasks, team, and gallery.",
"Check your event slots before go-live and share your guest link."
"Check your event kontingent before go-live and share your guest link."
],
"cta": {
"billing": {
"label": "Start billing",
"description": "Opens the billing area with Paddle plan options.",
"description": "Opens the billing area with Paddle kontingent options.",
"button": "Go to billing"
},
"setup": {