feat(profile): add username + preferred_locale; wire to Inertia + middleware

- DB: users.username (unique), users.preferred_locale (default from app.locale)
- Backend: validation, model fillable; share supportedLocales; SetLocaleFromUser
- Frontend: profile page fields + types
- Filament: SuperAdmin profile page with username/language

feat(admin-nav): move Tasks to Bibliothek and add menu labels

fix(tasks-table): show localized title/emotion/event type; add translated headers

feat(l10n): add missing table headers for emotions and event types; normalize en/de files

refactor: tidy translations for tasks/emotions/event types
This commit is contained in:
2025-09-11 21:17:19 +02:00
parent 40aa5fc188
commit fc1e64fea3
33 changed files with 960 additions and 161 deletions

222
resources/lang/de/admin.php Normal file
View File

@@ -0,0 +1,222 @@
<?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' => 'CSVVorlage herunterladen',
'csv_file' => 'CSVDatei',
'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',
],
'actions' => [
'toggle_active' => 'Aktiv umschalten',
'join_link_qr' => 'Beitrittslink / QR',
],
'modal' => [
'join_link_heading' => 'Beitrittslink der Veranstaltung',
],
'messages' => [
'join_link_copied' => 'Beitrittslink kopiert',
],
'join_link' => [
'link_label' => 'Beitrittslink',
'qr_code_label' => 'QRCode',
'note_html' => 'Hinweis: Der QRCode wird über einen externen QRService generiert. Für eine selbst gehostete Lösung können wir später eine interne QRGenerierung ergänzen.',
],
],
'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' => 'TopMandanten 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' => 'KontaktEMail',
'event_credits_balance' => 'EventCreditsKontostand',
'features' => 'Funktionen',
],
],
'shell' => [
'tenant_admin_title' => 'TenantAdmin',
],
];