- Served the guest PWA at /g/{token} and introduced a mobile-friendly gallery page with lazy-loaded thumbnails, themed colors, lightbox, and download links plus new gallery data client (resources/js/guest/pages/PublicGalleryPage.tsx:1, resources/js/guest/services/galleryApi.ts:1, resources/js/guest/router.tsx:1). Added i18n strings for the public gallery experience (resources/js/guest/i18n/messages.ts:1).
- Ensured checkout step changes snap back to the progress bar on mobile via smooth scroll anchoring (resources/ js/pages/marketing/checkout/CheckoutWizard.tsx:1).
- Enabled tenant admins to export all approved event photos through a new download action that streams a ZIP archive, with translations and routing in place (app/Http/Controllers/Tenant/EventPhotoArchiveController.php:1, app/Filament/Resources/EventResource.php:1, routes/web.php:1, resources/lang/de/admin.php:1, resources/lang/en/admin.php:1).
247 lines
8.0 KiB
PHP
247 lines
8.0 KiB
PHP
<?php
|
||
|
||
return [
|
||
'nav' => [
|
||
'platform' => 'Plattform',
|
||
'library' => 'Bibliothek',
|
||
'content' => 'Inhalte',
|
||
],
|
||
|
||
'common' => [
|
||
'key' => 'Schlüssel',
|
||
'value' => 'Wert',
|
||
'locale' => 'Sprache',
|
||
'german' => 'Deutsch',
|
||
'english' => 'Englisch',
|
||
'import' => 'Import',
|
||
'import_csv' => 'CSV importieren',
|
||
'download_csv_template' => 'CSV‑Vorlage herunterladen',
|
||
'csv_file' => 'CSV‑Datei',
|
||
'close' => 'Schließen',
|
||
'hash' => '#',
|
||
'slug' => 'Slug',
|
||
'event' => 'Veranstaltung',
|
||
'tenant' => 'Mandant',
|
||
'uploads' => 'Uploads',
|
||
'uploads_today' => 'Uploads heute',
|
||
'thumb' => 'Vorschau',
|
||
'likes' => 'Gefällt mir',
|
||
'emotion' => 'Emotion',
|
||
'event_type' => 'Eventtyp',
|
||
'last_activity' => 'Letzte Aktivität',
|
||
'credits' => 'Credits',
|
||
'settings' => 'Einstellungen',
|
||
'join' => 'Beitreten',
|
||
'unnamed' => 'Ohne Namen',
|
||
],
|
||
|
||
'photos' => [
|
||
'fields' => [
|
||
'event' => 'Veranstaltung',
|
||
'photo' => 'Foto',
|
||
'is_featured' => 'Hervorgehoben',
|
||
'metadata' => 'Metadaten',
|
||
'likes' => 'Gefällt mir',
|
||
],
|
||
'actions' => [
|
||
'feature' => 'Hervorheben',
|
||
'unfeature' => 'Hervorhebung entfernen',
|
||
'feature_selected' => 'Auswahl hervorheben',
|
||
'unfeature_selected' => 'Hervorhebung der Auswahl entfernen',
|
||
],
|
||
'table' => [
|
||
'photo' => 'Foto',
|
||
'event' => 'Veranstaltung',
|
||
'likes' => 'Gefällt mir',
|
||
],
|
||
],
|
||
|
||
'events' => [
|
||
'fields' => [
|
||
'tenant' => 'Mandant',
|
||
'name' => 'Eventname',
|
||
'slug' => 'Slug',
|
||
'date' => 'Eventdatum',
|
||
'type' => 'Eventtyp',
|
||
'default_locale' => 'Standardsprache',
|
||
'is_active' => 'Aktiv',
|
||
'settings' => 'Einstellungen',
|
||
],
|
||
'table' => [
|
||
'tenant' => 'Mandant',
|
||
'join' => 'Beitreten',
|
||
'join_tokens_total' => 'Join-Tokens: :count',
|
||
'join_tokens_missing' => 'Noch keine Join-Tokens erstellt',
|
||
],
|
||
'actions' => [
|
||
'toggle_active' => 'Aktiv umschalten',
|
||
'join_link_qr' => 'Beitrittslink / QR',
|
||
'download_photos' => 'Alle Fotos herunterladen',
|
||
],
|
||
'modal' => [
|
||
'join_link_heading' => 'Beitrittslink der Veranstaltung',
|
||
],
|
||
'messages' => [
|
||
'join_link_copied' => 'Beitrittslink kopiert',
|
||
],
|
||
'join_link' => [
|
||
'event_label' => 'Veranstaltung',
|
||
'deprecated_notice' => 'Der direkte Zugriff über den Event-Slug :slug wurde deaktiviert. Teile die Join-Tokens unten oder öffne in der Admin-App „QR & Einladungen“, um neue Codes zu verwalten.',
|
||
'open_admin' => 'Admin-App öffnen',
|
||
'link_label' => 'Beitrittslink',
|
||
'copy_link' => 'Kopieren',
|
||
'no_tokens' => 'Noch keine Join-Tokens vorhanden. Erstelle im Admin-Bereich ein Token, um dein Event zu teilen.',
|
||
'token_default' => 'Einladung #:id',
|
||
'token_usage' => 'Nutzung: :usage / :limit',
|
||
'token_active' => 'Aktiv',
|
||
'token_inactive' => 'Deaktiviert',
|
||
'qr_code_label' => 'QR‑Code',
|
||
'note_html' => 'Hinweis: Der QR‑Code wird über einen externen QR‑Service generiert. Für eine selbst gehostete Lösung können wir später eine interne QR‑Generierung ergänzen.',
|
||
'layouts_heading' => 'Drucklayouts',
|
||
'layouts_fallback' => 'Layout-Übersicht öffnen',
|
||
'token_expiry' => 'Läuft ab am :date',
|
||
],
|
||
],
|
||
|
||
'legal_pages' => [
|
||
'fields' => [
|
||
'slug' => 'Slug',
|
||
'title_localized' => 'Titel (de/en)',
|
||
'content_localization' => 'Inhaltslokalisierung',
|
||
'content_de' => 'Inhalt (Deutsch)',
|
||
'content_en' => 'Inhalt (Englisch)',
|
||
'is_published' => 'Veröffentlicht',
|
||
'effective_from' => 'Gültig ab',
|
||
'version' => 'Version',
|
||
],
|
||
],
|
||
|
||
'emotions' => [
|
||
'sections' => [
|
||
'content_localization' => 'Inhaltslokalisierung',
|
||
],
|
||
'fields' => [
|
||
'name_de' => 'Name (Deutsch)',
|
||
'description_de' => 'Beschreibung (Deutsch)',
|
||
'name_en' => 'Name (Englisch)',
|
||
'description_en' => 'Beschreibung (Englisch)',
|
||
'icon_emoji' => 'Icon/Emoji',
|
||
'color' => 'Farbe',
|
||
'sort_order' => 'Sortierreihenfolge',
|
||
'is_active' => 'Aktiv',
|
||
'event_types' => 'Eventtypen',
|
||
],
|
||
'table' => [
|
||
'name' => 'Name',
|
||
'icon' => 'Icon',
|
||
'color' => 'Farbe',
|
||
'is_active' => 'Aktiv',
|
||
'sort_order' => 'Sortierung',
|
||
],
|
||
'import' => [
|
||
'heading' => 'Emotionen importieren (CSV)',
|
||
],
|
||
],
|
||
|
||
'event_types' => [
|
||
'sections' => [
|
||
'name_localization' => 'Namenslokalisierung',
|
||
],
|
||
'fields' => [
|
||
'name_de' => 'Name (Deutsch)',
|
||
'name_en' => 'Name (Englisch)',
|
||
'slug' => 'Slug',
|
||
'icon' => 'Icon',
|
||
'settings' => 'Einstellungen',
|
||
'emotions' => 'Emotionen',
|
||
],
|
||
'table' => [
|
||
'name' => 'Name',
|
||
'slug' => 'Slug',
|
||
'icon' => 'Icon',
|
||
'created_at' => 'Erstellt',
|
||
],
|
||
],
|
||
|
||
'tasks' => [
|
||
'menu' => 'Aufgaben',
|
||
'fields' => [
|
||
'event_type_optional' => 'Eventtyp (optional)',
|
||
'content_localization' => 'Inhaltslokalisierung',
|
||
'title_de' => 'Titel (Deutsch)',
|
||
'description_de' => 'Beschreibung (Deutsch)',
|
||
'example_de' => 'Beispieltext (Deutsch)',
|
||
'title_en' => 'Titel (Englisch)',
|
||
'description_en' => 'Beschreibung (Englisch)',
|
||
'example_en' => 'Beispieltext (Englisch)',
|
||
'emotion' => 'Emotion',
|
||
'event_type' => 'Eventtyp',
|
||
'difficulty' => [
|
||
'label' => 'Schwierigkeit',
|
||
'easy' => 'Leicht',
|
||
'medium' => 'Mittel',
|
||
'hard' => 'Schwer',
|
||
],
|
||
],
|
||
'table' => [
|
||
'title' => 'Titel',
|
||
'is_active' => 'Aktiv',
|
||
'sort_order' => 'Sortierung',
|
||
],
|
||
'table' => [
|
||
'name' => 'Name',
|
||
'icon' => 'Icon',
|
||
'color' => 'Farbe',
|
||
'is_active' => 'Aktiv',
|
||
'sort_order' => 'Sortierung',
|
||
],
|
||
'import' => [
|
||
'heading' => 'Aufgaben importieren (CSV)',
|
||
],
|
||
],
|
||
|
||
'widgets' => [
|
||
'events_active_today' => [
|
||
'heading' => 'Heute aktive Events',
|
||
],
|
||
'recent_uploads' => [
|
||
'heading' => 'Neueste Uploads',
|
||
],
|
||
'top_tenants_by_uploads' => [
|
||
'heading' => 'Top‑Mandanten nach Uploads',
|
||
],
|
||
'uploads_per_day' => [
|
||
'heading' => 'Uploads (14 Tage)',
|
||
],
|
||
],
|
||
|
||
'notifications' => [
|
||
'file_not_found' => 'Datei nicht gefunden',
|
||
'imported_rows' => ':count Zeilen importiert',
|
||
'failed_count' => ':count fehlgeschlagen',
|
||
],
|
||
|
||
'tenants' => [
|
||
'fields' => [
|
||
'name' => 'Mandantenname',
|
||
'slug' => 'Slug',
|
||
'contact_email' => 'Kontakt‑E‑Mail',
|
||
'event_credits_balance' => 'Event‑Credits‑Kontostand',
|
||
'features' => 'Funktionen',
|
||
],
|
||
],
|
||
|
||
'shell' => [
|
||
'tenant_admin_title' => 'Tenant‑Admin',
|
||
],
|
||
|
||
'errors' => [
|
||
'forbidden' => [
|
||
'title' => 'Kein Zugriff',
|
||
'message' => 'Du hast keine Berechtigung, diesen Bereich des Admin-Panels zu öffnen.',
|
||
'hint' => 'Bitte prüfe, ob dein Mandantenpaket aktiv ist oder wende dich an den Support, wenn du Hilfe benötigst.',
|
||
'cta' => 'Zur Startseite',
|
||
],
|
||
],
|
||
];
|