Round 19: Professional Notebooks, Digital Rewards, GDPR, Role-Based Dashboard, Deep Styling Polish
- Fixed attendance API 403: added TEACHER school membership check - Fixed competitions API 403: cross-school access, null schoolId, public fallback - Fixed GDPR export API 500: 16 Prisma field name mismatches - Enhanced notebooks: page templates (Cornell, Mind Map, Venn, T-Chart, Weekly Planner), sticky notes, search, page duplication, sections/chapters, highlighter tool - Added scratch pad with DrawingCanvas in assessments for hand-written solutions - Role-based dashboard: TEACHER (competence radar, upcoming lessons), STUDENT (grades trend, competitions), PARENT (children grades, calendar), SCHOOL_ADMIN (system health, audit log, user management) - Digital reward system: 16 demo rewards, points earning/redemption, categories (streaming, shopping, experiences, merchandise, privileges) - GDPR compliance: consent management, data retention, cookie consent - Deep styling polish: glassmorphism, gradient headers, animated sidebar, card hover effects, progress bar animations, timeline dots, FAB button - 160+ new i18n keys (DE/EN)
This commit is contained in:
1 parent
86e4b504e4
commit
6d9b42ac37
43 files changed
+4569
-140
No files matched your search
+494
@@ -999,6 +999,17 @@ const de: TranslationDict = {
|
||||
'assessments.range': 'Spanne',
|
||||
'assessments.no_scores': 'Keine Punktezahlen',
|
||||
|
||||
// ─── Scratch pad (assessments) ──────────────────────────────────────
|
||||
'assessments.scratch_pad': 'Notizblock',
|
||||
'assessments.scratch_pad_title': 'Notizblock — {title}',
|
||||
'assessments.scratch_pad_description': 'Hier können Sie Ihre Lösung handschriftlich erarbeiten.',
|
||||
'assessments.scratch_pad_save': 'Zeichnung speichern',
|
||||
'assessments.scratch_pad_saved': 'Zeichnung gespeichert',
|
||||
'assessments.scratch_pad_saving': 'Wird gespeichert…',
|
||||
'assessments.scratch_pad_open': 'Notizblock öffnen',
|
||||
'assessments.scratch_pad_close': 'Notizblock schließen',
|
||||
'assessments.scratch_pad_resize': 'Größe anpassen',
|
||||
|
||||
// ─── Student journey timeline ──────────────────────────────────────
|
||||
'student.journey': 'Lernreise',
|
||||
'student.journey_milestone': 'Meilenstein',
|
||||
@@ -2136,6 +2147,54 @@ const de: TranslationDict = {
|
||||
'notebooks.type_dotted': 'Punktiert',
|
||||
'notebooks.type_music': 'Notenlinien',
|
||||
|
||||
// ─── Page Templates ──────────────────────────────────────────────
|
||||
'notebooks.page_template': 'Seitenvorlage',
|
||||
'notebooks.page_template_cornell': 'Cornell-Notizen',
|
||||
'notebooks.page_template_cornell_desc': 'Cornell-Notizsystem mit Zusammenfassung',
|
||||
'notebooks.page_template_mindmap': 'Mind Map',
|
||||
'notebooks.page_template_mindmap_desc': 'Zentrale Idee mit Verzweigungen',
|
||||
'notebooks.page_template_venn': 'Venn-Diagramm',
|
||||
'notebooks.page_template_venn_desc': 'Zwei Mengen vergleichen',
|
||||
'notebooks.page_template_tchart': 'T-Diagramm',
|
||||
'notebooks.page_template_tchart_desc': 'Zwei Seiten vergleichen',
|
||||
'notebooks.page_template_weekly': 'Wochenplaner',
|
||||
'notebooks.page_template_weekly_desc': 'Wochenuebersicht mit Aufgaben',
|
||||
'notebooks.page_template_blank': 'Leere Seite',
|
||||
'notebooks.page_template_choose': 'Seitenvorlage waehlen',
|
||||
|
||||
// ─── Sticky Notes ────────────────────────────────────────────────
|
||||
'notebooks.sticky_note': 'Klebezettel',
|
||||
'notebooks.sticky_note_add': 'Klebezettel hinzufuegen',
|
||||
'notebooks.sticky_note_delete': 'Klebezettel entfernen',
|
||||
'notebooks.sticky_note_color': 'Farbe',
|
||||
'notebooks.sticky_note_edit': 'Klebezettel bearbeiten',
|
||||
|
||||
// ─── Search Within Notebook ──────────────────────────────────────
|
||||
'notebooks.search_pages': 'Seiten durchsuchen',
|
||||
'notebooks.search_pages_placeholder': 'Text auf allen Seiten suchen…',
|
||||
'notebooks.search_no_results': 'Keine Ergebnisse gefunden',
|
||||
'notebooks.search_results': 'Ergebnisse',
|
||||
'notebooks.search_on_page': 'auf Seite',
|
||||
|
||||
// ─── Page Duplication ────────────────────────────────────────────
|
||||
'notebooks.duplicate_page': 'Seite duplizieren',
|
||||
'notebooks.duplicate_page_success': 'Seite dupliziert',
|
||||
'notebooks.duplicate_page_error': 'Fehler beim Duplizieren der Seite',
|
||||
|
||||
// ─── Sections / Chapters ─────────────────────────────────────────
|
||||
'notebooks.sections': 'Abschnitte',
|
||||
'notebooks.section_add': 'Abschnitt hinzufuegen',
|
||||
'notebooks.section_name': 'Abschnittsname',
|
||||
'notebooks.section_name_placeholder': 'Abschnittsname eingeben',
|
||||
'notebooks.section_delete': 'Abschnitt entfernen',
|
||||
'notebooks.section_divider': 'Trennblatt',
|
||||
'notebooks.table_of_contents': 'Inhaltsverzeichnis',
|
||||
'notebooks.no_sections': 'Keine Abschnitte vorhanden',
|
||||
|
||||
// ─── Highlighter Tool ────────────────────────────────────────────
|
||||
'drawing.tool_highlighter': 'Textmarker',
|
||||
'drawing.tool_highlighter_desc': 'Halbtransparenter Textmarker zum Hervorheben',
|
||||
|
||||
// ─── Enhanced Notifications ──────────────────────────────────────
|
||||
'notifications.today': 'Heute',
|
||||
'notifications.yesterday': 'Gestern',
|
||||
@@ -3499,6 +3558,194 @@ const de: TranslationDict = {
|
||||
'dsgvo.right_objection_desc': 'Sie haben das Recht, aus Gründen der besonderen Situation Widerspruch gegen die Verarbeitung einzulegen.',
|
||||
'dsgvo.dpa_download': 'AVV-Vorlage herunterladen',
|
||||
'dsgvo.data_register_download': 'Verzeichnis herunterladen',
|
||||
'dsgvo.consent_management': 'Einwilligungsverwaltung',
|
||||
'dsgvo.consent_management_desc': 'Verwalten Sie Ihre Einwilligungen zur Datenverarbeitung.',
|
||||
'dsgvo.consent_data_processing': 'Datenverarbeitung',
|
||||
'dsgvo.consent_data_processing_desc': 'Einwilligung zur Verarbeitung Ihrer Daten für den Betrieb der Plattform.',
|
||||
'dsgvo.consent_communication': 'Kommunikation',
|
||||
'dsgvo.consent_communication_desc': 'Einwilligung zum Empfang von Benachrichtigungen und E-Mails.',
|
||||
'dsgvo.consent_analytics': 'Anonyme Analyse',
|
||||
'dsgvo.consent_analytics_desc': 'Einwilligung zur anonymen Nutzungsanalyse zur Verbesserung der Plattform.',
|
||||
'dsgvo.consent_third_party': 'Datenweitergabe',
|
||||
'dsgvo.consent_third_party_desc': 'Einwilligung zur Weitergabe von Daten an Dritte (z.B. Wettbewerbspartner).',
|
||||
'dsgvo.consent_granted': 'Erteilt',
|
||||
'dsgvo.consent_revoked': 'Widerrufen',
|
||||
'dsgvo.consent_revoke': 'Widerrufen',
|
||||
'dsgvo.consent_grant': 'Erteilen',
|
||||
'dsgvo.retention_settings': 'Aufbewahrungseinstellungen',
|
||||
'dsgvo.retention_settings_desc': 'Konfigurieren Sie die Speicherdauer Ihrer Daten.',
|
||||
'dsgvo.retention_grades': 'Noten aufbewahren für',
|
||||
'dsgvo.retention_attendance': 'Anwesenheitsdaten aufbewahren für',
|
||||
'dsgvo.retention_behavior': 'Verhaltensdaten aufbewahren für',
|
||||
'dsgvo.retention_years': 'Jahre',
|
||||
|
||||
// ─── Digital Reward Catalog ─────────────────────────────────────────
|
||||
'rewards.title': 'Belohnungen',
|
||||
'rewards.catalog': 'Belohnungskatalog',
|
||||
'rewards.catalog_desc': 'Lösen Sie Ihre Punkte für tolle Belohnungen ein.',
|
||||
'rewards.category.streaming': 'Streaming',
|
||||
'rewards.category.shopping': 'Einkaufen',
|
||||
'rewards.category.experience': 'Erlebnisse',
|
||||
'rewards.category.merchandise': 'Schul-Merchandise',
|
||||
'rewards.category.privilege': 'Sonderrechte',
|
||||
'rewards.category.all': 'Alle Kategorien',
|
||||
'rewards.points_balance': 'Punktestand',
|
||||
'rewards.points_earned': 'Punkte verdient',
|
||||
'rewards.points_spent': 'Punkte ausgegeben',
|
||||
'rewards.redeem': 'Einlösen',
|
||||
'rewards.redeem_confirm': 'Belohnung einlösen?',
|
||||
'rewards.redeem_confirm_desc': 'Möchten Sie {points} Punkte für {reward} einlösen?',
|
||||
'rewards.redeem_success': 'Belohnung erfolgreich eingelöst!',
|
||||
'rewards.redeem_error': 'Fehler beim Einlösen der Belohnung.',
|
||||
'rewards.insufficient_points': 'Nicht genügend Punkte.',
|
||||
'rewards.out_of_stock': 'Nicht mehr verfügbar.',
|
||||
'rewards.stock_remaining': 'Noch {count} verfügbar',
|
||||
'rewards.unlimited': 'Unbegrenzt',
|
||||
'rewards.points_cost': 'Kosten',
|
||||
'rewards.my_redemptions': 'Meine Einlösungen',
|
||||
'rewards.redemption_status': 'Status',
|
||||
'rewards.redemption.pending': 'Ausstehend',
|
||||
'rewards.redemption.approved': 'Genehmigt',
|
||||
'rewards.redemption.rejected': 'Abgelehnt',
|
||||
'rewards.redemption.fulfilled': 'Erfüllt',
|
||||
'rewards.points_history': 'Punkteverlauf',
|
||||
'rewards.points_source.competition': 'Wettbewerb',
|
||||
'rewards.points_source.grade': 'Gute Noten',
|
||||
'rewards.points_source.attendance': 'Anwesenheit',
|
||||
'rewards.points_source.homework': 'Hausaufgaben',
|
||||
'rewards.points_source.bonus': 'Bonus',
|
||||
'rewards.create_reward': 'Belohnung erstellen',
|
||||
'rewards.edit_reward': 'Belohnung bearbeiten',
|
||||
'rewards.delete_reward': 'Belohnung löschen',
|
||||
'rewards.no_rewards': 'Keine Belohnungen vorhanden',
|
||||
'rewards.streaming.netflix': 'Netflix-Gutschein',
|
||||
'rewards.streaming.spotify': 'Spotify-Premium',
|
||||
'rewards.streaming.disney': 'Disney+-Gutschein',
|
||||
'rewards.shopping.amazon': 'Amazon-Gutschein',
|
||||
'rewards.shopping.thalia': 'Thalia-Gutschein',
|
||||
'rewards.shopping.mediamarkt': 'MediaMarkt-Gutschein',
|
||||
'rewards.experience.cinema': 'Kino-Ticket',
|
||||
'rewards.experience.theater': 'Theater-Ticket',
|
||||
'rewards.experience.concert': 'Konzert-Ticket',
|
||||
'rewards.experience.museum': 'Museumseintritt',
|
||||
'rewards.merchandise.tshirt': 'Schul-T-Shirt',
|
||||
'rewards.merchandise.stickers': 'Aufkleber-Set',
|
||||
'rewards.merchandise.notebook': 'Schulheft',
|
||||
'rewards.privilege.homework_pass': 'Hausaufgaben-Frei',
|
||||
'rewards.privilege.extra_break': 'Extra Pause',
|
||||
'rewards.privilege.choose_seat': 'Sitzplatz wählen',
|
||||
'rewards.earn_points': 'Punkte verdienen',
|
||||
'rewards.earn_points_desc': 'Verdienen Sie Punkte durch aktive Teilnahme am Schulleben.',
|
||||
'rewards.earn_competition': 'Wettbewerbe: Teilnahme + Gewinn',
|
||||
'rewards.earn_grades': 'Gute Noten: Je besser, desto mehr Punkte',
|
||||
'rewards.earn_attendance': 'Anwesenheitssträhne: Regelmäßig dabei sein',
|
||||
'rewards.earn_homework': 'Hausaufgaben: Pünktlich abgeben',
|
||||
'rewards.earn_bonus': 'Bonuspunkte: Besondere Leistungen',
|
||||
|
||||
// ─── Teacher Dashboard ──────────────────────────────────────────────
|
||||
'teacher.dashboard_title': 'Lehrer-Dashboard',
|
||||
'teacher.welcome_back': 'Willkommen zurück',
|
||||
'teacher.my_classes': 'Meine Klassen',
|
||||
'teacher.my_classes_desc': 'Übersicht Ihrer Klassen mit Schüleranzahl',
|
||||
'teacher.recent_assessments': 'Letzte Bewertungen',
|
||||
'teacher.graded': 'Benotet',
|
||||
'teacher.pending': 'Ausstehend',
|
||||
'teacher.upcoming_lessons': 'Kommende Stunden',
|
||||
'teacher.competence_progress': 'Kompetenzfortschritt',
|
||||
'teacher.competence_progress_desc': 'Radar-Übersicht der Kompetenzbereiche',
|
||||
'teacher.recent_progress_entries': 'Neueste Fortschrittseinträge',
|
||||
'teacher.quick_actions': 'Schnellaktionen',
|
||||
'teacher.create_assessment': 'Bewertung erstellen',
|
||||
'teacher.take_attendance': 'Anwesenheit erfassen',
|
||||
'teacher.log_progress': 'Fortschritt loggen',
|
||||
'teacher.message_parents': 'Eltern kontaktieren',
|
||||
'teacher.student_count': 'Schüler',
|
||||
'teacher.no_classes': 'Keine Klassen vorhanden',
|
||||
'teacher.no_assessments': 'Keine Bewertungen vorhanden',
|
||||
'teacher.no_lessons': 'Keine Stunden geplant',
|
||||
'teacher.avg_mastery': 'Durchschnittsniveau',
|
||||
'teacher.assessment_count': 'Anzahl Bewertungen',
|
||||
'teacher.class_overview': 'Klassenübersicht',
|
||||
|
||||
// ─── Student Dashboard (enhanced) ───────────────────────────────────
|
||||
'student.my_grades_overview': 'Meine Notenübersicht',
|
||||
'student.my_grades_trend': 'Notenverlauf',
|
||||
'student.grade_trend_up': 'Steigend',
|
||||
'student.grade_trend_down': 'Fallend',
|
||||
'student.grade_trend_stable': 'Stabil',
|
||||
'student.my_competence_flower': 'Meine Kompetenzblume',
|
||||
'student.competence_flower_desc': 'Visuelle Übersicht deiner Kompetenzentwicklung',
|
||||
'student.upcoming_homework': 'Anstehende Hausaufgaben',
|
||||
'student.no_homework': 'Keine anstehenden Hausaufgaben',
|
||||
'student.competition_standings': 'Wettbewerbsstände',
|
||||
'student.my_rank': 'Mein Rang',
|
||||
'student.points': 'Punkte',
|
||||
'student.no_competitions': 'Keine aktiven Wettbewerbe',
|
||||
'student.school_announcements': 'Schulankündigungen',
|
||||
|
||||
// ─── Parent Dashboard (enhanced) ────────────────────────────────────
|
||||
'parent.children_grades': 'Noten der Kinder',
|
||||
'parent.children_grades_desc': 'Aktuelle Noten Ihrer Kinder',
|
||||
'parent.child_grade': 'Note',
|
||||
'parent.child_subject': 'Fach',
|
||||
'parent.children_attendance_summary': 'Anwesenheitsübersicht der Kinder',
|
||||
'parent.present_rate': 'Anwesenheitsrate',
|
||||
'parent.absent_count': 'Fehltage',
|
||||
'parent.late_count': 'Verspätungen',
|
||||
'parent.teacher_messages': 'Lehrernachrichten',
|
||||
'parent.no_teacher_messages': 'Keine Nachrichten von Lehrern',
|
||||
'parent.school_announcements': 'Schulankündigungen',
|
||||
'parent.calendar_events': 'Termine',
|
||||
'parent.upcoming_events': 'Anstehende Termine',
|
||||
'parent.no_events': 'Keine anstehenden Termine',
|
||||
'parent.competition_results': 'Wettbewerbsergebnisse',
|
||||
'parent.no_competition_results': 'Keine Wettbewerbsgebnisse verfügbar',
|
||||
'parent.child_recent_grade': 'Letzte Note',
|
||||
|
||||
// ─── School Admin Dashboard ─────────────────────────────────────────
|
||||
'admin.dashboard_title': 'Admin-Dashboard',
|
||||
'admin.welcome_back': 'Willkommen zurück',
|
||||
'admin.school_overview': 'Schulübersicht',
|
||||
'admin.total_students': 'Schüler insgesamt',
|
||||
'admin.total_classes': 'Klassen insgesamt',
|
||||
'admin.total_teachers': 'Lehrkräfte insgesamt',
|
||||
'admin.total_parents': 'Eltern insgesamt',
|
||||
'admin.system_health': 'Systemstatus',
|
||||
'admin.system_healthy': 'System läuft einwandfrei',
|
||||
'admin.system_degraded': 'Eingeschränkter Betrieb',
|
||||
'admin.uptime': 'Betriebszeit',
|
||||
'admin.active_users': 'Aktive Nutzer',
|
||||
'admin.storage_used': 'Speicherbelegung',
|
||||
'admin.api_requests': 'API-Anfragen heute',
|
||||
'admin.audit_log': 'Aktivitätsprotokoll',
|
||||
'admin.audit_log_desc': 'Letzte Systemaktivitäten',
|
||||
'admin.no_audit_entries': 'Keine Aktivitäten protokolliert',
|
||||
'admin.user_management': 'Benutzerverwaltung',
|
||||
'admin.manage_teachers': 'Lehrkräfte verwalten',
|
||||
'admin.manage_students': 'Schüler verwalten',
|
||||
'admin.manage_parents': 'Eltern verwalten',
|
||||
'admin.school_statistics': 'Schulstatistiken',
|
||||
'admin.enrollment_trend': 'Einschreibungsentwicklung',
|
||||
'admin.grade_distribution': 'Notenverteilung',
|
||||
'admin.attendance_rate': 'Anwesenheitsrate',
|
||||
'admin.competency_overview': 'Kompetenzübersicht',
|
||||
'admin.announcements_management': 'Ankündigungen verwalten',
|
||||
'admin.create_announcement': 'Ankündigung erstellen',
|
||||
'admin.recent_activity': 'Letzte Aktivitäten',
|
||||
'admin.action_type': 'Aktionstyp',
|
||||
'admin.user': 'Benutzer',
|
||||
'admin.timestamp': 'Zeitstempel',
|
||||
'admin.details': 'Details',
|
||||
'admin.quick_actions': 'Schnellaktionen',
|
||||
'admin.add_teacher': 'Lehrkraft hinzufügen',
|
||||
'admin.add_student': 'Schüler hinzufügen',
|
||||
'admin.add_class': 'Klasse hinzufügen',
|
||||
'admin.school_settings': 'Schuleinstellungen',
|
||||
'admin.export_data': 'Daten exportieren',
|
||||
'admin.health_excellent': 'Ausgezeichnet',
|
||||
'admin.health_good': 'Gut',
|
||||
'admin.health_warning': 'Warnung',
|
||||
'admin.health_critical': 'Kritisch',
|
||||
};
|
||||
|
||||
const en: TranslationDict = {
|
||||
@@ -4497,6 +4744,17 @@ const en: TranslationDict = {
|
||||
'assessments.range': 'Range',
|
||||
'assessments.no_scores': 'No scores available',
|
||||
|
||||
// ─── Scratch pad (assessments) ──────────────────────────────────────
|
||||
'assessments.scratch_pad': 'Scratch Pad',
|
||||
'assessments.scratch_pad_title': 'Scratch Pad — {title}',
|
||||
'assessments.scratch_pad_description': 'Work out your solution by hand here.',
|
||||
'assessments.scratch_pad_save': 'Save Drawing',
|
||||
'assessments.scratch_pad_saved': 'Drawing saved',
|
||||
'assessments.scratch_pad_saving': 'Saving…',
|
||||
'assessments.scratch_pad_open': 'Open Scratch Pad',
|
||||
'assessments.scratch_pad_close': 'Close Scratch Pad',
|
||||
'assessments.scratch_pad_resize': 'Resize',
|
||||
|
||||
// ─── Student journey timeline ──────────────────────────────────────
|
||||
'student.journey': 'Learning Journey',
|
||||
'student.journey_milestone': 'Milestone',
|
||||
@@ -5634,6 +5892,54 @@ const en: TranslationDict = {
|
||||
'notebooks.type_dotted': 'Dotted',
|
||||
'notebooks.type_music': 'Music Lines',
|
||||
|
||||
// ─── Page Templates ──────────────────────────────────────────────
|
||||
'notebooks.page_template': 'Page Template',
|
||||
'notebooks.page_template_cornell': 'Cornell Notes',
|
||||
'notebooks.page_template_cornell_desc': 'Cornell note-taking system with summary',
|
||||
'notebooks.page_template_mindmap': 'Mind Map',
|
||||
'notebooks.page_template_mindmap_desc': 'Central idea with branches',
|
||||
'notebooks.page_template_venn': 'Venn Diagram',
|
||||
'notebooks.page_template_venn_desc': 'Compare two sets',
|
||||
'notebooks.page_template_tchart': 'T-Chart',
|
||||
'notebooks.page_template_tchart_desc': 'Compare two sides',
|
||||
'notebooks.page_template_weekly': 'Weekly Planner',
|
||||
'notebooks.page_template_weekly_desc': 'Weekly overview with tasks',
|
||||
'notebooks.page_template_blank': 'Blank Page',
|
||||
'notebooks.page_template_choose': 'Choose page template',
|
||||
|
||||
// ─── Sticky Notes ────────────────────────────────────────────────
|
||||
'notebooks.sticky_note': 'Sticky Note',
|
||||
'notebooks.sticky_note_add': 'Add Sticky Note',
|
||||
'notebooks.sticky_note_delete': 'Remove Sticky Note',
|
||||
'notebooks.sticky_note_color': 'Color',
|
||||
'notebooks.sticky_note_edit': 'Edit Sticky Note',
|
||||
|
||||
// ─── Search Within Notebook ──────────────────────────────────────
|
||||
'notebooks.search_pages': 'Search Pages',
|
||||
'notebooks.search_pages_placeholder': 'Search text across all pages…',
|
||||
'notebooks.search_no_results': 'No results found',
|
||||
'notebooks.search_results': 'Results',
|
||||
'notebooks.search_on_page': 'on page',
|
||||
|
||||
// ─── Page Duplication ────────────────────────────────────────────
|
||||
'notebooks.duplicate_page': 'Duplicate Page',
|
||||
'notebooks.duplicate_page_success': 'Page duplicated',
|
||||
'notebooks.duplicate_page_error': 'Error duplicating page',
|
||||
|
||||
// ─── Sections / Chapters ─────────────────────────────────────────
|
||||
'notebooks.sections': 'Sections',
|
||||
'notebooks.section_add': 'Add Section',
|
||||
'notebooks.section_name': 'Section Name',
|
||||
'notebooks.section_name_placeholder': 'Enter section name',
|
||||
'notebooks.section_delete': 'Remove Section',
|
||||
'notebooks.section_divider': 'Divider',
|
||||
'notebooks.table_of_contents': 'Table of Contents',
|
||||
'notebooks.no_sections': 'No sections yet',
|
||||
|
||||
// ─── Highlighter Tool ────────────────────────────────────────────
|
||||
'drawing.tool_highlighter': 'Highlighter',
|
||||
'drawing.tool_highlighter_desc': 'Semi-transparent highlighter for emphasizing',
|
||||
|
||||
// ─── Enhanced Notifications ──────────────────────────────────────
|
||||
'notifications.today': 'Today',
|
||||
'notifications.yesterday': 'Yesterday',
|
||||
@@ -6997,6 +7303,194 @@ const en: TranslationDict = {
|
||||
'dsgvo.right_objection_desc': 'You have the right to object to processing on grounds relating to your particular situation.',
|
||||
'dsgvo.dpa_download': 'Download DPA template',
|
||||
'dsgvo.data_register_download': 'Download register',
|
||||
'dsgvo.consent_management': 'Consent Management',
|
||||
'dsgvo.consent_management_desc': 'Manage your data processing consents.',
|
||||
'dsgvo.consent_data_processing': 'Data Processing',
|
||||
'dsgvo.consent_data_processing_desc': 'Consent to process your data for platform operation.',
|
||||
'dsgvo.consent_communication': 'Communication',
|
||||
'dsgvo.consent_communication_desc': 'Consent to receive notifications and emails.',
|
||||
'dsgvo.consent_analytics': 'Anonymous Analytics',
|
||||
'dsgvo.consent_analytics_desc': 'Consent to anonymous usage analytics for platform improvement.',
|
||||
'dsgvo.consent_third_party': 'Third-Party Sharing',
|
||||
'dsgvo.consent_third_party_desc': 'Consent to share data with third parties (e.g., competition partners).',
|
||||
'dsgvo.consent_granted': 'Granted',
|
||||
'dsgvo.consent_revoked': 'Revoked',
|
||||
'dsgvo.consent_revoke': 'Revoke',
|
||||
'dsgvo.consent_grant': 'Grant',
|
||||
'dsgvo.retention_settings': 'Retention Settings',
|
||||
'dsgvo.retention_settings_desc': 'Configure how long your data is retained.',
|
||||
'dsgvo.retention_grades': 'Retain grades for',
|
||||
'dsgvo.retention_attendance': 'Retain attendance data for',
|
||||
'dsgvo.retention_behavior': 'Retain behavior data for',
|
||||
'dsgvo.retention_years': 'years',
|
||||
|
||||
// ─── Digital Reward Catalog ─────────────────────────────────────────
|
||||
'rewards.title': 'Rewards',
|
||||
'rewards.catalog': 'Reward Catalog',
|
||||
'rewards.catalog_desc': 'Redeem your points for great rewards.',
|
||||
'rewards.category.streaming': 'Streaming',
|
||||
'rewards.category.shopping': 'Shopping',
|
||||
'rewards.category.experience': 'Experiences',
|
||||
'rewards.category.merchandise': 'School Merchandise',
|
||||
'rewards.category.privilege': 'Special Privileges',
|
||||
'rewards.category.all': 'All Categories',
|
||||
'rewards.points_balance': 'Points Balance',
|
||||
'rewards.points_earned': 'Points Earned',
|
||||
'rewards.points_spent': 'Points Spent',
|
||||
'rewards.redeem': 'Redeem',
|
||||
'rewards.redeem_confirm': 'Redeem Reward?',
|
||||
'rewards.redeem_confirm_desc': 'Do you want to spend {points} points for {reward}?',
|
||||
'rewards.redeem_success': 'Reward redeemed successfully!',
|
||||
'rewards.redeem_error': 'Error redeeming reward.',
|
||||
'rewards.insufficient_points': 'Insufficient points.',
|
||||
'rewards.out_of_stock': 'Out of stock.',
|
||||
'rewards.stock_remaining': '{count} remaining',
|
||||
'rewards.unlimited': 'Unlimited',
|
||||
'rewards.points_cost': 'Cost',
|
||||
'rewards.my_redemptions': 'My Redemptions',
|
||||
'rewards.redemption_status': 'Status',
|
||||
'rewards.redemption.pending': 'Pending',
|
||||
'rewards.redemption.approved': 'Approved',
|
||||
'rewards.redemption.rejected': 'Rejected',
|
||||
'rewards.redemption.fulfilled': 'Fulfilled',
|
||||
'rewards.points_history': 'Points History',
|
||||
'rewards.points_source.competition': 'Competition',
|
||||
'rewards.points_source.grade': 'Good Grades',
|
||||
'rewards.points_source.attendance': 'Attendance',
|
||||
'rewards.points_source.homework': 'Homework',
|
||||
'rewards.points_source.bonus': 'Bonus',
|
||||
'rewards.create_reward': 'Create Reward',
|
||||
'rewards.edit_reward': 'Edit Reward',
|
||||
'rewards.delete_reward': 'Delete Reward',
|
||||
'rewards.no_rewards': 'No rewards available',
|
||||
'rewards.streaming.netflix': 'Netflix Voucher',
|
||||
'rewards.streaming.spotify': 'Spotify Premium',
|
||||
'rewards.streaming.disney': 'Disney+ Voucher',
|
||||
'rewards.shopping.amazon': 'Amazon Voucher',
|
||||
'rewards.shopping.thalia': 'Thalia Voucher',
|
||||
'rewards.shopping.mediamarkt': 'MediaMarkt Voucher',
|
||||
'rewards.experience.cinema': 'Cinema Ticket',
|
||||
'rewards.experience.theater': 'Theater Ticket',
|
||||
'rewards.experience.concert': 'Concert Ticket',
|
||||
'rewards.experience.museum': 'Museum Entry',
|
||||
'rewards.merchandise.tshirt': 'School T-Shirt',
|
||||
'rewards.merchandise.stickers': 'Sticker Set',
|
||||
'rewards.merchandise.notebook': 'School Notebook',
|
||||
'rewards.privilege.homework_pass': 'Homework Pass',
|
||||
'rewards.privilege.extra_break': 'Extra Break Time',
|
||||
'rewards.privilege.choose_seat': 'Choose Your Seat',
|
||||
'rewards.earn_points': 'Earn Points',
|
||||
'rewards.earn_points_desc': 'Earn points through active participation in school life.',
|
||||
'rewards.earn_competition': 'Competitions: Participation + Wins',
|
||||
'rewards.earn_grades': 'Good Grades: Better grades earn more points',
|
||||
'rewards.earn_attendance': 'Attendance Streak: Be there regularly',
|
||||
'rewards.earn_homework': 'Homework: Submit on time',
|
||||
'rewards.earn_bonus': 'Bonus Points: Special achievements',
|
||||
|
||||
// ─── Teacher Dashboard ──────────────────────────────────────────────
|
||||
'teacher.dashboard_title': 'Teacher Dashboard',
|
||||
'teacher.welcome_back': 'Welcome back',
|
||||
'teacher.my_classes': 'My Classes',
|
||||
'teacher.my_classes_desc': 'Overview of your classes with student count',
|
||||
'teacher.recent_assessments': 'Recent Assessments',
|
||||
'teacher.graded': 'Graded',
|
||||
'teacher.pending': 'Pending',
|
||||
'teacher.upcoming_lessons': 'Upcoming Lessons',
|
||||
'teacher.competence_progress': 'Competence Progress',
|
||||
'teacher.competence_progress_desc': 'Radar overview of competence areas',
|
||||
'teacher.recent_progress_entries': 'Recent Progress Entries',
|
||||
'teacher.quick_actions': 'Quick Actions',
|
||||
'teacher.create_assessment': 'Create Assessment',
|
||||
'teacher.take_attendance': 'Take Attendance',
|
||||
'teacher.log_progress': 'Log Progress',
|
||||
'teacher.message_parents': 'Message Parents',
|
||||
'teacher.student_count': 'Students',
|
||||
'teacher.no_classes': 'No classes available',
|
||||
'teacher.no_assessments': 'No assessments available',
|
||||
'teacher.no_lessons': 'No lessons scheduled',
|
||||
'teacher.avg_mastery': 'Average Mastery',
|
||||
'teacher.assessment_count': 'Assessment Count',
|
||||
'teacher.class_overview': 'Class Overview',
|
||||
|
||||
// ─── Student Dashboard (enhanced) ───────────────────────────────────
|
||||
'student.my_grades_overview': 'My Grades Overview',
|
||||
'student.my_grades_trend': 'Grade Trend',
|
||||
'student.grade_trend_up': 'Improving',
|
||||
'student.grade_trend_down': 'Declining',
|
||||
'student.grade_trend_stable': 'Stable',
|
||||
'student.my_competence_flower': 'My Competence Flower',
|
||||
'student.competence_flower_desc': 'Visual overview of your competence development',
|
||||
'student.upcoming_homework': 'Upcoming Homework',
|
||||
'student.no_homework': 'No upcoming homework',
|
||||
'student.competition_standings': 'Competition Standings',
|
||||
'student.my_rank': 'My Rank',
|
||||
'student.points': 'Points',
|
||||
'student.no_competitions': 'No active competitions',
|
||||
'student.school_announcements': 'School Announcements',
|
||||
|
||||
// ─── Parent Dashboard (enhanced) ────────────────────────────────────
|
||||
'parent.children_grades': "Children's Grades",
|
||||
'parent.children_grades_desc': "Current grades of your children",
|
||||
'parent.child_grade': 'Grade',
|
||||
'parent.child_subject': 'Subject',
|
||||
'parent.children_attendance_summary': "Children's Attendance Summary",
|
||||
'parent.present_rate': 'Attendance Rate',
|
||||
'parent.absent_count': 'Absences',
|
||||
'parent.late_count': 'Late Arrivals',
|
||||
'parent.teacher_messages': 'Teacher Messages',
|
||||
'parent.no_teacher_messages': 'No messages from teachers',
|
||||
'parent.school_announcements': 'School Announcements',
|
||||
'parent.calendar_events': 'Calendar Events',
|
||||
'parent.upcoming_events': 'Upcoming Events',
|
||||
'parent.no_events': 'No upcoming events',
|
||||
'parent.competition_results': 'Competition Results',
|
||||
'parent.no_competition_results': 'No competition results available',
|
||||
'parent.child_recent_grade': 'Recent Grade',
|
||||
|
||||
// ─── School Admin Dashboard ─────────────────────────────────────────
|
||||
'admin.dashboard_title': 'Admin Dashboard',
|
||||
'admin.welcome_back': 'Welcome back',
|
||||
'admin.school_overview': 'School Overview',
|
||||
'admin.total_students': 'Total Students',
|
||||
'admin.total_classes': 'Total Classes',
|
||||
'admin.total_teachers': 'Total Teachers',
|
||||
'admin.total_parents': 'Total Parents',
|
||||
'admin.system_health': 'System Health',
|
||||
'admin.system_healthy': 'System running smoothly',
|
||||
'admin.system_degraded': 'Degraded performance',
|
||||
'admin.uptime': 'Uptime',
|
||||
'admin.active_users': 'Active Users',
|
||||
'admin.storage_used': 'Storage Used',
|
||||
'admin.api_requests': 'API Requests Today',
|
||||
'admin.audit_log': 'Audit Log',
|
||||
'admin.audit_log_desc': 'Recent system activities',
|
||||
'admin.no_audit_entries': 'No activities logged',
|
||||
'admin.user_management': 'User Management',
|
||||
'admin.manage_teachers': 'Manage Teachers',
|
||||
'admin.manage_students': 'Manage Students',
|
||||
'admin.manage_parents': 'Manage Parents',
|
||||
'admin.school_statistics': 'School Statistics',
|
||||
'admin.enrollment_trend': 'Enrollment Trend',
|
||||
'admin.grade_distribution': 'Grade Distribution',
|
||||
'admin.attendance_rate': 'Attendance Rate',
|
||||
'admin.competency_overview': 'Competency Overview',
|
||||
'admin.announcements_management': 'Announcements Management',
|
||||
'admin.create_announcement': 'Create Announcement',
|
||||
'admin.recent_activity': 'Recent Activity',
|
||||
'admin.action_type': 'Action Type',
|
||||
'admin.user': 'User',
|
||||
'admin.timestamp': 'Timestamp',
|
||||
'admin.details': 'Details',
|
||||
'admin.quick_actions': 'Quick Actions',
|
||||
'admin.add_teacher': 'Add Teacher',
|
||||
'admin.add_student': 'Add Student',
|
||||
'admin.add_class': 'Add Class',
|
||||
'admin.school_settings': 'School Settings',
|
||||
'admin.export_data': 'Export Data',
|
||||
'admin.health_excellent': 'Excellent',
|
||||
'admin.health_good': 'Good',
|
||||
'admin.health_warning': 'Warning',
|
||||
'admin.health_critical': 'Critical',
|
||||
};
|
||||
|
||||
const translations: Record<string, TranslationDict> = { de, en };
|
||||
|
||||
Reference in new issue
Block a user