Round 22: Exam Calendar, Tablet Grading, Student Achievements, Notification Center, Announcements, Styling

- Exam Calendar View: Teacher exam planning with calendar integration
  - Teachers create/modify exams, admin full CRUD, students read-only
  - CalendarEvent integration, 2-week warning, AI test availability badge
  - Monthly/weekly calendar view, list view, statistics

- Tablet Grading View: Stylus annotation and AI grading audit
  - HTML5 Canvas with PointerEvent pressure sensitivity
  - Tool palette: pen, highlighter, eraser, text, stamp
  - Quick grade buttons (German 1-6 scale)
  - AI grading audit with detailed feedback and suggestions

- Student Achievements View: Badges, XP, leaderboard
  - Badge collection grid with category filters
  - Level/XP system with progress bars
  - Leaderboard with opt-in
  - Daily/weekly challenges

- Student Study Planner View: Pomodoro timer, weekly schedule
  - Pomodoro timer with focus score
  - Weekly study schedule with drag-and-drop
  - AI study recommendations
  - Session history and statistics

- Notification Center View: Categories, filters, bulk actions
  - 6 categories, 4 priority levels
  - Real-time polling (10 seconds)
  - Preferences with quiet hours
  - Statistics charts

- School Announcements View: CRUD, read receipts
  - 6 announcement types with gradient headers
  - Pin-to-top, read receipts, target audience
  - Admin/teacher create, students/parents view

- Bug fixes: AnnouncementRead model user relation, User API schoolId field
- i18n: 200+ new keys, breadcrumb navigation fixes
- Styling: Gradient headers, animations, hover effects across all new views
This commit is contained in:
Mustafa Cetin committed 2026-07-29 22:56:40 +00:00
1 parent 9e22214470
commit 490bd0650f
30 files changed
+10844 -31

No files matched your search

+772
View File
@@ -4904,6 +4904,392 @@ const de: TranslationDict = {
'portal.study_progress': 'Lernfortschritt',
'portal.focus_areas': 'Schwerpunkte',
'portal.motivation_message': 'Weiter so! Du bist auf dem richtigen Weg.',
// Exam Calendar
'nav.exam_calendar': 'Prüfungsplan',
'exam_calendar.title': 'Prüfungsplan',
'exam_calendar.subtitle': 'Planen und verwalten Sie Prüfungen und Klassenarbeiten',
'exam_calendar.create_exam': 'Prüfung erstellen',
'exam_calendar.create_exam_desc': 'Planen Sie eine neue Prüfung oder Klassenarbeit',
'exam_calendar.edit_exam': 'Prüfung bearbeiten',
'exam_calendar.edit_exam_desc': 'Bearbeiten Sie die Prüfungsdetails',
'exam_calendar.exam_title': 'Titel',
'exam_calendar.exam_title_placeholder': 'z.B. Klassenarbeit 3 - Bruchrechnung',
'exam_calendar.exam_date': 'Datum',
'exam_calendar.start_time': 'Beginn',
'exam_calendar.end_time': 'Ende',
'exam_calendar.subject': 'Fach',
'exam_calendar.select_subject': 'Fach wählen',
'exam_calendar.class': 'Klasse',
'exam_calendar.select_class': 'Klasse wählen',
'exam_calendar.room': 'Raum',
'exam_calendar.room_placeholder': 'z.B. Raum 204',
'exam_calendar.topics': 'Themen',
'exam_calendar.topics_placeholder': 'Durch Komma getrennt, z.B. Brüche, Dezimalzahlen',
'exam_calendar.weight': 'Gewichtung',
'exam_calendar.status': 'Status',
'exam_calendar.status_planned': 'Geplant',
'exam_calendar.status_confirmed': 'Bestätigt',
'exam_calendar.status_completed': 'Abgeschlossen',
'exam_calendar.status_cancelled': 'Abgesagt',
'exam_calendar.notes': 'Notizen',
'exam_calendar.notes_placeholder': 'Zusätzliche Hinweise für die Prüfung...',
'exam_calendar.time': 'Uhrzeit',
'exam_calendar.all_day': 'Ganztägig',
'exam_calendar.teacher': 'Lehrkraft',
'exam_calendar.total_exams': 'Prüfungen gesamt',
'exam_calendar.upcoming_exams': 'Bevorstehende Prüfungen',
'exam_calendar.confirmed_exams': 'Bestätigte Prüfungen',
'exam_calendar.two_week_warning': 'In 2 Wochen',
'exam_calendar.student_upcoming': 'Bevorstehende Prüfungen',
'exam_calendar.ai_tests_available': 'KI-Tests verfügbar',
'exam_calendar.two_week_banner_title': 'Prüfungen in den nächsten 2 Wochen',
'exam_calendar.ai_test_available': 'KI-Übungstest verfügbar',
'exam_calendar.search_placeholder': 'Prüfungen suchen...',
'exam_calendar.filter_class': 'Klasse',
'exam_calendar.filter_subject': 'Fach',
'exam_calendar.filter_status': 'Status',
'exam_calendar.all_classes': 'Alle Klassen',
'exam_calendar.all_subjects': 'Alle Fächer',
'exam_calendar.all_statuses': 'Alle Status',
'exam_calendar.view_calendar': 'Kalender',
'exam_calendar.view_list': 'Liste',
'exam_calendar.more': 'weitere',
'exam_calendar.no_exams': 'Keine Prüfungen gefunden',
'exam_calendar.exams_by_subject': 'Prüfungen nach Fach',
'exam_calendar.exams_by_class': 'Prüfungen nach Klasse',
'exam_calendar.error_fetch': 'Fehler beim Laden der Prüfungen',
'exam_calendar.error_required_fields': 'Bitte füllen Sie alle Pflichtfelder aus',
'exam_calendar.error_create': 'Fehler beim Erstellen der Prüfung',
'exam_calendar.error_update': 'Fehler beim Aktualisieren der Prüfung',
'exam_calendar.error_delete': 'Fehler beim Löschen der Prüfung',
'exam_calendar.exam_created': 'Prüfung erfolgreich erstellt',
'exam_calendar.exam_updated': 'Prüfung erfolgreich aktualisiert',
'exam_calendar.exam_deleted': 'Prüfung erfolgreich gelöscht',
'exam_calendar.creating': 'Wird erstellt...',
'exam_calendar.saving': 'Wird gespeichert...',
'exam_calendar.delete_confirm_title': 'Prüfung löschen',
'exam_calendar.delete_confirm_desc': 'Möchten Sie die Prüfung "{title}" wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
// Tablet Grading
'nav.tablet_grading': 'Tablet-Benotung',
'tablet_grading.loading': 'Benotungsansicht wird geladen...',
'tablet_grading.select_class': 'Klasse auswählen',
'tablet_grading.select_assessment': 'Leistungüberprüfung auswählen',
'tablet_grading.search_student': 'Schüler suchen...',
'tablet_grading.all': 'Alle',
'tablet_grading.submitted': 'Abgegeben',
'tablet_grading.graded': 'Benotet',
'tablet_grading.pending': 'Ausstehend',
'tablet_grading.no_students': 'Keine Schüler gefunden',
'tablet_grading.students': 'Schüler',
'tablet_grading.select_student_hint': 'Wählen Sie einen Schüler aus, um mit der Benotung zu beginnen',
'tablet_grading.quick_grade': 'Schnellbenotung (Deutsche Notenskala)',
'tablet_grading.score': 'Punktzahl',
'tablet_grading.teacher_notes': 'Lehrernotizen',
'tablet_grading.notes_placeholder': 'Notizen zur Arbeit dieses Schülers...',
'tablet_grading.ai_suggestion': 'KI-Vorschlag',
'tablet_grading.suggested_grade': 'Vorgeschlagene Note',
'tablet_grading.current_grade': 'Aktuelle Note',
'tablet_grading.accept': 'Akzeptieren',
'tablet_grading.reject': 'Ablehnen',
'tablet_grading.suggestion_accepted': 'Vorschlag akzeptiert',
'tablet_grading.suggestion_rejected': 'Vorschlag abgelehnt',
'tablet_grading.save_grade': 'Note speichern',
'tablet_grading.saved': 'Anmerkungen gespeichert',
'tablet_grading.save_error': 'Fehler beim Speichern der Anmerkungen',
'tablet_grading.grade_saved': 'Note gespeichert',
'tablet_grading.grade_error': 'Fehler beim Speichern der Note',
'tablet_grading.ai_audit': 'KI-Prüfung',
'tablet_grading.ai_results': 'KI-Ergebnisse',
'tablet_grading.ai_review_complete': 'KI-Prüfung abgeschlossen',
'tablet_grading.ai_review_error': 'Fehler bei der KI-Prüfung',
'tablet_grading.ai_audit_title': 'KI-Benotungsprüfung',
'tablet_grading.analyzing': 'Analysiere...',
'tablet_grading.trigger_audit': 'KI-Prüfung starten',
'tablet_grading.latest_review': 'Neueste Prüfung',
'tablet_grading.reasoning': 'Begründung',
'tablet_grading.discrepancies_found': 'Gefundene Unstimmigkeiten',
'tablet_grading.discrepancy': 'Unstimmigkeit',
'tablet_grading.consistent': 'Konsistent',
'tablet_grading.discrepancies': 'Unstimmigkeiten',
'tablet_grading.review_history': 'Prüfungsverlauf',
'tablet_grading.suggested': 'Vorgeschlagen',
'tablet_grading.no_reviews': 'Noch keine KI-Prüfungen. Starten Sie eine Prüfung.',
'tablet_grading.student_view': 'Schüleransicht — Nur Lesen',
'tablet_grading.admin_view': 'Admin-Ansicht',
'tablet_grading.enter_text': 'Text eingeben...',
// Notification Center
'nav.notification_center': 'Benachrichtigungen',
'nav.notification-center': 'Benachrichtigungen',
'nav.announcements': 'Ankündigungen',
'nav.exam-calendar': 'Prüfungsplan',
'nav.tablet-grading': 'Tablet-Benotung',
'nav.student-achievements': 'Erfolge',
'nav.student-study-planner': 'Lernplaner',
'notif_center.title': 'Benachrichtigungscenter',
'notif_center.subtitle': 'Alle Benachrichtigungen und Updates an einem Ort',
'notif_center.loading': 'Laden...',
'notif_center.mark_all_read': 'Alle als gelesen markieren',
'notif_center.preferences': 'Einstellungen',
'notif_center.preferences_title': 'Benachrichtigungseinstellungen',
'notif_center.category_toggles': 'Kategorien aktivieren/deaktivieren',
'notif_center.quiet_hours': 'Ruhezeiten',
'notif_center.email_digest': 'E-Mail-Zusammenfassung',
'notif_center.digest_daily': 'Täglich',
'notif_center.digest_weekly': 'Wöchentlich',
'notif_center.category_academic': 'Akademisch',
'notif_center.category_behavioral': 'Verhalten',
'notif_center.category_administrative': 'Verwaltung',
'notif_center.category_calendar': 'Kalender',
'notif_center.category_communication': 'Kommunikation',
'notif_center.category_system': 'System',
'notif_center.priority_urgent': 'Dringend',
'notif_center.priority_high': 'Hoch',
'notif_center.priority_normal': 'Normal',
'notif_center.priority_low': 'Niedrig',
'notif_center.just_now': 'Gerade eben',
'notif_center.minutes_ago': 'vor {n} Minuten',
'notif_center.hours_ago': 'vor {n} Stunden',
'notif_center.days_ago': 'vor {n} Tagen',
'notif_center.total': 'Gesamt',
'notif_center.unread': 'Ungelesen',
'notif_center.urgent_high': 'Dringend/Hoch',
'notif_center.archived': 'Archiviert',
'notif_center.tab_all': 'Alle',
'notif_center.tab_unread': 'Ungelesen',
'notif_center.tab_archived': 'Archiviert',
'notif_center.filter_category': 'Kategorie',
'notif_center.filter_priority': 'Priorität',
'notif_center.filter_read': 'Status',
'notif_center.all_categories': 'Alle Kategorien',
'notif_center.all_priorities': 'Alle Prioritäten',
'notif_center.all_status': 'Alle Status',
'notif_center.unread_only': 'Nur ungelesen',
'notif_center.read_only': 'Nur gelesen',
'notif_center.no_notifications': 'Keine Benachrichtigungen vorhanden',
'notif_center.mark_read': 'Als gelesen markieren',
'notif_center.archive': 'Archivieren',
'notif_center.selected': 'ausgewählt',
'notif_center.go_to': 'Gehe zu',
'notif_center.by_category': 'Nach Kategorie',
'notif_center.distribution': 'Verteilung',
// Announcements
'announcements.title': 'Schulankündigungen',
'announcements.subtitle': 'Offizielle Ankündigungen und Informationen der Schule',
'announcements.loading': 'Laden...',
'announcements.create': 'Ankündigung erstellen',
'announcements.create_title': 'Neue Ankündigung',
'announcements.edit_title': 'Ankündigung bearbeiten',
'announcements.total': 'Gesamt',
'announcements.pinned': 'Angeheftet',
'announcements.urgent_high': 'Dringend/Hoch',
'announcements.unread': 'Ungelesen',
'announcements.no_announcements': 'Keine Ankündigungen vorhanden',
'announcements.mark_read': 'Als gelesen markieren',
'announcements.pin': 'Anheften',
'announcements.unpin': 'Loslösen',
'announcements.show_more': 'Mehr anzeigen',
'announcements.show_less': 'Weniger anzeigen',
'announcements.have_read': 'gelesen',
'announcements.expires': 'Läuft ab am',
'announcements.just_now': 'Gerade eben',
'announcements.minutes_ago': 'vor {n} Minuten',
'announcements.hours_ago': 'vor {n} Stunden',
'announcements.days_ago': 'vor {n} Tagen',
'announcements.type_general': 'Allgemein',
'announcements.type_urgent': 'Dringend',
'announcements.type_event': 'Veranstaltung',
'announcements.type_holiday': 'Feiertag',
'announcements.type_exam': 'Prüfung',
'announcements.type_deadline': 'Frist',
'announcements.priority_low': 'Niedrig',
'announcements.priority_normal': 'Normal',
'announcements.priority_high': 'Hoch',
'announcements.priority_urgent': 'Dringend',
'announcements.target_all': 'Alle',
'announcements.target_teachers': 'Lehrkräfte',
'announcements.target_students': 'Schüler',
'announcements.target_parents': 'Eltern',
'announcements.target_class': 'Klasse',
'announcements.filter_type': 'Typ',
'announcements.filter_priority': 'Priorität',
'announcements.all_types': 'Alle Typen',
'announcements.all_priorities': 'Alle Prioritäten',
'announcements.field_title': 'Titel',
'announcements.field_title_placeholder': 'Titel der Ankündigung',
'announcements.field_content': 'Inhalt',
'announcements.field_content_placeholder': 'Inhalt der Ankündigung...',
'announcements.field_type': 'Typ',
'announcements.field_priority': 'Priorität',
'announcements.field_target': 'Zielgruppe',
'announcements.field_class': 'Klasse',
'announcements.field_expiry': 'Ablaufdatum',
'announcements.pin_to_top': 'Oben anheften',
// Student Portal Enhancements (DE)
'student_portal.quick_practice': 'Ueben starten',
'student_portal.quick_homework': 'Hausaufgaben',
'student_portal.quick_achievements': 'Erfolge',
'student_portal.quick_study': 'Lernplaner',
'student_portal.competency_radar': 'Kompetenz-Radar',
'student_portal.grade_trend': 'Notenverlauf',
'student_portal.weekly_heatmap': 'Woechentliche Aktivitaet',
'student_portal.less': 'Weniger',
'student_portal.more': 'Mehr',
'student_portal.daily_challenge': 'Tagesherausforderung',
'student_portal.challenge_title': 'Lose 5 Uebungen',
'student_portal.challenge_description': 'Schliesse heute 5 Uebungen ab, um XP zu verdienen!',
'student_portal.start_challenge': 'Herausforderung starten',
'student_portal.learning_time': 'Lernzeit',
'student_portal.today': 'Heute',
'student_portal.this_week': 'Diese Woche',
'student_portal.this_month': 'Dieser Monat',
'student_portal.weekly_goal': 'Wochenziel',
// Achievements (DE)
'achievements.title': 'Erfolge',
'achievements.subtitle': 'Sammle Abzeichen und steigere dein Level!',
'achievements.badges': 'Abzeichen',
'achievements.leaderboard': 'Rangliste',
'achievements.challenges': 'Herausforderungen',
'achievements.badges_earned': 'Abzeichen verdient',
'achievements.badges_locked': 'Abzeichen gesperrt',
'achievements.total_xp': 'Gesamt-XP',
'achievements.current_level': 'Aktuelle Stufe',
'achievements.xp_progress': 'XP-Fortschritt',
'achievements.next_level': 'Naechste Stufe',
'achievements.category_progress': 'Kategorie-Fortschritt',
'achievements.earned_badges': 'Verdiente Abzeichen',
'achievements.locked_badges': 'Gesperrte Abzeichen',
'achievements.class_leaderboard': 'Klassenrangliste',
'achievements.you': 'Du',
'achievements.share': 'Teilen',
'achievements.share_with_parents': 'Mit Eltern teilen',
'achievements.share_description': 'Teile diesen Erfolg mit deinen Eltern',
'achievements.share_success': 'Erfolg geteilt!',
'achievements.daily_challenge': 'Tagesherausforderung',
'achievements.daily_challenge_1': 'Lose 3 Uebungen',
'achievements.daily_challenge_1_desc': 'Schliesse 3 Uebungen in einem Fach ab',
'achievements.daily_challenge_2': 'Lerne 15 Minuten',
'achievements.daily_challenge_2_desc': 'Verbringe 15 Minuten mit dem Lernplaner',
'achievements.daily_challenge_3': 'Frage einen Klassenkameraden',
'achievements.daily_challenge_3_desc': 'Hilf einem Mitschueler bei einer Frage',
'achievements.weekly_challenge': 'Wochenaufgabe',
'achievements.weekly_challenge_title': 'Lerne 5 Stunden',
'achievements.weekly_challenge_desc': 'Verbringe diese Woche mindestens 5 Stunden beim Lernen',
'achievements.completed': 'Abgeschlossen',
'achievements.level': 'Stufe',
// Study Planner (DE)
'study_planner.title': 'Lernplaner',
'study_planner.subtitle': 'Plane deine Lernzeit effektiv!',
'study_planner.weekly_minutes': 'Minuten diese Woche',
'study_planner.sessions_this_week': 'Sitzungen diese Woche',
'study_planner.active_plans': 'Aktive Plaene',
'study_planner.streak': 'Strich',
'study_planner.days': 'Tage',
'study_planner.subject_allocation': 'Fachverteilung',
'study_planner.weekly_schedule': 'Wochenplan',
'study_planner.timer': 'Timer',
'study_planner.ai_plan': 'KI-Plan',
'study_planner.pomodoro_timer': 'Pomodoro-Timer',
'study_planner.pomodoros': 'Pomodoros',
'study_planner.focus': 'Fokus',
'study_planner.break': 'Pause',
'study_planner.start': 'Starten',
'study_planner.pause': 'Pause',
'study_planner.subject': 'Fach',
'study_planner.select_subject': 'Fach waehlen',
'study_planner.pomodoro_complete': 'Pomodoro abgeschlossen! ({count} gesamt)',
'study_planner.break_over': 'Pause vorbei! Weiter gehts!',
'study_planner.exam_checklist': 'Pruefungsvorbereitung',
'study_planner.checklist_review_notes': 'Notizen wiederholen',
'study_planner.checklist_practice_problems': 'Uebungsaufgaben loesen',
'study_planner.checklist_create_summary': 'Zusammenfassung erstellen',
'study_planner.checklist_teach_someone': 'Jemandem erklaeren',
'study_planner.checklist_take_breaks': 'Pausen machen',
'study_planner.ai_recommendation': 'KI-Lernempfehlung',
'study_planner.ai_recommendation_desc': 'Basierend auf deinen Faechern und Schwachbereichen',
'study_planner.weak_areas': 'Schwachbereiche',
'study_planner.add_plan': 'Plan hinzufuegen',
'study_planner.edit_plan': 'Plan bearbeiten',
'study_planner.edit_plan_desc': 'Aendere deinen Lernplan',
'study_planner.add_plan_desc': 'Erstelle einen neuen Lernplan',
'study_planner.plan_title': 'Titel',
'study_planner.plan_title_placeholder': 'z.B. Mathe ueben',
'study_planner.plan_description': 'Beschreibung',
'study_planner.plan_description_placeholder': 'z.B. Algebra Uebungen',
'study_planner.day': 'Tag',
'study_planner.start_time': 'Startzeit',
'study_planner.duration': 'Dauer',
'study_planner.priority': 'Prioritaet',
'study_planner.low': 'Niedrig',
'study_planner.medium': 'Mittel',
'study_planner.high': 'Hoch',
'study_planner.plan_created': 'Plan erstellt!',
'study_planner.plan_updated': 'Plan aktualisiert!',
'study_planner.plan_deleted': 'Plan geloescht!',
'study_planner.title_required': 'Titel ist erforderlich',
'study_planner.quick_access': 'Schnellzugriff',
'study_planner.notebooks': 'Hefte',
'study_planner.subjects': 'Faecher',
'study_planner.homework': 'Hausaufgaben',
'study_planner.resources': 'Ressourcen',
'study_planner.monday': 'Montag',
'study_planner.tuesday': 'Dienstag',
'study_planner.wednesday': 'Mittwoch',
'study_planner.thursday': 'Donnerstag',
'study_planner.friday': 'Freitag',
'study_planner.review': 'Wiederholung',
'study_planner.vocabulary': 'Vokabeln',
'study_planner.practice': 'Uebung',
'study_planner.writing': 'Schreiben',
'study_planner.add': 'Hinzufuegen',
'study_planner.history': 'Verlauf',
'study_planner.session_history': 'Sitzungsverlauf',
'study_planner.no_sessions': 'Noch keine Sitzungen',
'study_planner.general_study': 'Allgemeines Lernen',
'study_planner.free_study': 'Freies Lernen',
'study_planner.completed': 'Abgeschlossen',
'study_planner.no_plans': 'Keine Plaene fuer diesen Tag',
'study_planner.sessions': 'Sitzungen',
'study_planner.rate_focus': 'Fokus bewerten',
'study_planner.rate_focus_desc': 'Bewerte deinen Fokus fuer diese {duration} min Sitzung',
'study_planner.focus_excellent': 'Ausgezeichneter Fokus',
'study_planner.focus_good': 'Guter Fokus',
'study_planner.focus_ok': 'Mittelmassiger Fokus',
'study_planner.focus_low': 'Niedriger Fokus',
'study_planner.session_notes': 'Sitzungsnotizen',
'study_planner.session_notes_placeholder': 'Was hast du gelernt?',
'study_planner.save_session': 'Sitzung speichern',
'study_planner.session_saved': 'Sitzung gespeichert!',
'study_planner.suggested_plan': 'Vorgeschlagener Plan',
'study_planner.all_ready': 'Bereit fuer die Pruefung!',
'study_planner.all_ready_desc': 'Alle Vorbereitungsaufgaben erledigt. Viel Erfolg!',
'achievements.all_categories': 'Alle Kategorien',
'achievements.badge_detail': 'Abzeichen-Details',
'achievements.badge_locked': 'Abzeichen gesperrt',
'achievements.badge_detail_desc': 'Details zu diesem Abzeichen',
'achievements.earned_on': 'Verdient am',
'achievements.progress': 'Fortschritt',
'achievements.auto_badge': 'Automatisch',
'achievements.manual_badge': 'Manuell',
'achievements.recently_earned': 'Kuerzlich verdient',
'achievements.show_on_leaderboard': 'Sichtbar in Rangliste',
'achievements.leaderboard_opt_out': 'Du hast die Rangliste verlassen',
'achievements.join_leaderboard': 'Rangliste beitreten',
'achievements.leaderboard_joined': 'Du bist jetzt in der Rangliste sichtbar!',
'achievements.leaderboard_left': 'Du bist jetzt in der Rangliste unsichtbar',
'achievements.streaks': 'Lernserien',
'achievements.current_streak': 'Aktuelle Serie',
'achievements.longest_streak': 'Laengste Serie',
'achievements.total_badges': 'Abzeichen gesamt',
'achievements.to_next_level': 'bis zur naechsten Stufe',
'achievements.time_remaining': 'Verbleibende Zeit',
'achievements.days': 'Tage',
};
const en: TranslationDict = {
@@ -9806,6 +10192,392 @@ const en: TranslationDict = {
'portal.study_progress': 'Study Progress',
'portal.focus_areas': 'Focus Areas',
'portal.motivation_message': 'Keep going! You are on the right track.',
// Exam Calendar
'nav.exam_calendar': 'Exam Calendar',
'exam_calendar.title': 'Exam Calendar',
'exam_calendar.subtitle': 'Plan and manage exams and assessments',
'exam_calendar.create_exam': 'Create Exam',
'exam_calendar.create_exam_desc': 'Plan a new exam or assessment',
'exam_calendar.edit_exam': 'Edit Exam',
'exam_calendar.edit_exam_desc': 'Edit the exam details',
'exam_calendar.exam_title': 'Title',
'exam_calendar.exam_title_placeholder': 'e.g. Test 3 - Fractions',
'exam_calendar.exam_date': 'Date',
'exam_calendar.start_time': 'Start Time',
'exam_calendar.end_time': 'End Time',
'exam_calendar.subject': 'Subject',
'exam_calendar.select_subject': 'Select subject',
'exam_calendar.class': 'Class',
'exam_calendar.select_class': 'Select class',
'exam_calendar.room': 'Room',
'exam_calendar.room_placeholder': 'e.g. Room 204',
'exam_calendar.topics': 'Topics',
'exam_calendar.topics_placeholder': 'Comma separated, e.g. Fractions, Decimals',
'exam_calendar.weight': 'Weight',
'exam_calendar.status': 'Status',
'exam_calendar.status_planned': 'Planned',
'exam_calendar.status_confirmed': 'Confirmed',
'exam_calendar.status_completed': 'Completed',
'exam_calendar.status_cancelled': 'Cancelled',
'exam_calendar.notes': 'Notes',
'exam_calendar.notes_placeholder': 'Additional notes for the exam...',
'exam_calendar.time': 'Time',
'exam_calendar.all_day': 'All day',
'exam_calendar.teacher': 'Teacher',
'exam_calendar.total_exams': 'Total Exams',
'exam_calendar.upcoming_exams': 'Upcoming Exams',
'exam_calendar.confirmed_exams': 'Confirmed Exams',
'exam_calendar.two_week_warning': 'In 2 Weeks',
'exam_calendar.student_upcoming': 'Upcoming Exams',
'exam_calendar.ai_tests_available': 'AI Tests Available',
'exam_calendar.two_week_banner_title': 'Exams in the next 2 weeks',
'exam_calendar.ai_test_available': 'AI Practice Test Available',
'exam_calendar.search_placeholder': 'Search exams...',
'exam_calendar.filter_class': 'Class',
'exam_calendar.filter_subject': 'Subject',
'exam_calendar.filter_status': 'Status',
'exam_calendar.all_classes': 'All Classes',
'exam_calendar.all_subjects': 'All Subjects',
'exam_calendar.all_statuses': 'All Statuses',
'exam_calendar.view_calendar': 'Calendar',
'exam_calendar.view_list': 'List',
'exam_calendar.more': 'more',
'exam_calendar.no_exams': 'No exams found',
'exam_calendar.exams_by_subject': 'Exams by Subject',
'exam_calendar.exams_by_class': 'Exams by Class',
'exam_calendar.error_fetch': 'Error loading exams',
'exam_calendar.error_required_fields': 'Please fill in all required fields',
'exam_calendar.error_create': 'Error creating exam',
'exam_calendar.error_update': 'Error updating exam',
'exam_calendar.error_delete': 'Error deleting exam',
'exam_calendar.exam_created': 'Exam created successfully',
'exam_calendar.exam_updated': 'Exam updated successfully',
'exam_calendar.exam_deleted': 'Exam deleted successfully',
'exam_calendar.creating': 'Creating...',
'exam_calendar.saving': 'Saving...',
'exam_calendar.delete_confirm_title': 'Delete Exam',
'exam_calendar.delete_confirm_desc': 'Are you sure you want to delete the exam "{title}"? This action cannot be undone.',
// Tablet Grading
'nav.tablet_grading': 'Tablet Grading',
'tablet_grading.loading': 'Loading grading view...',
'tablet_grading.select_class': 'Select class',
'tablet_grading.select_assessment': 'Select assessment',
'tablet_grading.search_student': 'Search student...',
'tablet_grading.all': 'All',
'tablet_grading.submitted': 'Submitted',
'tablet_grading.graded': 'Graded',
'tablet_grading.pending': 'Pending',
'tablet_grading.no_students': 'No students found',
'tablet_grading.students': 'students',
'tablet_grading.select_student_hint': 'Select a student to begin grading',
'tablet_grading.quick_grade': 'Quick Grade (German Scale)',
'tablet_grading.score': 'Score',
'tablet_grading.teacher_notes': 'Teacher Notes',
'tablet_grading.notes_placeholder': 'Write notes about this student\'s work...',
'tablet_grading.ai_suggestion': 'AI Suggestion',
'tablet_grading.suggested_grade': 'Suggested grade',
'tablet_grading.current_grade': 'Current grade',
'tablet_grading.accept': 'Accept',
'tablet_grading.reject': 'Reject',
'tablet_grading.suggestion_accepted': 'Suggestion accepted',
'tablet_grading.suggestion_rejected': 'Suggestion dismissed',
'tablet_grading.save_grade': 'Save Grade',
'tablet_grading.saved': 'Annotations saved',
'tablet_grading.save_error': 'Error saving annotations',
'tablet_grading.grade_saved': 'Grade saved',
'tablet_grading.grade_error': 'Error saving grade',
'tablet_grading.ai_audit': 'AI Audit',
'tablet_grading.ai_results': 'AI Results',
'tablet_grading.ai_review_complete': 'AI review complete',
'tablet_grading.ai_review_error': 'Error performing AI review',
'tablet_grading.ai_audit_title': 'AI Grading Audit',
'tablet_grading.analyzing': 'Analyzing...',
'tablet_grading.trigger_audit': 'Trigger AI Audit',
'tablet_grading.latest_review': 'Latest Review',
'tablet_grading.reasoning': 'Reasoning',
'tablet_grading.discrepancies_found': 'Discrepancies Found',
'tablet_grading.discrepancy': 'Discrepancy',
'tablet_grading.consistent': 'Consistent',
'tablet_grading.discrepancies': 'discrepancies',
'tablet_grading.review_history': 'Review History',
'tablet_grading.suggested': 'Suggested',
'tablet_grading.no_reviews': 'No AI reviews yet. Trigger an audit to get started.',
'tablet_grading.student_view': 'Student View — Read Only',
'tablet_grading.admin_view': 'Admin View',
'tablet_grading.enter_text': 'Enter text...',
// Notification Center
'nav.notification_center': 'Notifications',
'nav.notification-center': 'Notifications',
'nav.announcements': 'Announcements',
'nav.exam-calendar': 'Exam Calendar',
'nav.tablet-grading': 'Tablet Grading',
'nav.student-achievements': 'Achievements',
'nav.student-study-planner': 'Study Planner',
'notif_center.title': 'Notification Center',
'notif_center.subtitle': 'All your notifications and updates in one place',
'notif_center.loading': 'Loading...',
'notif_center.mark_all_read': 'Mark all as read',
'notif_center.preferences': 'Preferences',
'notif_center.preferences_title': 'Notification Preferences',
'notif_center.category_toggles': 'Enable/Disable Categories',
'notif_center.quiet_hours': 'Quiet Hours',
'notif_center.email_digest': 'Email Digest',
'notif_center.digest_daily': 'Daily',
'notif_center.digest_weekly': 'Weekly',
'notif_center.category_academic': 'Academic',
'notif_center.category_behavioral': 'Behavioral',
'notif_center.category_administrative': 'Administrative',
'notif_center.category_calendar': 'Calendar',
'notif_center.category_communication': 'Communication',
'notif_center.category_system': 'System',
'notif_center.priority_urgent': 'Urgent',
'notif_center.priority_high': 'High',
'notif_center.priority_normal': 'Normal',
'notif_center.priority_low': 'Low',
'notif_center.just_now': 'Just now',
'notif_center.minutes_ago': '{n} minutes ago',
'notif_center.hours_ago': '{n} hours ago',
'notif_center.days_ago': '{n} days ago',
'notif_center.total': 'Total',
'notif_center.unread': 'Unread',
'notif_center.urgent_high': 'Urgent/High',
'notif_center.archived': 'Archived',
'notif_center.tab_all': 'All',
'notif_center.tab_unread': 'Unread',
'notif_center.tab_archived': 'Archived',
'notif_center.filter_category': 'Category',
'notif_center.filter_priority': 'Priority',
'notif_center.filter_read': 'Status',
'notif_center.all_categories': 'All Categories',
'notif_center.all_priorities': 'All Priorities',
'notif_center.all_status': 'All Status',
'notif_center.unread_only': 'Unread only',
'notif_center.read_only': 'Read only',
'notif_center.no_notifications': 'No notifications found',
'notif_center.mark_read': 'Mark as read',
'notif_center.archive': 'Archive',
'notif_center.selected': 'selected',
'notif_center.go_to': 'Go to',
'notif_center.by_category': 'By Category',
'notif_center.distribution': 'Distribution',
// Announcements
'announcements.title': 'School Announcements',
'announcements.subtitle': 'Official school announcements and information',
'announcements.loading': 'Loading...',
'announcements.create': 'Create Announcement',
'announcements.create_title': 'New Announcement',
'announcements.edit_title': 'Edit Announcement',
'announcements.total': 'Total',
'announcements.pinned': 'Pinned',
'announcements.urgent_high': 'Urgent/High',
'announcements.unread': 'Unread',
'announcements.no_announcements': 'No announcements available',
'announcements.mark_read': 'Mark as read',
'announcements.pin': 'Pin',
'announcements.unpin': 'Unpin',
'announcements.show_more': 'Show more',
'announcements.show_less': 'Show less',
'announcements.have_read': 'have read',
'announcements.expires': 'Expires',
'announcements.just_now': 'Just now',
'announcements.minutes_ago': '{n} minutes ago',
'announcements.hours_ago': '{n} hours ago',
'announcements.days_ago': '{n} days ago',
'announcements.type_general': 'General',
'announcements.type_urgent': 'Urgent',
'announcements.type_event': 'Event',
'announcements.type_holiday': 'Holiday',
'announcements.type_exam': 'Exam',
'announcements.type_deadline': 'Deadline',
'announcements.priority_low': 'Low',
'announcements.priority_normal': 'Normal',
'announcements.priority_high': 'High',
'announcements.priority_urgent': 'Urgent',
'announcements.target_all': 'All',
'announcements.target_teachers': 'Teachers',
'announcements.target_students': 'Students',
'announcements.target_parents': 'Parents',
'announcements.target_class': 'Class',
'announcements.filter_type': 'Type',
'announcements.filter_priority': 'Priority',
'announcements.all_types': 'All Types',
'announcements.all_priorities': 'All Priorities',
'announcements.field_title': 'Title',
'announcements.field_title_placeholder': 'Announcement title',
'announcements.field_content': 'Content',
'announcements.field_content_placeholder': 'Announcement content...',
'announcements.field_type': 'Type',
'announcements.field_priority': 'Priority',
'announcements.field_target': 'Target Audience',
'announcements.field_class': 'Class',
'announcements.field_expiry': 'Expiry Date',
'announcements.pin_to_top': 'Pin to top',
// Student Portal Enhancements (EN)
'student_portal.quick_practice': 'Start Practice',
'student_portal.quick_homework': 'Homework',
'student_portal.quick_achievements': 'Achievements',
'student_portal.quick_study': 'Study Planner',
'student_portal.competency_radar': 'Competency Radar',
'student_portal.grade_trend': 'Grade Trend',
'student_portal.weekly_heatmap': 'Weekly Activity',
'student_portal.less': 'Less',
'student_portal.more': 'More',
'student_portal.daily_challenge': 'Daily Challenge',
'student_portal.challenge_title': 'Complete 5 Exercises',
'student_portal.challenge_description': 'Complete 5 exercises today to earn XP!',
'student_portal.start_challenge': 'Start Challenge',
'student_portal.learning_time': 'Learning Time',
'student_portal.today': 'Today',
'student_portal.this_week': 'This Week',
'student_portal.this_month': 'This Month',
'student_portal.weekly_goal': 'Weekly Goal',
// Achievements (EN)
'achievements.title': 'Achievements',
'achievements.subtitle': 'Collect badges and level up!',
'achievements.badges': 'Badges',
'achievements.leaderboard': 'Leaderboard',
'achievements.challenges': 'Challenges',
'achievements.badges_earned': 'Badges Earned',
'achievements.badges_locked': 'Badges Locked',
'achievements.total_xp': 'Total XP',
'achievements.current_level': 'Current Level',
'achievements.xp_progress': 'XP Progress',
'achievements.next_level': 'Next Level',
'achievements.category_progress': 'Category Progress',
'achievements.earned_badges': 'Earned Badges',
'achievements.locked_badges': 'Locked Badges',
'achievements.class_leaderboard': 'Class Leaderboard',
'achievements.you': 'You',
'achievements.share': 'Share',
'achievements.share_with_parents': 'Share with Parents',
'achievements.share_description': 'Share this achievement with your parents',
'achievements.share_success': 'Achievement shared!',
'achievements.daily_challenge': 'Daily Challenge',
'achievements.daily_challenge_1': 'Complete 3 Exercises',
'achievements.daily_challenge_1_desc': 'Complete 3 exercises in any subject',
'achievements.daily_challenge_2': 'Study 15 Minutes',
'achievements.daily_challenge_2_desc': 'Spend 15 minutes in the study planner',
'achievements.daily_challenge_3': 'Ask a Classmate',
'achievements.daily_challenge_3_desc': 'Help a classmate with a question',
'achievements.weekly_challenge': 'Weekly Challenge',
'achievements.weekly_challenge_title': 'Study 5 Hours',
'achievements.weekly_challenge_desc': 'Spend at least 5 hours studying this week',
'achievements.completed': 'Completed',
'achievements.level': 'Level',
// Study Planner (EN)
'study_planner.title': 'Study Planner',
'study_planner.subtitle': 'Plan your study time effectively!',
'study_planner.weekly_minutes': 'Minutes This Week',
'study_planner.sessions_this_week': 'Sessions This Week',
'study_planner.active_plans': 'Active Plans',
'study_planner.streak': 'Streak',
'study_planner.days': 'days',
'study_planner.subject_allocation': 'Subject Allocation',
'study_planner.weekly_schedule': 'Weekly Schedule',
'study_planner.timer': 'Timer',
'study_planner.ai_plan': 'AI Plan',
'study_planner.pomodoro_timer': 'Pomodoro Timer',
'study_planner.pomodoros': 'Pomodoros',
'study_planner.focus': 'Focus',
'study_planner.break': 'Break',
'study_planner.start': 'Start',
'study_planner.pause': 'Pause',
'study_planner.subject': 'Subject',
'study_planner.select_subject': 'Select subject',
'study_planner.pomodoro_complete': 'Pomodoro completed! ({count} total)',
'study_planner.break_over': 'Break over! Let\'s continue!',
'study_planner.exam_checklist': 'Exam Preparation',
'study_planner.checklist_review_notes': 'Review notes',
'study_planner.checklist_practice_problems': 'Practice problems',
'study_planner.checklist_create_summary': 'Create summary',
'study_planner.checklist_teach_someone': 'Teach someone',
'study_planner.checklist_take_breaks': 'Take breaks',
'study_planner.ai_recommendation': 'AI Study Recommendation',
'study_planner.ai_recommendation_desc': 'Based on your subjects and weak areas',
'study_planner.weak_areas': 'Weak Areas',
'study_planner.add_plan': 'Add Plan',
'study_planner.edit_plan': 'Edit Plan',
'study_planner.edit_plan_desc': 'Modify your study plan',
'study_planner.add_plan_desc': 'Create a new study plan',
'study_planner.plan_title': 'Title',
'study_planner.plan_title_placeholder': 'e.g. Math Practice',
'study_planner.plan_description': 'Description',
'study_planner.plan_description_placeholder': 'e.g. Algebra exercises',
'study_planner.day': 'Day',
'study_planner.start_time': 'Start Time',
'study_planner.duration': 'Duration',
'study_planner.priority': 'Priority',
'study_planner.low': 'Low',
'study_planner.medium': 'Medium',
'study_planner.high': 'High',
'study_planner.plan_created': 'Plan created!',
'study_planner.plan_updated': 'Plan updated!',
'study_planner.plan_deleted': 'Plan deleted!',
'study_planner.title_required': 'Title is required',
'study_planner.quick_access': 'Quick Access',
'study_planner.notebooks': 'Notebooks',
'study_planner.subjects': 'Subjects',
'study_planner.homework': 'Homework',
'study_planner.resources': 'Resources',
'study_planner.monday': 'Monday',
'study_planner.tuesday': 'Tuesday',
'study_planner.wednesday': 'Wednesday',
'study_planner.thursday': 'Thursday',
'study_planner.friday': 'Friday',
'study_planner.review': 'Review',
'study_planner.vocabulary': 'Vocabulary',
'study_planner.practice': 'Practice',
'study_planner.writing': 'Writing',
'study_planner.add': 'Add',
'study_planner.history': 'History',
'study_planner.session_history': 'Session History',
'study_planner.no_sessions': 'No sessions yet',
'study_planner.general_study': 'General Study',
'study_planner.free_study': 'Free Study',
'study_planner.completed': 'Completed',
'study_planner.no_plans': 'No plans for this day',
'study_planner.sessions': 'sessions',
'study_planner.rate_focus': 'Rate Focus',
'study_planner.rate_focus_desc': 'Rate your focus for this {duration} min session',
'study_planner.focus_excellent': 'Excellent Focus',
'study_planner.focus_good': 'Good Focus',
'study_planner.focus_ok': 'OK Focus',
'study_planner.focus_low': 'Low Focus',
'study_planner.session_notes': 'Session Notes',
'study_planner.session_notes_placeholder': 'What did you learn?',
'study_planner.save_session': 'Save Session',
'study_planner.session_saved': 'Session saved!',
'study_planner.suggested_plan': 'Suggested Plan',
'study_planner.all_ready': 'Ready for the exam!',
'study_planner.all_ready_desc': 'All preparation tasks completed. Good luck!',
'achievements.all_categories': 'All Categories',
'achievements.badge_detail': 'Badge Details',
'achievements.badge_locked': 'Badge Locked',
'achievements.badge_detail_desc': 'Details about this badge',
'achievements.earned_on': 'Earned on',
'achievements.progress': 'Progress',
'achievements.auto_badge': 'Automatic',
'achievements.manual_badge': 'Manual',
'achievements.recently_earned': 'Recently Earned',
'achievements.show_on_leaderboard': 'Visible on Leaderboard',
'achievements.leaderboard_opt_out': 'You have left the leaderboard',
'achievements.join_leaderboard': 'Join Leaderboard',
'achievements.leaderboard_joined': 'You are now visible on the leaderboard!',
'achievements.leaderboard_left': 'You are now hidden from the leaderboard',
'achievements.streaks': 'Streaks',
'achievements.current_streak': 'Current Streak',
'achievements.longest_streak': 'Longest Streak',
'achievements.total_badges': 'Total Badges',
'achievements.to_next_level': 'to next level',
'achievements.time_remaining': 'Time remaining',
'achievements.days': 'days',
};
const translations: Record<string, TranslationDict> = { de, en };