Files
fotospiel-app/resources/lang/en/admin.php
Codex Agent ae9b9160ac - Added public gallery API with token-expiry enforcement, branding payload, cursor pagination, and per-photo download stream (app/Http/Controllers/Api/EventPublicController.php:1, routes/api.php:16). 410 is returned when the package gallery duration has lapsed.
- 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).
2025-10-17 23:24:06 +02:00

233 lines
7.1 KiB
PHP

<?php
return [
'nav' => [
'platform' => 'Platform',
'library' => 'Library',
'content' => 'Content',
],
'common' => [
'key' => 'Key',
'value' => 'Value',
'locale' => 'Locale',
'german' => 'German',
'english' => 'English',
'import' => 'Import',
'import_csv' => 'Import CSV',
'download_csv_template' => 'Download CSV Template',
'csv_file' => 'CSV file',
'close' => 'Close',
'hash' => '#',
'slug' => 'Slug',
'event' => 'Event',
'tenant' => 'Tenant',
'uploads' => 'Uploads',
'uploads_today' => 'Uploads today',
'thumb' => 'Thumb',
'likes' => 'Likes',
'emotion' => 'Emotion',
'event_type' => 'Event Type',
'last_activity' => 'Last activity',
'credits' => 'Credits',
'settings' => 'Settings',
'join' => 'Join',
'unnamed' => 'Unnamed',
],
'photos' => [
'fields' => [
'event' => 'Event',
'photo' => 'Photo',
'is_featured' => 'Is Featured',
'metadata' => 'Metadata',
'likes' => 'Likes',
],
'actions' => [
'feature' => 'Feature',
'unfeature' => 'Unfeature',
'feature_selected' => 'Feature selected',
'unfeature_selected' => 'Unfeature selected',
],
'table' => [
'photo' => 'Photo',
'event' => 'Event',
'likes' => 'Likes',
],
],
'events' => [
'fields' => [
'tenant' => 'Tenant',
'name' => 'Event Name',
'slug' => 'Slug',
'date' => 'Event Date',
'type' => 'Event Type',
'default_locale' => 'Default Locale',
'is_active' => 'Is Active',
'settings' => 'Settings',
],
'table' => [
'tenant' => 'Tenant',
'join' => 'Join',
'join_tokens_total' => 'Join tokens: :count',
'join_tokens_missing' => 'No join tokens created yet',
],
'actions' => [
'toggle_active' => 'Toggle Active',
'join_link_qr' => 'Join Link / QR',
'download_photos' => 'Download all photos',
],
'modal' => [
'join_link_heading' => 'Event Join Link',
],
'messages' => [
'join_link_copied' => 'Join link copied',
],
'join_link' => [
'event_label' => 'Event',
'slug_label' => 'Slug: :slug',
'link_label' => 'Join Link',
'copy_link' => 'Copy',
'no_tokens' => 'No tokens available yet. Create a token in the admin app to share your event.',
'token_default' => 'Invitation #:id',
'token_usage' => 'Usage: :usage / :limit',
'token_active' => 'Active',
'token_inactive' => 'Inactive',
'layouts_heading' => 'Printable layouts',
'layouts_fallback' => 'Open layout overview',
'token_expiry' => 'Expires at :date',
'deprecated_notice' => 'Direct access via slug :slug has been retired. Share the join tokens below or manage QR layouts in the admin app.',
'open_admin' => 'Open admin app',
],
],
'legal_pages' => [
'fields' => [
'slug' => 'Slug',
'title_localized' => 'Title (de/en)',
'content_localization' => 'Content Localization',
'content_de' => 'Content (German)',
'content_en' => 'Content (English)',
'is_published' => 'Is Published',
'effective_from' => 'Effective From',
'version' => 'Version',
],
],
'emotions' => [
'sections' => [
'content_localization' => 'Content Localization',
],
'fields' => [
'name_de' => 'Name (German)',
'description_de' => 'Description (German)',
'name_en' => 'Name (English)',
'description_en' => 'Description (English)',
'icon_emoji' => 'Icon/Emoji',
'color' => 'Color',
'sort_order' => 'Sort Order',
'is_active' => 'Is Active',
'event_types' => 'Event Types',
],
'table' => [
'name' => 'Name',
'icon' => 'Icon',
'color' => 'Color',
'is_active' => 'Active',
'sort_order' => 'Sort Order',
],
'import' => [
'heading' => 'Import Emotions (CSV)',
],
],
'event_types' => [
'sections' => [
'name_localization' => 'Name Localization',
],
'fields' => [
'name_de' => 'Name (German)',
'name_en' => 'Name (English)',
'slug' => 'Slug',
'icon' => 'Icon',
'settings' => 'Settings',
'emotions' => 'Emotions',
],
],
'tasks' => [
'menu' => 'Tasks',
'fields' => [
'event_type_optional' => 'Event Type (optional)',
'content_localization' => 'Content Localization',
'title_de' => 'Title (German)',
'description_de' => 'Description (German)',
'example_de' => 'Example Text (German)',
'title_en' => 'Title (English)',
'description_en' => 'Description (English)',
'example_en' => 'Example Text (English)',
'emotion' => 'Emotion',
'event_type' => 'Event Type',
'difficulty' => [
'label' => 'Difficulty',
'easy' => 'Easy',
'medium' => 'Medium',
'hard' => 'Hard',
],
],
'table' => [
'title' => 'Title',
'is_active' => 'Active',
'sort_order' => 'Sort Order',
],
'import' => [
'heading' => 'Import Tasks (CSV)',
],
],
'widgets' => [
'events_active_today' => [
'heading' => 'Events active today',
],
'recent_uploads' => [
'heading' => 'Recent uploads',
],
'top_tenants_by_uploads' => [
'heading' => 'Top tenants by uploads',
],
'uploads_per_day' => [
'heading' => 'Uploads (14 days)',
],
],
'notifications' => [
'file_not_found' => 'File not found',
'imported_rows' => 'Imported :count rows',
'failed_count' => ':count failed',
],
'tenants' => [
'fields' => [
'name' => 'Tenant Name',
'slug' => 'Slug',
'contact_email' => 'Contact Email',
'event_credits_balance' => 'Event Credits Balance',
'features' => 'Features',
],
],
'shell' => [
'tenant_admin_title' => 'Tenant Admin',
],
'errors' => [
'forbidden' => [
'title' => 'Access denied',
'message' => 'You do not have permission to access this area of the admin panel.',
'hint' => 'Please verify that your tenant subscription is active or contact support if you believe this is a mistake.',
'cta' => 'Return to start page',
],
],
];