Round 26: Grade Analytics, School Transport, Peer Assessment, Styling
- Grade Analytics & Reporting View: distribution histogram, student trajectory, class comparison, subject analysis, report generation - School Transport & Bus Routes View: route management, student assignment, transport schedule, stop management - Peer Assessment View: creation wizard, rating sliders, results radar chart, self vs peer comparison - 3 new Prisma models: GradeReport, TransportRoute, TransportStop - Extended PeerAssessment and StudentTransport models - Enhanced classes-view with gradient header, glassmorphism cards - Enhanced attendance-view with attendance rate gauge, status indicators - Fixed duplicate variable name bugs in school-transport-view.tsx - 12+ new API route files - 300+ i18n keys added - All views verified working in browser
This commit is contained in:
1 parent
3d0d518bb9
commit
7f0810c88f
28 files changed
+10264
-127
No files matched your search
+660
@@ -6320,6 +6320,336 @@ const de: TranslationDict = {
|
||||
'newsletter.engagement_distribution': 'Engagement-Verteilung',
|
||||
'newsletter.recent_performance': 'Aktuelle Performance',
|
||||
'newsletter.subscriber_growth': 'Abonnenten-Wachstum',
|
||||
|
||||
// ─── Peer Assessment ──────────────────────────────────────────────
|
||||
'nav.peer-assessment': 'Peer-Beurteilung',
|
||||
'pa.title': 'Peer-Beurteilung',
|
||||
'pa.subtitle': 'Schüler bewerten Schüler — strukturiert und fair',
|
||||
'pa.tab_dashboard': 'Dashboard',
|
||||
'pa.tab_sessions': 'Sitzungen',
|
||||
'pa.tab_create': 'Erstellen',
|
||||
'pa.tab_conduct': 'Durchführen',
|
||||
'pa.tab_results': 'Ergebnisse',
|
||||
'pa.new_session': 'Neue Sitzung',
|
||||
'pa.stat_total_sessions': 'Sitzungen gesamt',
|
||||
'pa.stat_active': 'Aktiv',
|
||||
'pa.stat_completed': 'Abgeschlossen',
|
||||
'pa.stat_completion_rate': 'Abschlussrate',
|
||||
'pa.sessions_overview': 'Sitzungsübersicht',
|
||||
'pa.no_sessions': 'Noch keine Peer-Beurteilungen erstellt.',
|
||||
'pa.create_first': 'Erste erstellen',
|
||||
'pa.recent_activity': 'Letzte Aktivität',
|
||||
'pa.no_activity': 'Keine Aktivitäten vorhanden.',
|
||||
'pa.avg_ratings_by_type': 'Durchschnittsbewertungen nach Typ',
|
||||
'pa.submitted': 'eingereicht',
|
||||
'pa.search_sessions': 'Sitzungen suchen...',
|
||||
'pa.all_statuses': 'Alle Status',
|
||||
'pa.all_types': 'Alle Typen',
|
||||
'pa.no_sessions_found': 'Keine Sitzungen gefunden.',
|
||||
'pa.close_session': 'Sitzung schließen',
|
||||
'pa.delete_session': 'Sitzung löschen',
|
||||
'pa.progress': 'Fortschritt',
|
||||
'pa.view_details': 'Details',
|
||||
'pa.view_results': 'Ergebnisse',
|
||||
'pa.create_session': 'Sitzung erstellen',
|
||||
'pa.create_session_desc': 'Erstellen Sie eine neue Peer-Beurteilungssitzung mit Kriterien und Einstellungen.',
|
||||
'pa.session_title': 'Titel',
|
||||
'pa.session_title_placeholder': 'z.B. Projektdarstellung Klasse 8a',
|
||||
'pa.assessment_type': 'Beurteilungstyp',
|
||||
'pa.type_competency': 'Kompetenz',
|
||||
'pa.type_project': 'Projekt',
|
||||
'pa.type_presentation': 'Präsentation',
|
||||
'pa.type_teamwork': 'Teamarbeit',
|
||||
'pa.description': 'Beschreibung',
|
||||
'pa.description_placeholder': 'Beschreibung der Peer-Beurteilung...',
|
||||
'pa.settings': 'Einstellungen',
|
||||
'pa.anonymity_mode': 'Anonymitätsmodus',
|
||||
'pa.anonymous': 'Anonym',
|
||||
'pa.semi_anonymous': 'Teil-anonym',
|
||||
'pa.open': 'Offen',
|
||||
'pa.anonymous_desc': 'Bewerter und Bewerteter bleiben anonym.',
|
||||
'pa.semi_anonymous_desc': 'Bewerter bleibt anonym, Bewerteter ist sichtbar.',
|
||||
'pa.open_desc': 'Alle Namen sind sichtbar.',
|
||||
'pa.assign_mode': 'Zuweisungsmodus',
|
||||
'pa.assign_manual': 'Manuell',
|
||||
'pa.assign_random': 'Zufällig',
|
||||
'pa.assign_group': 'Gruppenbasiert',
|
||||
'pa.deadline': 'Abgabefrist',
|
||||
'pa.criteria_builder': 'Kriterien-Builder',
|
||||
'pa.add_criterion': 'Kriterium hinzufügen',
|
||||
'pa.criterion_name': 'Name',
|
||||
'pa.criterion_name_placeholder': 'z.B. Fachwissen',
|
||||
'pa.criterion_desc': 'Beschreibung',
|
||||
'pa.criterion_desc_placeholder': 'Beschreibung des Kriteriums...',
|
||||
'pa.max_score': 'Max. Punkte',
|
||||
'pa.select_session': 'Wählen Sie eine Sitzung, um eine Bewertung durchzuführen.',
|
||||
'pa.go_to_sessions': 'Zu den Sitzungen',
|
||||
'pa.criteria': 'Kriterien',
|
||||
'pa.points': 'Punkte',
|
||||
'pa.assessment_list': 'Bewertungsliste',
|
||||
'pa.no_assessments': 'Keine Bewertungen in dieser Sitzung.',
|
||||
'pa.assessed_by': 'Bewertet von',
|
||||
'pa.anonymous_mode': 'Anonymer Modus',
|
||||
'pa.anonymous_assessor': 'Anonymer Bewerter',
|
||||
'pa.rate': 'Bewerten',
|
||||
'pa.rate_peer': 'Peer bewerten',
|
||||
'pa.rating_for': 'Bewertung für',
|
||||
'pa.anonymous_mode_active': 'Anonymer Modus aktiv — Ihre Bewertung ist anonym.',
|
||||
'pa.criteria_ratings': 'Kriterienbewertungen',
|
||||
'pa.overall_rating': 'Gesamtbewertung',
|
||||
'pa.feedback_comment': 'Feedback-Kommentar',
|
||||
'pa.comment_placeholder': 'Schreiben Sie hier Ihr Feedback...',
|
||||
'pa.submit_assessment': 'Bewertung einreichen',
|
||||
'pa.select_session_results': 'Sitzung für Ergebnisse auswählen',
|
||||
'pa.no_sessions_for_results': 'Keine Sitzungen für Ergebnisse verfügbar.',
|
||||
'pa.total_assessments': 'Bewertungen gesamt',
|
||||
'pa.overall_average': 'Gesamtdurchschnitt',
|
||||
'pa.std_deviation': 'Standardabweichung',
|
||||
'pa.unique_assessors': 'Eindeutige Bewerter',
|
||||
'pa.unique_assessed': 'Eindeutig Bewertete',
|
||||
'pa.competency_radar': 'Kompetenz-Radar',
|
||||
'pa.average_score': 'Durchschnitt',
|
||||
'pa.student_results': 'Schülerergebnisse',
|
||||
'pa.no_results': 'Keine Ergebnisse verfügbar.',
|
||||
'pa.assessments_received': 'Bewertungen erhalten',
|
||||
'pa.more_comments': 'weitere Kommentare',
|
||||
'pa.self_vs_peer': 'Selbst- vs. Peer-Bewertung',
|
||||
'pa.peer_avg': 'Peer-Durchschnitt',
|
||||
'pa.self_avg': 'Selbst-Bewertung',
|
||||
'pa.outliers_detected': 'Ausreißer erkannt',
|
||||
'pa.rated_by': 'Bewertet von',
|
||||
'pa.ratings': 'Bewertungen',
|
||||
'pa.results_title': 'Ergebnisse',
|
||||
'pa.status_active': 'Aktiv',
|
||||
'pa.status_completed': 'Abgeschlossen',
|
||||
'pa.status_closed': 'Geschlossen',
|
||||
'pa.status_pending': 'Ausstehend',
|
||||
'pa.status_submitted': 'Eingereicht',
|
||||
|
||||
// Navigation
|
||||
'nav.school-transport': 'Schulverkehr',
|
||||
|
||||
// Transport
|
||||
'transport.title': 'Schulverkehr & Busrouten',
|
||||
'transport.subtitle': 'Schülertransport, Routen und Logistik verwalten',
|
||||
'transport.total_students': 'Schüler gesamt',
|
||||
'transport.active_routes': 'Aktive Routen',
|
||||
'transport.total_capacity': 'Gesamtkapazität',
|
||||
'transport.avg_distance': 'Ø Entfernung',
|
||||
'transport.over_capacity_warning': 'Route(n) über Kapazität',
|
||||
'transport.over_capacity_desc': 'Eine oder mehrere Routen haben mehr Schüler zugewiesen als Plätze verfügbar sind.',
|
||||
'transport.type_distribution': 'Transportart-Verteilung',
|
||||
'transport.type_distribution_desc': 'Verteilung der Schüler nach Transportart',
|
||||
'transport.route_capacity': 'Routenkapazität',
|
||||
'transport.route_capacity_desc': 'Belegung vs. Kapazität der aktiven Routen',
|
||||
'transport.assigned': 'Zugewiesen',
|
||||
'transport.capacity': 'Kapazität',
|
||||
'transport.type_summary': 'Transportart-Übersicht',
|
||||
'transport.quick_actions': 'Schnellaktionen',
|
||||
'transport.add_route': 'Route hinzufügen',
|
||||
'transport.assign_transport': 'Transport zuweisen',
|
||||
'transport.bulk_assign': 'Massenzuweisung',
|
||||
'transport.search_routes': 'Routen suchen...',
|
||||
'transport.filter_type': 'Transportart',
|
||||
'transport.filter_status': 'Status',
|
||||
'transport.all_types': 'Alle Arten',
|
||||
'transport.all_status': 'Alle Status',
|
||||
'transport.active': 'Aktiv',
|
||||
'transport.inactive': 'Inaktiv',
|
||||
'transport.no_routes': 'Keine Routen gefunden',
|
||||
'transport.create_first_route': 'Erste Route erstellen',
|
||||
'transport.stops_count': '{count} Haltestellen',
|
||||
'transport.add_stop': 'Haltestelle',
|
||||
'transport.no_data': 'Noch keine Daten vorhanden',
|
||||
'transport.no_routes_data': 'Keine Routen mit Daten vorhanden',
|
||||
'transport.search_students': 'Schüler suchen...',
|
||||
'transport.no_assignments': 'Keine Transportzuweisungen vorhanden',
|
||||
'transport.student': 'Schüler',
|
||||
'transport.type': 'Art',
|
||||
'transport.route': 'Route',
|
||||
'transport.stop': 'Haltestelle',
|
||||
'transport.pickup': 'Abholung',
|
||||
'transport.dropoff': 'Absetzung',
|
||||
'transport.distance': 'Entfernung',
|
||||
'transport.actions': 'Aktionen',
|
||||
'transport.no_schedule': 'Kein Fahrplan verfügbar',
|
||||
'transport.no_schedule_desc': 'Erstellen Sie Routen mit Haltestellen, um den Fahrplan zu sehen.',
|
||||
'transport.my_transport': 'Mein Transport',
|
||||
'transport.my_route': 'Meine Route',
|
||||
'transport.no_personal_transport': 'Keine Transportinformationen verfügbar',
|
||||
'transport.tab_overview': 'Übersicht',
|
||||
'transport.tab_routes': 'Routen',
|
||||
'transport.tab_assignments': 'Zuweisungen',
|
||||
'transport.tab_schedule': 'Fahrplan',
|
||||
'transport.edit_route': 'Route bearbeiten',
|
||||
'transport.create_route': 'Route erstellen',
|
||||
'transport.edit_route_desc': 'Bearbeiten Sie die Routendetails',
|
||||
'transport.create_route_desc': 'Erstellen Sie eine neue Transportroute',
|
||||
'transport.route_number': 'Routennummer',
|
||||
'transport.route_name': 'Routenname',
|
||||
'transport.route_name_placeholder': 'z.B. Nordroute',
|
||||
'transport.transport_type': 'Transportart',
|
||||
'transport.driver_name': 'Fahrer',
|
||||
'transport.driver_name_placeholder': 'Name des Fahrers',
|
||||
'transport.driver_phone': 'Telefon Fahrer',
|
||||
'transport.notes': 'Notizen',
|
||||
'transport.notes_placeholder': 'Zusätzliche Hinweise...',
|
||||
'transport.edit_assignment': 'Zuweisung bearbeiten',
|
||||
'transport.edit_assignment_desc': 'Bearbeiten Sie die Transportzuweisung',
|
||||
'transport.assign_transport_desc': 'Weisen Sie einem Schüler eine Transportart zu',
|
||||
'transport.student_id': 'Schüler-ID',
|
||||
'transport.student_id_placeholder': 'Schüler-ID eingeben',
|
||||
'transport.assign_route': 'Route zuweisen',
|
||||
'transport.no_route': 'Keine Route',
|
||||
'transport.stop_name': 'Haltestelle',
|
||||
'transport.stop_name_placeholder': 'z.B. Hauptbahnhof',
|
||||
'transport.pickup_time': 'Abholzeit',
|
||||
'transport.dropoff_time': 'Absetzzeit',
|
||||
'transport.distance_km': 'Entfernung (km)',
|
||||
'transport.add_stop_to': 'Haltestelle zu Route {route} hinzufügen',
|
||||
'transport.add_stop_desc': 'Fügen Sie eine neue Haltestelle zur Route hinzu',
|
||||
'transport.stop_order': 'Reihenfolge',
|
||||
'transport.stop_order_auto': 'Automatisch',
|
||||
'transport.address': 'Adresse',
|
||||
'transport.address_placeholder': 'Straße, PLZ Ort',
|
||||
'transport.route_detail_desc': 'Detaillierte Informationen zur Route',
|
||||
'transport.driver_info': 'Fahrerinformationen',
|
||||
'transport.utilization': 'Auslastung',
|
||||
'transport.stops_timeline': 'Haltestellen-Fahrplan',
|
||||
'transport.assigned_students': 'Zugewiesene Schüler',
|
||||
'transport.confirm_delete': 'Löschen bestätigen',
|
||||
'transport.confirm_delete_desc': 'Möchten Sie dieses Element wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
|
||||
'transport.bulk_assign_desc': 'Weisen Sie mehreren Schülern gleichzeitig eine Transportart zu',
|
||||
'transport.student_ids': 'Schüler-IDs',
|
||||
'transport.student_ids_placeholder': 'Eine ID pro Zeile',
|
||||
'transport.student_ids_help': 'Geben Sie eine Schüler-ID pro Zeile ein',
|
||||
'transport.assign': 'Zuweisen',
|
||||
'transport.type_bus': 'Bus',
|
||||
'transport.type_tram': 'Straßenbahn',
|
||||
'transport.type_train': 'Zug',
|
||||
'transport.type_walk': 'Zu Fuß',
|
||||
'transport.type_car': 'Auto',
|
||||
'transport.type_bike': 'Fahrrad',
|
||||
'transport.type_other': 'Sonstige',
|
||||
'transport.status': 'Status',
|
||||
|
||||
// ─── Grade Analytics ──────────────────────────────────────────────
|
||||
'nav.grade-analytics': 'Notenanalyse',
|
||||
'grade_analytics.title': 'Notenanalyse & Berichte',
|
||||
'grade_analytics.subtitle': 'Umfassende Analyse der Notenverteilung, Schülerleistung und Klassenvergleiche auf der deutschen Notenskala (1-6).',
|
||||
'grade_analytics.loading': 'Notenanalyse wird geladen...',
|
||||
'grade_analytics.total_grades': 'Gesamtnoten',
|
||||
'grade_analytics.average_grade': 'Durchschnittsnote',
|
||||
'grade_analytics.finalized': 'Finalisiert',
|
||||
'grade_analytics.risk_students': 'Risikoschüler',
|
||||
'grade_analytics.filters': 'Filter',
|
||||
'grade_analytics.all_classes': 'Alle Klassen',
|
||||
'grade_analytics.all_subjects': 'Alle Fächer',
|
||||
'grade_analytics.distribution': 'Verteilung',
|
||||
'grade_analytics.performance': 'Leistung',
|
||||
'grade_analytics.class_comparison': 'Klassenvergleich',
|
||||
'grade_analytics.subject_analysis': 'Fachanalyse',
|
||||
'grade_analytics.trends': 'Trends',
|
||||
'grade_analytics.reports': 'Berichte',
|
||||
'grade_analytics.grade_distribution': 'Notenverteilung',
|
||||
'grade_analytics.distribution_desc': 'Verteilung der Noten auf der deutschen Skala',
|
||||
'grade_analytics.scale': 'Skala',
|
||||
'grade_analytics.count': 'Anzahl',
|
||||
'grade_analytics.bell_curve': 'Glockenkurve',
|
||||
'grade_analytics.mean': 'Mittelwert',
|
||||
'grade_analytics.std_dev': 'Standardabweichung',
|
||||
'grade_analytics.grade': 'Note',
|
||||
'grade_analytics.view_overall': 'Gesamt',
|
||||
'grade_analytics.view_subject': 'Nach Fach',
|
||||
'grade_analytics.view_class': 'Nach Klasse',
|
||||
'grade_analytics.distribution_by_subject': 'Notenverteilung nach Fach',
|
||||
'grade_analytics.distribution_by_subject_desc': 'Vergleich der Notenverteilung zwischen verschiedenen Fächern',
|
||||
'grade_analytics.distribution_by_class': 'Notenverteilung nach Klasse',
|
||||
'grade_analytics.distribution_by_class_desc': 'Vergleich der Notenverteilung zwischen verschiedenen Klassen',
|
||||
'grade_analytics.top_performers': 'Beste Schüler',
|
||||
'grade_analytics.top_performers_desc': 'Schüler mit dem niedrigsten Notendurchschnitt (beste Leistung)',
|
||||
'grade_analytics.bottom_performers': 'Schwächste Schüler',
|
||||
'grade_analytics.bottom_performers_desc': 'Schüler mit dem höchsten Notendurchschnitt (schwachste Leistung)',
|
||||
'grade_analytics.grades': 'Noten',
|
||||
'grade_analytics.no_data': 'Keine Daten verfügbar',
|
||||
'grade_analytics.risk_students_title': 'Risikoschüler',
|
||||
'grade_analytics.risk_students_desc': 'Schüler mit einem Durchschnitt von 4,5 oder schlechter (tendieren zum Durchfallen)',
|
||||
'grade_analytics.at_risk': 'Gefährdet',
|
||||
'grade_analytics.no_risk_students': 'Keine Risikoschüler erkannt',
|
||||
'grade_analytics.improvement_detection': 'Verbesserungs-/Verschlechterungserkennung',
|
||||
'grade_analytics.improvement_detection_desc': 'Schüler mit signifikanten Notenveränderungen über die Zeit',
|
||||
'grade_analytics.first_grade': 'Erste Note',
|
||||
'grade_analytics.last_grade': 'Letzte Note',
|
||||
'grade_analytics.improving': 'Verbesserung',
|
||||
'grade_analytics.regressing': 'Verschlechterung',
|
||||
'grade_analytics.percentile_ranking': 'Perzentil-Rangfolge',
|
||||
'grade_analytics.percentile_ranking_desc': 'Rangfolge der Schüler nach Perzentil basierend auf dem Notendurchschnitt',
|
||||
'grade_analytics.percentile': 'Perzentil',
|
||||
'grade_analytics.class_average_comparison': 'Klassen-Durchschnittsvergleich',
|
||||
'grade_analytics.class_average_comparison_desc': 'Vergleich der durchschnittlichen Noten zwischen den Klassen',
|
||||
'grade_analytics.average': 'Durchschnitt',
|
||||
'grade_analytics.median': 'Median',
|
||||
'grade_analytics.class_ranking': 'Klassenrangliste',
|
||||
'grade_analytics.class_ranking_desc': 'Rangfolge der Klassen nach Notendurchschnitt (niedriger = besser)',
|
||||
'grade_analytics.anonymized': 'Anonymisiert',
|
||||
'grade_analytics.grade_level': 'Klassenstufe',
|
||||
'grade_analytics.excellent': 'Ausgezeichnet',
|
||||
'grade_analytics.good': 'Gut',
|
||||
'grade_analytics.satisfactory': 'Befriedigend',
|
||||
'grade_analytics.needs_improvement': 'Verbesserungsbedarf',
|
||||
'grade_analytics.subject_comparison_across_classes': 'Fachvergleich über Klassen',
|
||||
'grade_analytics.subject_comparison_across_classes_desc': 'Vergleich der Fachnoten zwischen verschiedenen Klassen',
|
||||
'grade_analytics.teacher_comparison': 'Lehrervergleich',
|
||||
'grade_analytics.teacher_comparison_desc': 'Vergleich der Schülerleistung nach Lehrer (nur für Administratoren)',
|
||||
'grade_analytics.subject_difficulty_ranking': 'Fachschwierigkeitsrangliste',
|
||||
'grade_analytics.subject_difficulty_ranking_desc': 'Rangfolge der Fächer nach durchschnittlicher Note (höher = schwieriger)',
|
||||
'grade_analytics.average_grade_short': 'Durchschnittsnote',
|
||||
'grade_analytics.variance': 'Varianz',
|
||||
'grade_analytics.subject_performance_radar': 'Fachleistungsradar',
|
||||
'grade_analytics.subject_performance_radar_desc': 'Radardiagramm der Fachleistung (höher = bessere Leistung)',
|
||||
'grade_analytics.performance': 'Leistung',
|
||||
'grade_analytics.cross_subject_correlation': 'Fachübergreifende Korrelation',
|
||||
'grade_analytics.cross_subject_correlation_desc': 'Korrelationsanalyse zwischen verschiedenen Fächern',
|
||||
'grade_analytics.subject_recommendations': 'Fachempfehlungen',
|
||||
'grade_analytics.subject_recommendations_desc': 'Automatische Empfehlungen basierend auf der Fachanalyse',
|
||||
'grade_analytics.grade_trends_over_time': 'Notentrends über die Zeit',
|
||||
'grade_analytics.grade_trends_over_time_desc': 'Entwicklung der durchschnittlichen Noten über die Zeit',
|
||||
'grade_analytics.assessment_count': 'Anzahl Bewertungen',
|
||||
'grade_analytics.no_trend_data': 'Keine Trenddaten verfügbar',
|
||||
'grade_analytics.student_trajectories': 'Schülerverläufe',
|
||||
'grade_analytics.student_trajectories_desc': 'Notenverlauf einzelner Schüler über die Zeit',
|
||||
'grade_analytics.report_templates': 'Berichtsvorlagen',
|
||||
'grade_analytics.report_templates_desc': 'Wählen Sie eine Vorlage zur schnellen Berichtserstellung',
|
||||
'grade_analytics.quarterly': 'Quartalsbericht',
|
||||
'grade_analytics.quarterly_desc': 'Notenanalyse für ein Quartal',
|
||||
'grade_analytics.semester': 'Semesterbericht',
|
||||
'grade_analytics.semester_desc': 'Umfassende Semesteranalyse',
|
||||
'grade_analytics.annual': 'Jahresbericht',
|
||||
'grade_analytics.annual_desc': 'Vollständiger Jahresbericht',
|
||||
'grade_analytics.custom': 'Benutzerdefiniert',
|
||||
'grade_analytics.custom_desc': 'Erstellen Sie einen individuellen Bericht',
|
||||
'grade_analytics.generated_reports': 'Erstellte Berichte',
|
||||
'grade_analytics.generated_reports_desc': 'Liste aller erstellten Berichte',
|
||||
'grade_analytics.no_reports': 'Noch keine Berichte erstellt',
|
||||
'grade_analytics.generate_report': 'Bericht erstellen',
|
||||
'grade_analytics.report_builder': 'Berichtsgenerator',
|
||||
'grade_analytics.report_title': 'Berichtstitel',
|
||||
'grade_analytics.report_title_placeholder': 'Berichtstitel eingeben...',
|
||||
'grade_analytics.report_type': 'Berichtstyp',
|
||||
'grade_analytics.date_from': 'Von Datum',
|
||||
'grade_analytics.date_to': 'Bis Datum',
|
||||
'grade_analytics.report_metrics': 'Berichtsmetriken',
|
||||
'grade_analytics.metric_distribution': 'Notenverteilung',
|
||||
'grade_analytics.metric_averages': 'Durchschnitte',
|
||||
'grade_analytics.metric_class_comparison': 'Klassenvergleich',
|
||||
'grade_analytics.metric_subject_analysis': 'Fachanalyse',
|
||||
'grade_analytics.metric_student_grades': 'Schülernoten',
|
||||
'grade_analytics.metric_trends': 'Trends',
|
||||
'grade_analytics.generating': 'Wird erstellt...',
|
||||
'grade_analytics.generate': 'Erstellen',
|
||||
'grade_analytics.completed': 'Abgeschlossen',
|
||||
'grade_analytics.pending': 'Ausstehend',
|
||||
'grade_analytics.failed': 'Fehlgeschlagen',
|
||||
};
|
||||
|
||||
const en: TranslationDict = {
|
||||
@@ -12638,6 +12968,336 @@ const en: TranslationDict = {
|
||||
'newsletter.engagement_distribution': 'Engagement Distribution',
|
||||
'newsletter.recent_performance': 'Recent Performance',
|
||||
'newsletter.subscriber_growth': 'Subscriber Growth',
|
||||
|
||||
// ─── Peer Assessment ──────────────────────────────────────────────
|
||||
'nav.peer-assessment': 'Peer Assessment',
|
||||
'pa.title': 'Peer Assessment',
|
||||
'pa.subtitle': 'Students assess students — structured and fair',
|
||||
'pa.tab_dashboard': 'Dashboard',
|
||||
'pa.tab_sessions': 'Sessions',
|
||||
'pa.tab_create': 'Create',
|
||||
'pa.tab_conduct': 'Conduct',
|
||||
'pa.tab_results': 'Results',
|
||||
'pa.new_session': 'New Session',
|
||||
'pa.stat_total_sessions': 'Total Sessions',
|
||||
'pa.stat_active': 'Active',
|
||||
'pa.stat_completed': 'Completed',
|
||||
'pa.stat_completion_rate': 'Completion Rate',
|
||||
'pa.sessions_overview': 'Sessions Overview',
|
||||
'pa.no_sessions': 'No peer assessments created yet.',
|
||||
'pa.create_first': 'Create First',
|
||||
'pa.recent_activity': 'Recent Activity',
|
||||
'pa.no_activity': 'No activities available.',
|
||||
'pa.avg_ratings_by_type': 'Average Ratings by Type',
|
||||
'pa.submitted': 'submitted',
|
||||
'pa.search_sessions': 'Search sessions...',
|
||||
'pa.all_statuses': 'All Statuses',
|
||||
'pa.all_types': 'All Types',
|
||||
'pa.no_sessions_found': 'No sessions found.',
|
||||
'pa.close_session': 'Close Session',
|
||||
'pa.delete_session': 'Delete Session',
|
||||
'pa.progress': 'Progress',
|
||||
'pa.view_details': 'Details',
|
||||
'pa.view_results': 'Results',
|
||||
'pa.create_session': 'Create Session',
|
||||
'pa.create_session_desc': 'Create a new peer assessment session with criteria and settings.',
|
||||
'pa.session_title': 'Title',
|
||||
'pa.session_title_placeholder': 'e.g. Project Presentation Class 8a',
|
||||
'pa.assessment_type': 'Assessment Type',
|
||||
'pa.type_competency': 'Competency',
|
||||
'pa.type_project': 'Project',
|
||||
'pa.type_presentation': 'Presentation',
|
||||
'pa.type_teamwork': 'Teamwork',
|
||||
'pa.description': 'Description',
|
||||
'pa.description_placeholder': 'Description of the peer assessment...',
|
||||
'pa.settings': 'Settings',
|
||||
'pa.anonymity_mode': 'Anonymity Mode',
|
||||
'pa.anonymous': 'Anonymous',
|
||||
'pa.semi_anonymous': 'Semi-anonymous',
|
||||
'pa.open': 'Open',
|
||||
'pa.anonymous_desc': 'Assessor and assessed remain anonymous.',
|
||||
'pa.semi_anonymous_desc': 'Assessor is anonymous, assessed is visible.',
|
||||
'pa.open_desc': 'All names are visible.',
|
||||
'pa.assign_mode': 'Assignment Mode',
|
||||
'pa.assign_manual': 'Manual',
|
||||
'pa.assign_random': 'Random',
|
||||
'pa.assign_group': 'Group-based',
|
||||
'pa.deadline': 'Deadline',
|
||||
'pa.criteria_builder': 'Criteria Builder',
|
||||
'pa.add_criterion': 'Add Criterion',
|
||||
'pa.criterion_name': 'Name',
|
||||
'pa.criterion_name_placeholder': 'e.g. Subject Knowledge',
|
||||
'pa.criterion_desc': 'Description',
|
||||
'pa.criterion_desc_placeholder': 'Description of the criterion...',
|
||||
'pa.max_score': 'Max Score',
|
||||
'pa.select_session': 'Select a session to conduct an assessment.',
|
||||
'pa.go_to_sessions': 'Go to Sessions',
|
||||
'pa.criteria': 'Criteria',
|
||||
'pa.points': 'Points',
|
||||
'pa.assessment_list': 'Assessment List',
|
||||
'pa.no_assessments': 'No assessments in this session.',
|
||||
'pa.assessed_by': 'Assessed by',
|
||||
'pa.anonymous_mode': 'Anonymous Mode',
|
||||
'pa.anonymous_assessor': 'Anonymous Assessor',
|
||||
'pa.rate': 'Rate',
|
||||
'pa.rate_peer': 'Rate Peer',
|
||||
'pa.rating_for': 'Rating for',
|
||||
'pa.anonymous_mode_active': 'Anonymous mode active — your assessment is anonymous.',
|
||||
'pa.criteria_ratings': 'Criteria Ratings',
|
||||
'pa.overall_rating': 'Overall Rating',
|
||||
'pa.feedback_comment': 'Feedback Comment',
|
||||
'pa.comment_placeholder': 'Write your feedback here...',
|
||||
'pa.submit_assessment': 'Submit Assessment',
|
||||
'pa.select_session_results': 'Select session for results',
|
||||
'pa.no_sessions_for_results': 'No sessions available for results.',
|
||||
'pa.total_assessments': 'Total Assessments',
|
||||
'pa.overall_average': 'Overall Average',
|
||||
'pa.std_deviation': 'Standard Deviation',
|
||||
'pa.unique_assessors': 'Unique Assessors',
|
||||
'pa.unique_assessed': 'Unique Assessed',
|
||||
'pa.competency_radar': 'Competency Radar',
|
||||
'pa.average_score': 'Average',
|
||||
'pa.student_results': 'Student Results',
|
||||
'pa.no_results': 'No results available.',
|
||||
'pa.assessments_received': 'assessments received',
|
||||
'pa.more_comments': 'more comments',
|
||||
'pa.self_vs_peer': 'Self vs Peer Assessment',
|
||||
'pa.peer_avg': 'Peer Average',
|
||||
'pa.self_avg': 'Self Assessment',
|
||||
'pa.outliers_detected': 'Outliers Detected',
|
||||
'pa.rated_by': 'Rated by',
|
||||
'pa.ratings': 'ratings',
|
||||
'pa.results_title': 'Results',
|
||||
'pa.status_active': 'Active',
|
||||
'pa.status_completed': 'Completed',
|
||||
'pa.status_closed': 'Closed',
|
||||
'pa.status_pending': 'Pending',
|
||||
'pa.status_submitted': 'Submitted',
|
||||
|
||||
// Navigation
|
||||
'nav.school-transport': 'School Transport',
|
||||
|
||||
// Transport
|
||||
'transport.title': 'School Transport & Bus Routes',
|
||||
'transport.subtitle': 'Manage student transport, routes and logistics',
|
||||
'transport.total_students': 'Total Students',
|
||||
'transport.active_routes': 'Active Routes',
|
||||
'transport.total_capacity': 'Total Capacity',
|
||||
'transport.avg_distance': 'Avg Distance',
|
||||
'transport.over_capacity_warning': 'route(s) over capacity',
|
||||
'transport.over_capacity_desc': 'One or more routes have more students assigned than available seats.',
|
||||
'transport.type_distribution': 'Transport Type Distribution',
|
||||
'transport.type_distribution_desc': 'Distribution of students by transport type',
|
||||
'transport.route_capacity': 'Route Capacity',
|
||||
'transport.route_capacity_desc': 'Occupancy vs. capacity of active routes',
|
||||
'transport.assigned': 'Assigned',
|
||||
'transport.capacity': 'Capacity',
|
||||
'transport.type_summary': 'Transport Type Summary',
|
||||
'transport.quick_actions': 'Quick Actions',
|
||||
'transport.add_route': 'Add Route',
|
||||
'transport.assign_transport': 'Assign Transport',
|
||||
'transport.bulk_assign': 'Bulk Assign',
|
||||
'transport.search_routes': 'Search routes...',
|
||||
'transport.filter_type': 'Transport Type',
|
||||
'transport.filter_status': 'Status',
|
||||
'transport.all_types': 'All Types',
|
||||
'transport.all_status': 'All Status',
|
||||
'transport.active': 'Active',
|
||||
'transport.inactive': 'Inactive',
|
||||
'transport.no_routes': 'No routes found',
|
||||
'transport.create_first_route': 'Create First Route',
|
||||
'transport.stops_count': '{count} stops',
|
||||
'transport.add_stop': 'Add Stop',
|
||||
'transport.no_data': 'No data available yet',
|
||||
'transport.no_routes_data': 'No routes with data available',
|
||||
'transport.search_students': 'Search students...',
|
||||
'transport.no_assignments': 'No transport assignments found',
|
||||
'transport.student': 'Student',
|
||||
'transport.type': 'Type',
|
||||
'transport.route': 'Route',
|
||||
'transport.stop': 'Stop',
|
||||
'transport.pickup': 'Pickup',
|
||||
'transport.dropoff': 'Dropoff',
|
||||
'transport.distance': 'Distance',
|
||||
'transport.actions': 'Actions',
|
||||
'transport.no_schedule': 'No schedule available',
|
||||
'transport.no_schedule_desc': 'Create routes with stops to see the schedule.',
|
||||
'transport.my_transport': 'My Transport',
|
||||
'transport.my_route': 'My Route',
|
||||
'transport.no_personal_transport': 'No transport information available',
|
||||
'transport.tab_overview': 'Overview',
|
||||
'transport.tab_routes': 'Routes',
|
||||
'transport.tab_assignments': 'Assignments',
|
||||
'transport.tab_schedule': 'Schedule',
|
||||
'transport.edit_route': 'Edit Route',
|
||||
'transport.create_route': 'Create Route',
|
||||
'transport.edit_route_desc': 'Edit the route details',
|
||||
'transport.create_route_desc': 'Create a new transport route',
|
||||
'transport.route_number': 'Route Number',
|
||||
'transport.route_name': 'Route Name',
|
||||
'transport.route_name_placeholder': 'e.g. North Route',
|
||||
'transport.transport_type': 'Transport Type',
|
||||
'transport.driver_name': 'Driver',
|
||||
'transport.driver_name_placeholder': 'Driver name',
|
||||
'transport.driver_phone': 'Driver Phone',
|
||||
'transport.notes': 'Notes',
|
||||
'transport.notes_placeholder': 'Additional notes...',
|
||||
'transport.edit_assignment': 'Edit Assignment',
|
||||
'transport.edit_assignment_desc': 'Edit the transport assignment',
|
||||
'transport.assign_transport_desc': 'Assign a transport type to a student',
|
||||
'transport.student_id': 'Student ID',
|
||||
'transport.student_id_placeholder': 'Enter student ID',
|
||||
'transport.assign_route': 'Assign Route',
|
||||
'transport.no_route': 'No Route',
|
||||
'transport.stop_name': 'Stop Name',
|
||||
'transport.stop_name_placeholder': 'e.g. Central Station',
|
||||
'transport.pickup_time': 'Pickup Time',
|
||||
'transport.dropoff_time': 'Dropoff Time',
|
||||
'transport.distance_km': 'Distance (km)',
|
||||
'transport.add_stop_to': 'Add Stop to Route {route}',
|
||||
'transport.add_stop_desc': 'Add a new stop to the route',
|
||||
'transport.stop_order': 'Order',
|
||||
'transport.stop_order_auto': 'Auto',
|
||||
'transport.address': 'Address',
|
||||
'transport.address_placeholder': 'Street, ZIP City',
|
||||
'transport.route_detail_desc': 'Detailed route information',
|
||||
'transport.driver_info': 'Driver Information',
|
||||
'transport.utilization': 'Utilization',
|
||||
'transport.stops_timeline': 'Stops Timeline',
|
||||
'transport.assigned_students': 'Assigned Students',
|
||||
'transport.confirm_delete': 'Confirm Delete',
|
||||
'transport.confirm_delete_desc': 'Are you sure you want to delete this item? This action cannot be undone.',
|
||||
'transport.bulk_assign_desc': 'Assign transport to multiple students at once',
|
||||
'transport.student_ids': 'Student IDs',
|
||||
'transport.student_ids_placeholder': 'One ID per line',
|
||||
'transport.student_ids_help': 'Enter one student ID per line',
|
||||
'transport.assign': 'Assign',
|
||||
'transport.type_bus': 'Bus',
|
||||
'transport.type_tram': 'Tram',
|
||||
'transport.type_train': 'Train',
|
||||
'transport.type_walk': 'Walk',
|
||||
'transport.type_car': 'Car',
|
||||
'transport.type_bike': 'Bike',
|
||||
'transport.type_other': 'Other',
|
||||
'transport.status': 'Status',
|
||||
|
||||
// ─── Grade Analytics ──────────────────────────────────────────────
|
||||
'nav.grade-analytics': 'Grade Analytics',
|
||||
'grade_analytics.title': 'Grade Analytics & Reporting',
|
||||
'grade_analytics.subtitle': 'Comprehensive analysis of grade distribution, student performance, and class comparisons on the German grading scale (1-6).',
|
||||
'grade_analytics.loading': 'Loading grade analytics...',
|
||||
'grade_analytics.total_grades': 'Total Grades',
|
||||
'grade_analytics.average_grade': 'Average Grade',
|
||||
'grade_analytics.finalized': 'Finalized',
|
||||
'grade_analytics.risk_students': 'Risk Students',
|
||||
'grade_analytics.filters': 'Filters',
|
||||
'grade_analytics.all_classes': 'All Classes',
|
||||
'grade_analytics.all_subjects': 'All Subjects',
|
||||
'grade_analytics.distribution': 'Distribution',
|
||||
'grade_analytics.performance': 'Performance',
|
||||
'grade_analytics.class_comparison': 'Class Comparison',
|
||||
'grade_analytics.subject_analysis': 'Subject Analysis',
|
||||
'grade_analytics.trends': 'Trends',
|
||||
'grade_analytics.reports': 'Reports',
|
||||
'grade_analytics.grade_distribution': 'Grade Distribution',
|
||||
'grade_analytics.distribution_desc': 'Distribution of grades on the German scale',
|
||||
'grade_analytics.scale': 'scale',
|
||||
'grade_analytics.count': 'Count',
|
||||
'grade_analytics.bell_curve': 'Bell Curve',
|
||||
'grade_analytics.mean': 'Mean',
|
||||
'grade_analytics.std_dev': 'Std Dev',
|
||||
'grade_analytics.grade': 'Grade',
|
||||
'grade_analytics.view_overall': 'Overall',
|
||||
'grade_analytics.view_subject': 'By Subject',
|
||||
'grade_analytics.view_class': 'By Class',
|
||||
'grade_analytics.distribution_by_subject': 'Grade Distribution by Subject',
|
||||
'grade_analytics.distribution_by_subject_desc': 'Comparison of grade distribution across subjects',
|
||||
'grade_analytics.distribution_by_class': 'Grade Distribution by Class',
|
||||
'grade_analytics.distribution_by_class_desc': 'Comparison of grade distribution across classes',
|
||||
'grade_analytics.top_performers': 'Top Performers',
|
||||
'grade_analytics.top_performers_desc': 'Students with the lowest grade average (best performance)',
|
||||
'grade_analytics.bottom_performers': 'Bottom Performers',
|
||||
'grade_analytics.bottom_performers_desc': 'Students with the highest grade average (weakest performance)',
|
||||
'grade_analytics.grades': 'grades',
|
||||
'grade_analytics.no_data': 'No data available',
|
||||
'grade_analytics.risk_students_title': 'Risk Students',
|
||||
'grade_analytics.risk_students_desc': 'Students with an average of 4.5 or worse (trending towards failing)',
|
||||
'grade_analytics.at_risk': 'At Risk',
|
||||
'grade_analytics.no_risk_students': 'No risk students detected',
|
||||
'grade_analytics.improvement_detection': 'Improvement/Regression Detection',
|
||||
'grade_analytics.improvement_detection_desc': 'Students with significant grade changes over time',
|
||||
'grade_analytics.first_grade': 'First Grade',
|
||||
'grade_analytics.last_grade': 'Last Grade',
|
||||
'grade_analytics.improving': 'Improving',
|
||||
'grade_analytics.regressing': 'Regressing',
|
||||
'grade_analytics.percentile_ranking': 'Percentile Ranking',
|
||||
'grade_analytics.percentile_ranking_desc': 'Student ranking by percentile based on grade average',
|
||||
'grade_analytics.percentile': 'Percentile',
|
||||
'grade_analytics.class_average_comparison': 'Class Average Comparison',
|
||||
'grade_analytics.class_average_comparison_desc': 'Comparison of average grades between classes',
|
||||
'grade_analytics.average': 'Average',
|
||||
'grade_analytics.median': 'Median',
|
||||
'grade_analytics.class_ranking': 'Class Ranking',
|
||||
'grade_analytics.class_ranking_desc': 'Class ranking by grade average (lower = better)',
|
||||
'grade_analytics.anonymized': 'Anonymized',
|
||||
'grade_analytics.grade_level': 'Grade Level',
|
||||
'grade_analytics.excellent': 'Excellent',
|
||||
'grade_analytics.good': 'Good',
|
||||
'grade_analytics.satisfactory': 'Satisfactory',
|
||||
'grade_analytics.needs_improvement': 'Needs Improvement',
|
||||
'grade_analytics.subject_comparison_across_classes': 'Subject Comparison Across Classes',
|
||||
'grade_analytics.subject_comparison_across_classes_desc': 'Comparison of subject grades across different classes',
|
||||
'grade_analytics.teacher_comparison': 'Teacher Comparison',
|
||||
'grade_analytics.teacher_comparison_desc': 'Comparison of student performance by teacher (admin only)',
|
||||
'grade_analytics.subject_difficulty_ranking': 'Subject Difficulty Ranking',
|
||||
'grade_analytics.subject_difficulty_ranking_desc': 'Subject ranking by average grade (higher = harder)',
|
||||
'grade_analytics.average_grade_short': 'Average Grade',
|
||||
'grade_analytics.variance': 'Variance',
|
||||
'grade_analytics.subject_performance_radar': 'Subject Performance Radar',
|
||||
'grade_analytics.subject_performance_radar_desc': 'Radar chart of subject performance (higher = better)',
|
||||
'grade_analytics.performance': 'Performance',
|
||||
'grade_analytics.cross_subject_correlation': 'Cross-Subject Correlation',
|
||||
'grade_analytics.cross_subject_correlation_desc': 'Correlation analysis between different subjects',
|
||||
'grade_analytics.subject_recommendations': 'Subject Recommendations',
|
||||
'grade_analytics.subject_recommendations_desc': 'Automatic recommendations based on subject analysis',
|
||||
'grade_analytics.grade_trends_over_time': 'Grade Trends Over Time',
|
||||
'grade_analytics.grade_trends_over_time_desc': 'Development of average grades over time',
|
||||
'grade_analytics.assessment_count': 'Assessment Count',
|
||||
'grade_analytics.no_trend_data': 'No trend data available',
|
||||
'grade_analytics.student_trajectories': 'Student Trajectories',
|
||||
'grade_analytics.student_trajectories_desc': 'Grade trajectory of individual students over time',
|
||||
'grade_analytics.report_templates': 'Report Templates',
|
||||
'grade_analytics.report_templates_desc': 'Choose a template for quick report generation',
|
||||
'grade_analytics.quarterly': 'Quarterly',
|
||||
'grade_analytics.quarterly_desc': 'Quarterly grade analysis',
|
||||
'grade_analytics.semester': 'Semester',
|
||||
'grade_analytics.semester_desc': 'Comprehensive semester analysis',
|
||||
'grade_analytics.annual': 'Annual',
|
||||
'grade_analytics.annual_desc': 'Full annual report',
|
||||
'grade_analytics.custom': 'Custom',
|
||||
'grade_analytics.custom_desc': 'Create a custom report',
|
||||
'grade_analytics.generated_reports': 'Generated Reports',
|
||||
'grade_analytics.generated_reports_desc': 'List of all generated reports',
|
||||
'grade_analytics.no_reports': 'No reports generated yet',
|
||||
'grade_analytics.generate_report': 'Generate Report',
|
||||
'grade_analytics.report_builder': 'Report Builder',
|
||||
'grade_analytics.report_title': 'Report Title',
|
||||
'grade_analytics.report_title_placeholder': 'Enter report title...',
|
||||
'grade_analytics.report_type': 'Report Type',
|
||||
'grade_analytics.date_from': 'Date From',
|
||||
'grade_analytics.date_to': 'Date To',
|
||||
'grade_analytics.report_metrics': 'Report Metrics',
|
||||
'grade_analytics.metric_distribution': 'Grade Distribution',
|
||||
'grade_analytics.metric_averages': 'Averages',
|
||||
'grade_analytics.metric_class_comparison': 'Class Comparison',
|
||||
'grade_analytics.metric_subject_analysis': 'Subject Analysis',
|
||||
'grade_analytics.metric_student_grades': 'Student Grades',
|
||||
'grade_analytics.metric_trends': 'Trends',
|
||||
'grade_analytics.generating': 'Generating...',
|
||||
'grade_analytics.generate': 'Generate',
|
||||
'grade_analytics.completed': 'Completed',
|
||||
'grade_analytics.pending': 'Pending',
|
||||
'grade_analytics.failed': 'Failed',
|
||||
};
|
||||
|
||||
const translations: Record<string, TranslationDict> = { de, en };
|
||||
|
||||
Reference in new issue
Block a user