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

@@ -46,7 +46,7 @@ return [
'emotion' => 'Emotion',
'event_type' => 'Eventtyp',
'last_activity' => 'Letzte Aktivität',
'credits' => 'Credits',
'credits' => 'Event-Kontingent',
'settings' => 'Einstellungen',
'join' => 'Beitreten',
'unnamed' => 'Ohne Namen',
@@ -517,7 +517,7 @@ return [
'heading' => 'Uploads (14 Tage)',
],
'credit_alerts' => [
'low_balance_label' => 'Mandanten mit niedrigen Credits',
'low_balance_label' => 'Mandanten mit niedrigem Event-Kontingent',
'low_balance_desc' => 'Benötigen Betreuung',
'monthly_revenue_label' => 'Umsatz (Monat)',
'monthly_revenue_desc' => 'Aktueller Monat (:month)',
@@ -546,10 +546,10 @@ return [
'name' => 'Mandantenname',
'slug' => 'Slug',
'contact_email' => 'KontaktEMail',
'event_credits_balance' => 'EventCreditsKontostand',
'event_credits_balance' => 'Event-Kontingent',
'features' => 'Funktionen',
'total_revenue' => 'Gesamtumsatz',
'active_reseller_package' => 'Aktives Reseller-Paket',
'active_reseller_package' => 'Aktives Partner / Agentur-Paket',
'remaining_events' => 'Verbleibende Events',
'package_expires_at' => 'Ablaufdatum Paket',
'is_active' => 'Aktiv',
@@ -574,12 +574,12 @@ return [
'timeline' => 'Audit Timeline',
],
'actions' => [
'adjust_credits' => 'Credits anpassen',
'adjust_credits_delta' => 'Anzahl Credits (positiv/negativ)',
'adjust_credits_delta_hint' => 'Positive Werte fügen Credits hinzu, negative Werte ziehen ab.',
'adjust_credits' => 'Kontingent anpassen',
'adjust_credits_delta' => 'Event-Kontingent (positiv/negativ)',
'adjust_credits_delta_hint' => 'Positive Werte fügen Kontingent hinzu, negative Werte ziehen ab.',
'adjust_credits_reason' => 'Interne Notiz',
'adjust_credits_success_title' => 'Credits aktualisiert',
'adjust_credits_success_body' => 'Die Credits wurden um :delta verändert. Neuer Kontostand: :balance.',
'adjust_credits_success_title' => 'Kontingent aktualisiert',
'adjust_credits_success_body' => 'Das Kontingent wurde um :delta verändert. Neuer Stand: :balance.',
'lifecycle' => 'Lebenszyklus',
'activate' => 'Aktivieren',
'deactivate' => 'Deaktivieren',
@@ -663,7 +663,7 @@ return [
'fields' => [
'tenant' => 'Mandant',
'package' => 'Paket',
'credits' => 'Credits',
'credits' => 'Event-Kontingent',
'price' => 'Preis',
'currency' => 'Währung',
'platform' => 'Plattform',

View File

@@ -14,4 +14,38 @@ return [
'default_title' => 'Zugang verweigert',
'default_message' => 'Mit diesem QR-Zugang konnte kein Zugriff gewährt werden.',
],
'packages' => [
'event_tier_unavailable' => [
'title' => 'Gewähltes Event-Level nicht verfügbar',
'message' => 'Für das gewählte Event-Level ist kein Event-Kontingent verfügbar. Bitte wähle ein anderes Level oder kaufe das passende Event-Kontingent.',
],
'event_limit_exceeded' => [
'title' => 'Event-Kontingent aufgebraucht',
'message' => 'Dein aktuelles Event-Kontingent enthält keine freien Events mehr. Kaufe ein weiteres Event-Kontingent, um neue Events zu erstellen.',
],
'event_limit_missing' => [
'title' => 'Kein Paket zugewiesen',
'message' => 'Kaufe ein Event-Kontingent, um Events zu erstellen.',
],
'event_not_found' => [
'title' => 'Event nicht verfügbar',
'message' => 'Das gewählte Event wurde nicht gefunden oder gehört zu einem anderen Tenant.',
],
'event_package_missing' => [
'title' => 'Event-Paket fehlt',
'message' => 'Für dieses Event ist kein Paket hinterlegt. Weise ein Paket zu, um Uploads zu ermöglichen.',
],
'photo_limit_exceeded' => [
'title' => 'Foto-Limit erreicht',
'message' => 'Dieses Event hat sein Foto-Kontingent erreicht. Upgrade das Event-Paket, um weitere Uploads zu erlauben.',
],
'tenant_photo_limit_exceeded' => [
'title' => 'Tenant-Foto-Limit erreicht',
'message' => 'Dieser Tenant hat das Foto-Kontingent für dieses Event erreicht.',
],
'tenant_storage_limit_exceeded' => [
'title' => 'Tenant-Speicherlimit erreicht',
'message' => 'Dieser Tenant hat sein Speicher-Kontingent erreicht.',
],
],
];

View File

@@ -47,21 +47,34 @@
"hero_description": "Von kostenlosem Einstieg bis Premium-Features: Passen Sie Ihr Event-Paket an Ihre Bedürfnisse an. Einfach, sicher und skalierbar.",
"cta_explore": "Pakete entdecken",
"tab_endcustomer": "Endkunden",
"tab_reseller": "Reseller & Agenturen",
"tab_reseller": "Partner / Agentur",
"section_endcustomer": "Packages für Endkunden (Einmalkauf pro Event)",
"section_reseller": "Packages für Reseller (Jährliches Abo)",
"section_reseller": "Packages für Partner / Agenturen (Event-Kontingent)",
"free": "Kostenlos",
"one_time": "Einmalkauf",
"subscription": "Abo",
"subscription": "Einmalkauf",
"year": "Jahr",
"billing_per_event": "pro Event",
"billing_per_kontingent": "pro Kontingent",
"available": "Verfügbar",
"not_available": "Nicht verfügbar",
"standard_support": "Standard-Support",
"priority_support": "Priorisierter Support",
"badge_best_value": "Bestes PreisLeistungsVerhältnis",
"badge_most_popular": "Beliebt",
"badge_starter": "Start",
"view_details": "Details anzeigen",
"included_package_label": "Inklusive Event-Level",
"recommended_usage_label": "Empfehlung",
"max_photos": "Fotos",
"max_guests": "Gäste",
"gallery_days": "Tage Galerie",
"max_events_year": "Events/Jahr",
"max_events_year": "Events enthalten",
"recommended_usage_window": "Empfohlen innerhalb von 24 Monaten zu nutzen.",
"buy_now": "Jetzt kaufen",
"subscribe_now": "Jetzt abonnieren",
"subscribe_now": "Jetzt kaufen",
"register_buy": "Registrieren und kaufen",
"register_subscribe": "Registrieren und abonnieren",
"register_subscribe": "Registrieren und kaufen",
"faq_title": "Häufige Fragen zu Packages",
"faq_q1": "Was ist ein Package?",
"faq_a1": "Ein Package definiert Limits und Features für Ihr Event, z.B. Anzahl Fotos und Galerie-Dauer.",
@@ -93,7 +106,7 @@
"feature_custom_branding": "Benutzerdefiniertes Branding",
"feature_advanced_reporting": "Erweiterte Berichterstattung",
"for_endcustomers": "Für Endkunden",
"for_resellers": "Für Reseller",
"for_resellers": "Für Partner / Agenturen",
"details_show": "Details anzeigen",
"comparison_title": "Packages vergleichen",
"price": "Preis",
@@ -104,10 +117,10 @@
"no_watermark": "Kein Wasserzeichen",
"custom_branding": "Benutzerdefiniertes Branding",
"max_tenants": "Max. Tenants",
"max_events": "Max. Events/Jahr",
"max_events": "Events im Kontingent",
"faq_free": "Was ist das Free Package?",
"faq_upgrade": "Kann ich upgraden?",
"faq_reseller": "Was für Reseller?",
"faq_reseller": "Was für Partner / Agenturen?",
"faq_payment": "Zahlung sicher?"
},
"blog": {

View File

@@ -7,21 +7,21 @@ return [
'hero_description' => 'Von kostenlosem Einstieg bis Premium-Features: Passen Sie Ihr Event-Paket an Ihre Bedürfnisse an. Einfach, sicher und skalierbar.',
'cta_explore' => 'Packages entdecken',
'tab_endcustomer' => 'Endkunden',
'tab_reseller' => 'Reseller & Agenturen',
'tab_reseller' => 'Partner / Agenturen',
'section_endcustomer' => 'Packages für Endkunden (Einmalkauf pro Event)',
'section_reseller' => 'Packages für Reseller (Jährliches Abo)',
'section_reseller' => 'Packages für Partner / Agenturen (Event-Kontingent)',
'free' => 'Kostenlos',
'one_time' => 'Einmalkauf',
'subscription' => 'Abo',
'subscription' => 'Event-Kontingent',
'year' => 'Jahr',
'max_photos' => 'Fotos',
'max_guests' => 'Gäste',
'gallery_days' => 'Tage Galerie',
'max_events_year' => 'Events/Jahr',
'max_events_year' => 'Events enthalten',
'buy_now' => 'Jetzt kaufen',
'subscribe_now' => 'Jetzt abonnieren',
'subscribe_now' => 'Event-Kontingent kaufen',
'register_buy' => 'Registrieren und kaufen',
'register_subscribe' => 'Registrieren und abonnieren',
'register_subscribe' => 'Registrieren und kaufen',
'faq_title' => 'Häufige Fragen zu Packages',
'faq_q1' => 'Was ist ein Package?',
'faq_a1' => 'Ein Package definiert Limits und Features für Ihr Event, z.B. Anzahl Fotos und Galerie-Dauer.',
@@ -49,7 +49,7 @@ return [
'feature_limited_sharing' => 'Begrenztes Teilen',
'feature_no_branding' => 'Kein Branding',
'feature_0' => 'Basis-Feature',
'feature_reseller_dashboard' => 'Reseller-Dashboard',
'feature_reseller_dashboard' => 'Partner-Dashboard',
'feature_custom_branding' => 'Benutzerdefiniertes Branding',
'feature_advanced_reporting' => 'Erweiterte Berichterstattung',
'badge_most_popular' => 'Beliebteste Wahl',
@@ -57,10 +57,12 @@ return [
'badge_starter' => 'Perfekt für den Start',
'billing_per_event' => 'pro Event',
'billing_per_year' => 'pro Jahr',
'billing_per_kontingent' => 'pro Kontingent',
'more_features' => '+:count weitere Features',
'max_photos_label' => 'Max. Fotos',
'max_guests_label' => 'Max. Gäste',
'gallery_days_label' => 'Galerie-Tage',
'recommended_usage_window' => 'Empfohlen innerhalb von 24 Monaten zu nutzen.',
'feature_overview' => 'Feature-Überblick',
'order_hint' => 'Sofort startklar keine versteckten Kosten, sichere Zahlung über Paddle.',
'features_label' => 'Features',
@@ -109,7 +111,7 @@ return [
'summary_title' => 'Ihre Bestellung',
'package_label' => 'Ausgewähltes Package',
'billing_type_one_time' => 'Einmalkauf (pro Event)',
'billing_type_subscription' => 'Abo (wiederkehrend)',
'billing_type_subscription' => 'Einmalkauf (Kontingent)',
'legal_links_intro' => 'Mit Abschluss des Kaufs akzeptieren Sie unsere',
'link_terms' => 'AGB',
'link_privacy' => 'Datenschutzerklärung',
@@ -118,7 +120,7 @@ return [
'checkbox_terms_error' => 'Bitte bestätigen Sie, dass Sie AGB, Datenschutzerklärung und Widerrufsbelehrung gelesen haben.',
'checkbox_digital_content_label' => 'Ich verlange ausdrücklich, dass Sie vor Ablauf der Widerrufsfrist mit der Ausführung der digitalen Dienstleistungen (Freischaltung meines Event-Packages inkl. Galerie und Hosting) beginnen. Mir ist bekannt, dass ich bei vollständiger Vertragserfüllung mein Widerrufsrecht verliere.',
'checkbox_digital_content_error' => 'Bitte bestätigen Sie, dass Sie dem sofortigen Beginn der digitalen Dienstleistung und dem damit verbundenen vorzeitigen Erlöschen des Widerrufsrechts zustimmen.',
'hint_subscription_withdrawal' => 'Bei Abonnements haben Verbraucher ein 14-tägiges Widerrufsrecht ab Vertragsschluss. Im Falle eines Widerrufs nach Leistungsbeginn behalten wir uns angemessenen Wertersatz für bereits erbrachte Leistungen vor.',
'hint_subscription_withdrawal' => 'Bei Einmalkäufen haben Verbraucher ein 14-tägiges Widerrufsrecht ab Vertragsschluss. Im Falle eines Widerrufs nach Leistungsbeginn behalten wir uns angemessenen Wertersatz für bereits erbrachte Leistungen vor.',
],
'legal' => [
'imprint' => 'Impressum',

View File

@@ -46,7 +46,7 @@ return [
'emotion' => 'Emotion',
'event_type' => 'Event Type',
'last_activity' => 'Last activity',
'credits' => 'Credits',
'credits' => 'Event kontingent',
'settings' => 'Settings',
'join' => 'Join',
'unnamed' => 'Unnamed',
@@ -503,7 +503,7 @@ return [
'heading' => 'Uploads (14 days)',
],
'credit_alerts' => [
'low_balance_label' => 'Tenants with low credits',
'low_balance_label' => 'Tenants with low event kontingent',
'low_balance_desc' => 'May require follow-up',
'monthly_revenue_label' => 'Revenue (month)',
'monthly_revenue_desc' => 'Current month (:month)',
@@ -532,10 +532,10 @@ return [
'name' => 'Tenant name',
'slug' => 'Slug',
'contact_email' => 'Contact email',
'event_credits_balance' => 'Event credits balance',
'event_credits_balance' => 'Event kontingent',
'features' => 'Features',
'total_revenue' => 'Total revenue',
'active_reseller_package' => 'Active reseller package',
'active_reseller_package' => 'Active partner / agency package',
'remaining_events' => 'Remaining events',
'package_expires_at' => 'Package expires at',
'is_active' => 'Active',
@@ -560,12 +560,12 @@ return [
'timeline' => 'Audit timeline',
],
'actions' => [
'adjust_credits' => 'Adjust credits',
'adjust_credits_delta' => 'Credit delta (positive/negative)',
'adjust_credits_delta_hint' => 'Positive values grant credits, negative values deduct them.',
'adjust_credits' => 'Adjust kontingent',
'adjust_credits_delta' => 'Event kontingent delta (positive/negative)',
'adjust_credits_delta_hint' => 'Positive values add kontingent, negative values deduct it.',
'adjust_credits_reason' => 'Internal note',
'adjust_credits_success_title' => 'Credits updated',
'adjust_credits_success_body' => 'Credits changed by :delta. New balance: :balance.',
'adjust_credits_success_title' => 'Kontingent updated',
'adjust_credits_success_body' => 'Kontingent changed by :delta. New balance: :balance.',
'lifecycle' => 'Lifecycle',
'activate' => 'Activate',
'deactivate' => 'Deactivate',
@@ -649,7 +649,7 @@ return [
'fields' => [
'tenant' => 'Tenant',
'package' => 'Package',
'credits' => 'Credits',
'credits' => 'Event kontingent',
'price' => 'Price',
'currency' => 'Currency',
'platform' => 'Platform',

View File

@@ -14,4 +14,38 @@ return [
'default_title' => 'Access denied',
'default_message' => 'We could not grant access with this QR link.',
],
'packages' => [
'event_tier_unavailable' => [
'title' => 'Selected tier unavailable',
'message' => 'No Event-Kontingent is available for the selected event tier. Choose a different tier or purchase the matching Event-Kontingent.',
],
'event_limit_exceeded' => [
'title' => 'Event-Kontingent depleted',
'message' => 'Your current Event-Kontingent has no remaining events. Purchase another Event-Kontingent to create new events.',
],
'event_limit_missing' => [
'title' => 'No package assigned',
'message' => 'Purchase an Event-Kontingent to create events.',
],
'event_not_found' => [
'title' => 'Event not accessible',
'message' => 'The selected event could not be found or belongs to another tenant.',
],
'event_package_missing' => [
'title' => 'Event package missing',
'message' => 'No package is attached to this event. Assign a package to enable uploads.',
],
'photo_limit_exceeded' => [
'title' => 'Photo upload limit reached',
'message' => 'This event has reached its photo allowance. Upgrade the event package to accept more uploads.',
],
'tenant_photo_limit_exceeded' => [
'title' => 'Tenant photo limit reached',
'message' => 'This tenant has reached its photo allowance for the event.',
],
'tenant_storage_limit_exceeded' => [
'title' => 'Tenant storage limit reached',
'message' => 'This tenant has reached its storage allowance.',
],
],
];

View File

@@ -47,21 +47,34 @@
"hero_description": "From free entry to premium features: Tailor your event package to your needs. Simple, secure and scalable.",
"cta_explore": "Discover Packages",
"tab_endcustomer": "End Customers",
"tab_reseller": "Resellers & Agencies",
"tab_reseller": "Partner / Agency",
"section_endcustomer": "Packages for End Customers (One-time purchase per Event)",
"section_reseller": "Packages for Resellers (Annual Subscription)",
"section_reseller": "Packages for Partner / Agencies (Event-Kontingent)",
"free": "Free",
"one_time": "One-time purchase",
"subscription": "Subscription",
"subscription": "One-time purchase",
"year": "Year",
"billing_per_event": "per event",
"billing_per_kontingent": "per bundle",
"available": "Available",
"not_available": "Not available",
"standard_support": "Standard support",
"priority_support": "Priority support",
"badge_best_value": "Best value",
"badge_most_popular": "Most popular",
"badge_starter": "Starter",
"view_details": "View details",
"included_package_label": "Included event tier",
"recommended_usage_label": "Recommendation",
"max_photos": "Photos",
"max_guests": "Guests",
"gallery_days": "Gallery Days",
"max_events_year": "Events/Year",
"max_events_year": "Events included",
"recommended_usage_window": "Recommended to use within 24 months.",
"buy_now": "Buy Now",
"subscribe_now": "Subscribe Now",
"subscribe_now": "Buy Now",
"register_buy": "Register and Buy",
"register_subscribe": "Register and Subscribe",
"register_subscribe": "Register and Buy",
"faq_title": "Frequently Asked Questions about Packages",
"faq_q1": "What is a Package?",
"faq_a1": "A Package defines limits and features for your event, e.g. number of photos and gallery duration.",
@@ -93,7 +106,7 @@
"feature_custom_branding": "Custom Branding",
"feature_advanced_reporting": "Advanced Reporting",
"for_endcustomers": "For End Customers",
"for_resellers": "For Resellers",
"for_resellers": "For Partner / Agencies",
"details_show": "Show Details",
"comparison_title": "Compare Packages",
"price": "Price",
@@ -104,10 +117,10 @@
"no_watermark": "No Watermark",
"custom_branding": "Custom Branding",
"max_tenants": "Max. Tenants",
"max_events": "Max. Events/Year",
"max_events": "Events in kontingent",
"faq_free": "What is the Free Package?",
"faq_upgrade": "Can I upgrade?",
"faq_reseller": "What for Resellers?",
"faq_reseller": "What for Partner / Agencies?",
"faq_payment": "Payment secure?"
},
"blog": {

View File

@@ -7,21 +7,21 @@ return [
'hero_description' => 'From free entry to premium features: Tailor your event package to your needs. Simple, secure and scalable.',
'cta_explore' => 'Discover Packages',
'tab_endcustomer' => 'End Customers',
'tab_reseller' => 'Resellers & Agencies',
'tab_reseller' => 'Partner / Agencies',
'section_endcustomer' => 'Packages for End Customers (One-time purchase per Event)',
'section_reseller' => 'Packages for Resellers (Annual Subscription)',
'section_reseller' => 'Packages for Partner / Agencies (Event kontingent)',
'free' => 'Free',
'one_time' => 'One-time purchase',
'subscription' => 'Subscription',
'subscription' => 'Event kontingent',
'year' => 'Year',
'max_photos' => 'Photos',
'max_guests' => 'Guests',
'gallery_days' => 'Gallery Days',
'max_events_year' => 'Events/Year',
'max_events_year' => 'Events included',
'buy_now' => 'Buy Now',
'subscribe_now' => 'Subscribe Now',
'subscribe_now' => 'Buy event kontingent',
'register_buy' => 'Register and Buy',
'register_subscribe' => 'Register and Subscribe',
'register_subscribe' => 'Register and buy',
'faq_title' => 'Frequently Asked Questions about Packages',
'faq_q1' => 'What is a Package?',
'faq_a1' => 'A Package defines limits and features for your event, e.g. number of photos and gallery duration.',
@@ -49,7 +49,7 @@ return [
'feature_limited_sharing' => 'Limited Sharing',
'feature_no_branding' => 'No Branding',
'feature_0' => 'Basic Feature',
'feature_reseller_dashboard' => 'Reseller Dashboard',
'feature_reseller_dashboard' => 'Partner dashboard',
'feature_custom_branding' => 'Custom Branding',
'feature_advanced_reporting' => 'Advanced Reporting',
'badge_most_popular' => 'Most Popular',
@@ -57,6 +57,8 @@ return [
'badge_starter' => 'Perfect Starter',
'billing_per_event' => 'per event',
'billing_per_year' => 'per year',
'billing_per_kontingent' => 'per bundle',
'recommended_usage_window' => 'Recommended to use within 24 months.',
'more_features' => '+:count more features',
'max_photos_label' => 'Max. photos',
'max_guests_label' => 'Max. guests',
@@ -109,7 +111,7 @@ return [
'summary_title' => 'Your order',
'package_label' => 'Selected package',
'billing_type_one_time' => 'One-time purchase (per event)',
'billing_type_subscription' => 'Subscription (recurring)',
'billing_type_subscription' => 'One-time purchase (kontingent)',
'legal_links_intro' => 'By completing your order you accept our',
'link_terms' => 'Terms & Conditions',
'link_privacy' => 'Privacy Policy',
@@ -118,7 +120,7 @@ return [
'checkbox_terms_error' => 'Please confirm that you have read and accepted the Terms, Privacy Policy and Right of Withdrawal.',
'checkbox_digital_content_label' => 'I expressly request that you begin providing the digital services (activation of my event package including gallery and hosting) before the withdrawal period has expired. I understand that I lose my right of withdrawal once the contract has been fully performed.',
'checkbox_digital_content_error' => 'Please confirm that you agree to the immediate start of the digital service and the related early expiry of the right of withdrawal.',
'hint_subscription_withdrawal' => 'For subscriptions, consumers have a 14-day right of withdrawal from the conclusion of the contract. In case of withdrawal after the start of the service, we reserve the right to claim appropriate compensation for the value of services already provided.',
'hint_subscription_withdrawal' => 'For one-time purchases, consumers have a 14-day right of withdrawal from the conclusion of the contract. In case of withdrawal after the start of the service, we reserve the right to claim appropriate compensation for the value of services already provided.',
],
'legal' => [
'imprint' => 'Imprint',