Round 23: Report Card Generator, Seating Chart, School Library, Parent Portal Enhancement
- Report Card Generator: Professional report cards with PDF export - Subject grades table with competency levels - Competency radar chart, teacher comments - Template management, batch generation - Status workflow: draft → review → published → archived - Seating Chart View: Visual classroom layout - Grid-based classroom with desk positions - Multiple layout templates (rows, groups, U-shape, circle) - Click-to-assign student placement - Randomize and smart arrange features - Student info popover - School Library View: Book lending system - Book catalog with search and filter - Checkout system with due dates and renewals - Overdue tracking with notifications - Reservation queue system - Statistics dashboard with charts - Enhanced Parent Portal: Comprehensive dashboard - Child overview with multiple children selector - Academic progress with competency radar chart - Attendance & illness with approval - Communication, schedule, and reports tabs - Bug fixes: i18n breadcrumb keys for new views - Styling: Gradient headers, animations, hover effects across all new views - 200+ i18n keys added, 15+ API routes, 3+ Prisma models
This commit is contained in:
1 parent
490bd0650f
commit
6e5af13778
28 files changed
+10252
-494
No files matched your search
+694
@@ -4614,6 +4614,72 @@ const de: TranslationDict = {
|
||||
'parent_portal.days_present': 'Tage anwesend',
|
||||
'parent_portal.attendance_rate': 'Anwesenheitsrate',
|
||||
'parent_portal.all_children': 'Alle Kinder',
|
||||
'parent_portal.academic_progress': 'Akademischer Fortschritt',
|
||||
'parent_portal.attendance_illness': 'Anwesenheit & Krankheit',
|
||||
'parent_portal.communication': 'Kommunikation',
|
||||
'parent_portal.schedule': 'Stundenplan',
|
||||
'parent_portal.reports_docs': 'Berichte & Dokumente',
|
||||
'parent_portal.subject_grades': 'Faecher & Noten',
|
||||
'parent_portal.class_average': 'Klassendurchschnitt',
|
||||
'parent_portal.trend_up': 'Steigend',
|
||||
'parent_portal.trend_down': 'Fallend',
|
||||
'parent_portal.trend_stable': 'Stabil',
|
||||
'parent_portal.competency_radar': 'Kompetenzradar',
|
||||
'parent_portal.grade_history': 'Notenverlauf',
|
||||
'parent_portal.assessment_results': 'Leistungskontrollergebnisse',
|
||||
'parent_portal.attendance_rate_circular': 'Anwesenheitsrate',
|
||||
'parent_portal.illness_history': 'Krankheitsverlauf',
|
||||
'parent_portal.upload_certificate': 'Attest hochladen',
|
||||
'parent_portal.messages_teachers': 'Nachrichten von Lehrern',
|
||||
'parent_portal.conversation_rooms': 'Gespraechesraeume',
|
||||
'parent_portal.school_announcements': 'Schulankuendigungen',
|
||||
'parent_portal.weekly_timetable': 'Wochenstundenplan',
|
||||
'parent_portal.exam_dates': 'Pruefungstermine',
|
||||
'parent_portal.counseling_appointments_short': 'Beratungstermine',
|
||||
'parent_portal.school_events': 'Schulveranstaltungen',
|
||||
'parent_portal.homework_due': 'Hausaufgaben faellig',
|
||||
'parent_portal.report_cards': 'Zeugnisse',
|
||||
'parent_portal.portfolio_highlights': 'Portfolio-Highlights',
|
||||
'parent_portal.request_meeting': 'Elterngespraech anfragen',
|
||||
'parent_portal.reserve_book': 'Buch reservieren',
|
||||
'parent_portal.view_announcements': 'Ankuendigungen anzeigen',
|
||||
'parent_portal.child_dashboard': 'Dashboard',
|
||||
'parent_portal.quick_stats': 'Schnellstatistiken',
|
||||
'parent_portal.upcoming_deadlines': 'Anstehende Termine',
|
||||
'parent_portal.recent_activity': 'Letzte Aktivitaet',
|
||||
'parent_portal.no_announcements': 'Keine Ankuendigungen',
|
||||
'parent_portal.no_messages': 'Keine Nachrichten',
|
||||
'parent_portal.no_schedule': 'Kein Stundenplan verfuegbar',
|
||||
'parent_portal.no_homework': 'Keine Hausaufgaben',
|
||||
'parent_portal.no_events': 'Keine Veranstaltungen',
|
||||
'parent_portal.no_portfolio': 'Keine Portfolio-Eintraege',
|
||||
'parent_portal.no_assessments': 'Keine Leistungskontrollen',
|
||||
'parent_portal.monday': 'Montag',
|
||||
'parent_portal.tuesday': 'Dienstag',
|
||||
'parent_portal.wednesday': 'Mittwoch',
|
||||
'parent_portal.thursday': 'Donnerstag',
|
||||
'parent_portal.friday': 'Freitag',
|
||||
'parent_portal.period': 'Stunde',
|
||||
'parent_portal.break': 'Pause',
|
||||
'parent_portal.score': 'Punkte',
|
||||
'parent_portal.feedback': 'Feedback',
|
||||
'parent_portal.overall_average': 'Gesamtdurchschnitt',
|
||||
'parent_portal.subjects_count': 'Faecher',
|
||||
'parent_portal.latest_grade': 'Aktuellste Note',
|
||||
'parent_portal.days_excused': 'Tage entschuldigt',
|
||||
'parent_portal.days_late': 'Tage verspaetet',
|
||||
'parent_portal.unread_messages': 'Ungelesene Nachrichten',
|
||||
'parent_portal.active_conversations': 'Aktive Gespraeche',
|
||||
'parent_portal.pinned': 'Angeheftet',
|
||||
'parent_portal.urgent': 'Dringend',
|
||||
'parent_portal.from': 'Von',
|
||||
'parent_portal.due': 'Faellig',
|
||||
'parent_portal.view': 'Ansehen',
|
||||
'parent_portal.download': 'Herunterladen',
|
||||
'parent_portal.grade_trend': 'Notentrend',
|
||||
'parent_portal.comparison': 'Vergleich',
|
||||
'parent_portal.student': 'Schueler/in',
|
||||
'parent_portal.class': 'Klasse',
|
||||
|
||||
// ─── Content Crawl ──────────────────────────────────────────────────
|
||||
'subjects.crawl': 'Inhalte crawlen',
|
||||
@@ -5290,6 +5356,287 @@ const de: TranslationDict = {
|
||||
'achievements.to_next_level': 'bis zur naechsten Stufe',
|
||||
'achievements.time_remaining': 'Verbleibende Zeit',
|
||||
'achievements.days': 'Tage',
|
||||
|
||||
// Seating Chart
|
||||
'nav.seating_chart': 'Sitzplan',
|
||||
'seating.title': 'Sitzplan',
|
||||
'seating.subtitle': 'Sitzplaene erstellen und bearbeiten',
|
||||
'seating.select_class': 'Klasse auswählen',
|
||||
'seating.select_chart': 'Sitzplan auswählen',
|
||||
'seating.new_chart': 'Neuer Sitzplan',
|
||||
'seating.default': 'Standard',
|
||||
'seating.no_chart_title': 'Kein Sitzplan vorhanden',
|
||||
'seating.no_chart_subtitle': 'Erstellen Sie einen Sitzplan, um die Schülerplätze zu verwalten.',
|
||||
'seating.create_chart_title': 'Neuen Sitzplan erstellen',
|
||||
'seating.create_chart_desc': 'Erstellen Sie einen neuen Sitzplan für diese Klasse.',
|
||||
'seating.chart_name': 'Name des Sitzplans',
|
||||
'seating.chart_name_placeholder': 'z.B. Sitzplan Q1',
|
||||
'seating.chart_created': 'Sitzplan erstellt',
|
||||
'seating.chart_deleted': 'Sitzplan gelöscht',
|
||||
'seating.delete_chart_title': 'Sitzplan löschen',
|
||||
'seating.delete_chart_desc': 'Möchten Sie diesen Sitzplan wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
|
||||
'seating.unassigned_students': 'Nicht zugewiesene Schüler',
|
||||
'seating.all_students_assigned': 'Alle Schüler sind zugewiesen.',
|
||||
'seating.assign_all': 'Alle zuweisen',
|
||||
'seating.randomize': 'Zufällig mischen',
|
||||
'seating.smart_arrange': 'Intelligent anordnen',
|
||||
'seating.clear_all': 'Alle entfernen',
|
||||
'seating.arrangement_saved': 'Sitzplan gespeichert',
|
||||
'seating.arrangement_updated': 'Sitzplan aktualisiert',
|
||||
'seating.teacher_desk': 'Lehrertisch',
|
||||
'seating.door': 'Tür',
|
||||
'seating.rows': 'Zeilen',
|
||||
'seating.columns': 'Spalten',
|
||||
'seating.layout_type': 'Layout-Typ',
|
||||
'seating.layout_rows': 'Reihen',
|
||||
'seating.layout_groups': 'Gruppen',
|
||||
'seating.layout_ushape': 'U-Form',
|
||||
'seating.layout_circle': 'Kreis',
|
||||
'seating.layout_custom': 'Frei',
|
||||
'seating.settings': 'Einstellungen',
|
||||
'seating.show_door': 'Tür anzeigen',
|
||||
'seating.show_windows': 'Fenster anzeigen',
|
||||
'seating.door_position': 'Türposition',
|
||||
'seating.window_position': 'Fensterposition',
|
||||
'seating.pos_left': 'Links',
|
||||
'seating.pos_right': 'Rechts',
|
||||
'seating.pos_back': 'Hinten',
|
||||
'seating.pos_both': 'Beide Seiten',
|
||||
'seating.assigned_count': '{assigned} von {total} zugewiesen',
|
||||
'seating.seat_position': 'Reihe {row}, Platz {col}',
|
||||
'seating.view_profile': 'Profil anzeigen',
|
||||
'seating.behavior_note': 'Verhaltenshinweis',
|
||||
'seating.legend_assigned': 'Zugewiesen',
|
||||
'seating.legend_empty': 'Leer',
|
||||
'seating.legend_behavior': 'Verhaltenshinweis',
|
||||
|
||||
// School Library (DE)
|
||||
'library.title': 'Schulbibliothek',
|
||||
'library.subtitle': 'Buecherkatalog, Ausleihe und Reservierung',
|
||||
'library.loading': 'Wird geladen...',
|
||||
'library.add_book': 'Buch hinzufuegen',
|
||||
'library.add_book_desc': 'Neues Buch zur Bibliothek hinzufuegen',
|
||||
'library.book_added': 'Buch erfolgreich hinzugefuegt',
|
||||
'library.error_adding_book': 'Fehler beim Hinzufuegen des Buches',
|
||||
'library.catalog': 'Katalog',
|
||||
'library.checkouts': 'Ausleihen',
|
||||
'library.overdue_tab': 'Ueberfaellig',
|
||||
'library.reservations': 'Reservierungen',
|
||||
'library.statistics': 'Statistiken',
|
||||
'library.search_placeholder': 'Titel, Autor, ISBN oder Kategorie suchen...',
|
||||
'library.category': 'Kategorie',
|
||||
'library.availability': 'Verfuegbarkeit',
|
||||
'library.reading_level': 'Lesestufe',
|
||||
'library.all_categories': 'Alle Kategorien',
|
||||
'library.all': 'Alle',
|
||||
'library.available': 'Verfuegbar',
|
||||
'library.checked_out': 'Ausgeliehen',
|
||||
'library.unavailable': 'Nicht verfuegbar',
|
||||
'library.all_levels': 'Alle Stufen',
|
||||
'library.level_elementary': 'Grundschule',
|
||||
'library.level_middle': 'Mittelstufe',
|
||||
'library.level_high': 'Oberstufe',
|
||||
'library.level_advanced': 'Fortgeschritten',
|
||||
'library.copies_available': 'Exemplare verfuegbar',
|
||||
'library.no_books': 'Keine Buecher gefunden',
|
||||
'library.add_first_book': 'Erstes Buch hinzufuegen',
|
||||
'library.checkout': 'Ausleihen',
|
||||
'library.reserve': 'Reservieren',
|
||||
'library.active_checkouts': 'Aktive Ausleihen',
|
||||
'library.new_checkout': 'Neue Ausleihe',
|
||||
'library.no_active_checkouts': 'Keine aktiven Ausleihen',
|
||||
'library.return_history': 'Rueckgabeverlauf',
|
||||
'library.overdue_books': 'Ueberfaellige Buecher',
|
||||
'library.no_overdue': 'Keine ueberfaelligen Buecher!',
|
||||
'library.days_overdue': 'Tage ueberfaellig',
|
||||
'library.fine_estimate': 'Geschaetzte Gebuehr',
|
||||
'library.return': 'Zurueckgeben',
|
||||
'library.renew': 'Verlaengern',
|
||||
'library.renewed': 'verlaengert',
|
||||
'library.renewal_success': 'Ausleihe erfolgreich verlaengert',
|
||||
'library.error_renewal': 'Fehler bei der Verlaengerung',
|
||||
'library.checkout_success': 'Buch erfolgreich ausgeliehen',
|
||||
'library.error_checkout': 'Fehler bei der Ausleihe',
|
||||
'library.return_success': 'Buch erfolgreich zurueckgegeben',
|
||||
'library.error_return': 'Fehler bei der Rueckgabe',
|
||||
'library.reservation_success': 'Buch erfolgreich reserviert',
|
||||
'library.error_reservation': 'Fehler bei der Reservierung',
|
||||
'library.reservation_cancelled': 'Reservierung storniert',
|
||||
'library.error_cancel_reservation': 'Fehler beim Stornieren',
|
||||
'library.no_student_selected': 'Kein Schueler ausgewaehlt',
|
||||
'library.no_reservations': 'Keine Reservierungen',
|
||||
'library.available_now': 'Jetzt verfuegbar',
|
||||
'library.queue_position': 'Warteposition',
|
||||
'library.reserved_on': 'Reserviert am',
|
||||
'library.cancel': 'Stornieren',
|
||||
'library.total_books': 'Buecher gesamt',
|
||||
'library.total_copies': 'Exemplare gesamt',
|
||||
'library.available_copies': 'Verfuegbar',
|
||||
'library.checked_out_count': 'Ausgeliehen',
|
||||
'library.overdue': 'Ueberfaellig',
|
||||
'library.overdue_rate': 'Ueberfaellig-Quote',
|
||||
'library.popular_books': 'Beliebte Buecher',
|
||||
'library.category_distribution': 'Kategorieverteilung',
|
||||
'library.checkout_trends': 'Ausleihtrends',
|
||||
'library.no_data': 'Keine Daten verfuegbar',
|
||||
'library.book_title': 'Titel',
|
||||
'library.author': 'Autor',
|
||||
'library.isbn': 'ISBN',
|
||||
'library.publisher': 'Verlag',
|
||||
'library.publish_year': 'Erscheinungsjahr',
|
||||
'library.total_copies_field': 'Anzahl Exemplare',
|
||||
'library.location': 'Standort',
|
||||
'library.description': 'Beschreibung',
|
||||
'library.student': 'Schueler',
|
||||
'library.due_date': 'Faelligkeitsdatum',
|
||||
'library.checkout_date': 'Ausleihdatum',
|
||||
'library.condition': 'Zustand',
|
||||
'library.condition_excellent': 'Sehr gut',
|
||||
'library.condition_good': 'Gut',
|
||||
'library.condition_fair': 'Befriedigend',
|
||||
'library.condition_poor': 'Schlecht',
|
||||
'library.notes': 'Notizen',
|
||||
'library.notes_placeholder': 'Optionale Notizen...',
|
||||
'library.checkout_book': 'Buch ausleihen',
|
||||
'library.checkout_desc': 'Buch fuer einen Schueler ausleihen',
|
||||
'library.select_book': 'Buch auswaehlen',
|
||||
'library.select_student': 'Schueler auswaehlen',
|
||||
'library.default_14_days': 'Standard: 14 Tage ab heute',
|
||||
'library.return_book': 'Buch zurueckgeben',
|
||||
'library.return_condition': 'Rueckgabezustand',
|
||||
'library.fine_amount': 'Gebuehrenbetrag',
|
||||
'library.overdue_fine_note': 'Dieses Buch ist ueberfaellig. Bitte Gebuehr pruefen.',
|
||||
'library.checkout_receipt': 'Ausleihbeleg',
|
||||
'library.confirm_delete_book': 'Buch wirklich loeschen?',
|
||||
'library.book_deleted': 'Buch geloescht',
|
||||
'library.error_delete_book': 'Fehler beim Loeschen',
|
||||
'library.currently_checked_out': 'Aktuell ausgeliehen',
|
||||
'library.reservation_queue': 'Reservierungswarteschlange',
|
||||
'nav.school_library': 'Bibliothek',
|
||||
'nav.school-library': 'Bibliothek',
|
||||
'nav.seating_chart': 'Sitzplan',
|
||||
'nav.seating-chart': 'Sitzplan',
|
||||
|
||||
// Report Card
|
||||
'nav.report_cards': 'Zeugnisse',
|
||||
'nav.report-cards': 'Zeugnisse',
|
||||
'report_card.title': 'Zeugnisgenerator',
|
||||
'report_card.subtitle': 'Zeugnisse erstellen, bearbeiten und verwalten',
|
||||
'report_card.total_reports': 'Zeugnisse gesamt',
|
||||
'report_card.drafts': 'Entwürfe',
|
||||
'report_card.in_review': 'In Prüfung',
|
||||
'report_card.published': 'Veröffentlicht',
|
||||
'report_card.search_placeholder': 'Zeugnisse suchen...',
|
||||
'report_card.filter_class': 'Klasse',
|
||||
'report_card.filter_status': 'Status',
|
||||
'report_card.filter_period': 'Zeitraum',
|
||||
'report_card.all_classes': 'Alle Klassen',
|
||||
'report_card.all_statuses': 'Alle Status',
|
||||
'report_card.all_periods': 'Alle Zeiträume',
|
||||
'report_card.create': 'Zeugnis erstellen',
|
||||
'report_card.batch_generate': 'Klassensatz erstellen',
|
||||
'report_card.manage_templates': 'Vorlagen verwalten',
|
||||
'report_card.selected': 'ausgewählt',
|
||||
'report_card.publish': 'Veröffentlichen',
|
||||
'report_card.archive': 'Archivieren',
|
||||
'report_card.no_reports': 'Keine Zeugnisse gefunden',
|
||||
'report_card.create_first': 'Erstes Zeugnis erstellen',
|
||||
'report_card.more': 'mehr',
|
||||
'report_card.with_grades': 'Mit Noten',
|
||||
'report_card.status_draft': 'Entwurf',
|
||||
'report_card.status_review': 'In Prüfung',
|
||||
'report_card.status_published': 'Veröffentlicht',
|
||||
'report_card.status_archived': 'Archiviert',
|
||||
'report_card.status_final': 'Final',
|
||||
'report_card.submit_review': 'Zur Prüfung einreichen',
|
||||
'report_card.finalize': 'Finalisieren',
|
||||
'report_card.export_pdf': 'PDF exportieren',
|
||||
'report_card.edit_title': 'Zeugnis bearbeiten',
|
||||
'report_card.student_info': 'Schülerinformationen',
|
||||
'report_card.student_name': 'Name',
|
||||
'report_card.class_name': 'Klasse',
|
||||
'report_card.school_year': 'Schuljahr',
|
||||
'report_card.period': 'Zeitraum',
|
||||
'report_card.date': 'Datum',
|
||||
'report_card.subject_grades': 'Fachnoten',
|
||||
'report_card.subject': 'Fach',
|
||||
'report_card.grade': 'Note',
|
||||
'report_card.label': 'Bewertung',
|
||||
'report_card.status_col': 'Status',
|
||||
'report_card.evaluation': 'Bewertung',
|
||||
'report_card.competency_sections': 'Kompetenzbereiche',
|
||||
'report_card.section': 'Bereich',
|
||||
'report_card.no_sections': 'Keine Kompetenzbereiche vorhanden',
|
||||
'report_card.teacher_comments': 'Lehrerbemerkungen',
|
||||
'report_card.comments_placeholder': 'Bemerkungen zum Schüler eingeben...',
|
||||
'report_card.overall_assessment': 'Gesamtbewertung',
|
||||
'report_card.assessment_placeholder': 'Gesamtbewertung eingeben...',
|
||||
'report_card.competency_radar': 'Kompetenzradar',
|
||||
'report_card.competency_level': 'Kompetenzstufe',
|
||||
'report_card.attendance_summary': 'Anwesenheit',
|
||||
'report_card.present': 'Anwesend',
|
||||
'report_card.absent': 'Fehlend',
|
||||
'report_card.excused': 'Entschuldigt',
|
||||
'report_card.late': 'Verspätet',
|
||||
'report_card.actions': 'Aktionen',
|
||||
'report_card.preview_title': 'Zeugnisvorschau',
|
||||
'report_card.report_card_title': 'Zeugnis',
|
||||
'report_card.competency_overview': 'Kompetenzübersicht',
|
||||
'report_card.competency_details': 'Kompetenzdetails',
|
||||
'report_card.teacher_signature': 'Unterschrift Lehrkraft',
|
||||
'report_card.parent_signature': 'Unterschrift Eltern',
|
||||
'report_card.grading_scale': 'Notenskala (1-6)',
|
||||
'report_card.create_title': 'Neues Zeugnis erstellen',
|
||||
'report_card.create_desc': 'Erstellen Sie ein neues Zeugnis für einen Schüler.',
|
||||
'report_card.select_class': 'Klasse auswählen',
|
||||
'report_card.select_student': 'Schüler auswählen',
|
||||
'report_card.select_year': 'Schuljahr auswählen',
|
||||
'report_card.template': 'Vorlage',
|
||||
'report_card.select_template': 'Vorlage auswählen',
|
||||
'report_card.no_template': 'Keine Vorlage',
|
||||
'report_card.include_grades': 'Noten einbeziehen',
|
||||
'report_card.batch_generate_title': 'Klassensatz erstellen',
|
||||
'report_card.batch_generate_desc': 'Erstellen Sie Zeugnisse für alle Schüler einer Klasse.',
|
||||
'report_card.generate': 'Erstellen',
|
||||
'report_card.template_management': 'Vorlagenverwaltung',
|
||||
'report_card.template_desc': 'Verwalten und erstellen Sie Zeugnisvorlagen.',
|
||||
'report_card.existing_templates': 'Bestehende Vorlagen',
|
||||
'report_card.default': 'Standard',
|
||||
'report_card.template_name': 'Vorlagenname',
|
||||
'report_card.template_name_placeholder': 'z.B. Standard-Grundschulzeugnis',
|
||||
'report_card.template_description': 'Beschreibung',
|
||||
'report_card.template_desc_placeholder': 'Kurze Beschreibung der Vorlage',
|
||||
'report_card.layout': 'Layout',
|
||||
'report_card.layout_default': 'Standard',
|
||||
'report_card.layout_detailed': 'Detailliert',
|
||||
'report_card.layout_compact': 'Kompakt',
|
||||
'report_card.set_as_default': 'Als Standard festlegen',
|
||||
'report_card.create_template': 'Vorlage erstellen',
|
||||
'report_card.delete_confirm_title': 'Zeugnis löschen',
|
||||
'report_card.delete_confirm_desc': 'Möchten Sie dieses Zeugnis wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
|
||||
'report_card.created': 'Zeugnis erfolgreich erstellt',
|
||||
'report_card.create_error': 'Fehler beim Erstellen des Zeugnisses',
|
||||
'report_card.batch_generated': '{count} Zeugnisse erstellt',
|
||||
'report_card.batch_error': 'Fehler beim Erstellen des Klassensatzes',
|
||||
'report_card.saved': 'Zeugnis gespeichert',
|
||||
'report_card.save_error': 'Fehler beim Speichern',
|
||||
'report_card.status_updated': 'Status aktualisiert',
|
||||
'report_card.status_error': 'Fehler beim Aktualisieren des Status',
|
||||
'report_card.deleted': 'Zeugnis gelöscht',
|
||||
'report_card.delete_error': 'Fehler beim Löschen',
|
||||
'report_card.bulk_action_success': 'Massenaktion erfolgreich',
|
||||
'report_card.bulk_action_error': 'Fehler bei der Massenaktion',
|
||||
'report_card.export_success': 'Export erfolgreich',
|
||||
'report_card.export_error': 'Fehler beim Export',
|
||||
'report_card.load_error': 'Fehler beim Laden der Zeugnisse',
|
||||
'report_card.template_created': 'Vorlage erstellt',
|
||||
'report_card.template_error': 'Fehler beim Erstellen der Vorlage',
|
||||
'report_card.section_header': 'Kopfzeile',
|
||||
'report_card.section_grades': 'Noten',
|
||||
'report_card.section_competencies': 'Kompetenzen',
|
||||
'report_card.section_comments': 'Bemerkungen',
|
||||
'report_card.section_attendance': 'Anwesenheit',
|
||||
'report_card.section_signature': 'Unterschrift',
|
||||
};
|
||||
|
||||
const en: TranslationDict = {
|
||||
@@ -9902,6 +10249,72 @@ const en: TranslationDict = {
|
||||
'parent_portal.days_present': 'Days Present',
|
||||
'parent_portal.attendance_rate': 'Attendance Rate',
|
||||
'parent_portal.all_children': 'All Children',
|
||||
'parent_portal.academic_progress': 'Academic Progress',
|
||||
'parent_portal.attendance_illness': 'Attendance & Illness',
|
||||
'parent_portal.communication': 'Communication',
|
||||
'parent_portal.schedule': 'Schedule',
|
||||
'parent_portal.reports_docs': 'Reports & Documents',
|
||||
'parent_portal.subject_grades': 'Subjects & Grades',
|
||||
'parent_portal.class_average': 'Class Average',
|
||||
'parent_portal.trend_up': 'Improving',
|
||||
'parent_portal.trend_down': 'Declining',
|
||||
'parent_portal.trend_stable': 'Stable',
|
||||
'parent_portal.competency_radar': 'Competency Radar',
|
||||
'parent_portal.grade_history': 'Grade History',
|
||||
'parent_portal.assessment_results': 'Assessment Results',
|
||||
'parent_portal.attendance_rate_circular': 'Attendance Rate',
|
||||
'parent_portal.illness_history': 'Illness History',
|
||||
'parent_portal.upload_certificate': 'Upload Certificate',
|
||||
'parent_portal.messages_teachers': 'Messages from Teachers',
|
||||
'parent_portal.conversation_rooms': 'Conversation Rooms',
|
||||
'parent_portal.school_announcements': 'School Announcements',
|
||||
'parent_portal.weekly_timetable': 'Weekly Timetable',
|
||||
'parent_portal.exam_dates': 'Exam Dates',
|
||||
'parent_portal.counseling_appointments_short': 'Counseling',
|
||||
'parent_portal.school_events': 'School Events',
|
||||
'parent_portal.homework_due': 'Homework Due',
|
||||
'parent_portal.report_cards': 'Report Cards',
|
||||
'parent_portal.portfolio_highlights': 'Portfolio Highlights',
|
||||
'parent_portal.request_meeting': 'Request Meeting',
|
||||
'parent_portal.reserve_book': 'Reserve Book',
|
||||
'parent_portal.view_announcements': 'View Announcements',
|
||||
'parent_portal.child_dashboard': 'Dashboard',
|
||||
'parent_portal.quick_stats': 'Quick Stats',
|
||||
'parent_portal.upcoming_deadlines': 'Upcoming Deadlines',
|
||||
'parent_portal.recent_activity': 'Recent Activity',
|
||||
'parent_portal.no_announcements': 'No announcements',
|
||||
'parent_portal.no_messages': 'No messages',
|
||||
'parent_portal.no_schedule': 'No schedule available',
|
||||
'parent_portal.no_homework': 'No homework',
|
||||
'parent_portal.no_events': 'No events',
|
||||
'parent_portal.no_portfolio': 'No portfolio entries',
|
||||
'parent_portal.no_assessments': 'No assessments',
|
||||
'parent_portal.monday': 'Monday',
|
||||
'parent_portal.tuesday': 'Tuesday',
|
||||
'parent_portal.wednesday': 'Wednesday',
|
||||
'parent_portal.thursday': 'Thursday',
|
||||
'parent_portal.friday': 'Friday',
|
||||
'parent_portal.period': 'Period',
|
||||
'parent_portal.break': 'Break',
|
||||
'parent_portal.score': 'Score',
|
||||
'parent_portal.feedback': 'Feedback',
|
||||
'parent_portal.overall_average': 'Overall Average',
|
||||
'parent_portal.subjects_count': 'Subjects',
|
||||
'parent_portal.latest_grade': 'Latest Grade',
|
||||
'parent_portal.days_excused': 'Days Excused',
|
||||
'parent_portal.days_late': 'Days Late',
|
||||
'parent_portal.unread_messages': 'Unread Messages',
|
||||
'parent_portal.active_conversations': 'Active Conversations',
|
||||
'parent_portal.pinned': 'Pinned',
|
||||
'parent_portal.urgent': 'Urgent',
|
||||
'parent_portal.from': 'From',
|
||||
'parent_portal.due': 'Due',
|
||||
'parent_portal.view': 'View',
|
||||
'parent_portal.download': 'Download',
|
||||
'parent_portal.grade_trend': 'Grade Trend',
|
||||
'parent_portal.comparison': 'Comparison',
|
||||
'parent_portal.student': 'Student',
|
||||
'parent_portal.class': 'Class',
|
||||
|
||||
// ─── Content Crawl ──────────────────────────────────────────────────
|
||||
'subjects.crawl': 'Crawl Content',
|
||||
@@ -10578,6 +10991,287 @@ const en: TranslationDict = {
|
||||
'achievements.to_next_level': 'to next level',
|
||||
'achievements.time_remaining': 'Time remaining',
|
||||
'achievements.days': 'days',
|
||||
|
||||
// Seating Chart
|
||||
'nav.seating_chart': 'Seating Chart',
|
||||
'seating.title': 'Seating Chart',
|
||||
'seating.subtitle': 'Create and manage seating arrangements',
|
||||
'seating.select_class': 'Select class',
|
||||
'seating.select_chart': 'Select chart',
|
||||
'seating.new_chart': 'New Chart',
|
||||
'seating.default': 'Default',
|
||||
'seating.no_chart_title': 'No seating chart found',
|
||||
'seating.no_chart_subtitle': 'Create a seating chart to manage student seats.',
|
||||
'seating.create_chart_title': 'Create New Seating Chart',
|
||||
'seating.create_chart_desc': 'Create a new seating chart for this class.',
|
||||
'seating.chart_name': 'Chart Name',
|
||||
'seating.chart_name_placeholder': 'e.g. Seating Q1',
|
||||
'seating.chart_created': 'Chart created',
|
||||
'seating.chart_deleted': 'Chart deleted',
|
||||
'seating.delete_chart_title': 'Delete Seating Chart',
|
||||
'seating.delete_chart_desc': 'Are you sure you want to delete this seating chart? This action cannot be undone.',
|
||||
'seating.unassigned_students': 'Unassigned Students',
|
||||
'seating.all_students_assigned': 'All students are assigned.',
|
||||
'seating.assign_all': 'Assign All',
|
||||
'seating.randomize': 'Randomize',
|
||||
'seating.smart_arrange': 'Smart Arrange',
|
||||
'seating.clear_all': 'Clear All',
|
||||
'seating.arrangement_saved': 'Seating chart saved',
|
||||
'seating.arrangement_updated': 'Seating arrangement updated',
|
||||
'seating.teacher_desk': "Teacher's Desk",
|
||||
'seating.door': 'Door',
|
||||
'seating.rows': 'Rows',
|
||||
'seating.columns': 'Columns',
|
||||
'seating.layout_type': 'Layout Type',
|
||||
'seating.layout_rows': 'Rows',
|
||||
'seating.layout_groups': 'Groups',
|
||||
'seating.layout_ushape': 'U-Shape',
|
||||
'seating.layout_circle': 'Circle',
|
||||
'seating.layout_custom': 'Custom',
|
||||
'seating.settings': 'Settings',
|
||||
'seating.show_door': 'Show Door',
|
||||
'seating.show_windows': 'Show Windows',
|
||||
'seating.door_position': 'Door Position',
|
||||
'seating.window_position': 'Window Position',
|
||||
'seating.pos_left': 'Left',
|
||||
'seating.pos_right': 'Right',
|
||||
'seating.pos_back': 'Back',
|
||||
'seating.pos_both': 'Both Sides',
|
||||
'seating.assigned_count': '{assigned} of {total} assigned',
|
||||
'seating.seat_position': 'Row {row}, Seat {col}',
|
||||
'seating.view_profile': 'View Profile',
|
||||
'seating.behavior_note': 'Behavior note',
|
||||
'seating.legend_assigned': 'Assigned',
|
||||
'seating.legend_empty': 'Empty',
|
||||
'seating.legend_behavior': 'Behavior note',
|
||||
|
||||
// School Library (EN)
|
||||
'library.title': 'School Library',
|
||||
'library.subtitle': 'Book catalog, checkouts, and reservations',
|
||||
'library.loading': 'Loading...',
|
||||
'library.add_book': 'Add Book',
|
||||
'library.add_book_desc': 'Add a new book to the library',
|
||||
'library.book_added': 'Book added successfully',
|
||||
'library.error_adding_book': 'Error adding book',
|
||||
'library.catalog': 'Catalog',
|
||||
'library.checkouts': 'Checkouts',
|
||||
'library.overdue_tab': 'Overdue',
|
||||
'library.reservations': 'Reservations',
|
||||
'library.statistics': 'Statistics',
|
||||
'library.search_placeholder': 'Search by title, author, ISBN, or category...',
|
||||
'library.category': 'Category',
|
||||
'library.availability': 'Availability',
|
||||
'library.reading_level': 'Reading Level',
|
||||
'library.all_categories': 'All Categories',
|
||||
'library.all': 'All',
|
||||
'library.available': 'Available',
|
||||
'library.checked_out': 'Checked Out',
|
||||
'library.unavailable': 'Unavailable',
|
||||
'library.all_levels': 'All Levels',
|
||||
'library.level_elementary': 'Elementary',
|
||||
'library.level_middle': 'Middle',
|
||||
'library.level_high': 'High',
|
||||
'library.level_advanced': 'Advanced',
|
||||
'library.copies_available': 'copies available',
|
||||
'library.no_books': 'No books found',
|
||||
'library.add_first_book': 'Add your first book',
|
||||
'library.checkout': 'Checkout',
|
||||
'library.reserve': 'Reserve',
|
||||
'library.active_checkouts': 'Active Checkouts',
|
||||
'library.new_checkout': 'New Checkout',
|
||||
'library.no_active_checkouts': 'No active checkouts',
|
||||
'library.return_history': 'Return History',
|
||||
'library.overdue_books': 'Overdue Books',
|
||||
'library.no_overdue': 'No overdue books!',
|
||||
'library.days_overdue': 'days overdue',
|
||||
'library.fine_estimate': 'Estimated fine',
|
||||
'library.return': 'Return',
|
||||
'library.renew': 'Renew',
|
||||
'library.renewed': 'renewed',
|
||||
'library.renewal_success': 'Checkout renewed successfully',
|
||||
'library.error_renewal': 'Error renewing checkout',
|
||||
'library.checkout_success': 'Book checked out successfully',
|
||||
'library.error_checkout': 'Error checking out book',
|
||||
'library.return_success': 'Book returned successfully',
|
||||
'library.error_return': 'Error returning book',
|
||||
'library.reservation_success': 'Book reserved successfully',
|
||||
'library.error_reservation': 'Error reserving book',
|
||||
'library.reservation_cancelled': 'Reservation cancelled',
|
||||
'library.error_cancel_reservation': 'Error cancelling reservation',
|
||||
'library.no_student_selected': 'No student selected',
|
||||
'library.no_reservations': 'No reservations',
|
||||
'library.available_now': 'Available now',
|
||||
'library.queue_position': 'Queue position',
|
||||
'library.reserved_on': 'Reserved on',
|
||||
'library.cancel': 'Cancel',
|
||||
'library.total_books': 'Total Books',
|
||||
'library.total_copies': 'Total Copies',
|
||||
'library.available_copies': 'Available',
|
||||
'library.checked_out_count': 'Checked Out',
|
||||
'library.overdue': 'Overdue',
|
||||
'library.overdue_rate': 'Overdue Rate',
|
||||
'library.popular_books': 'Popular Books',
|
||||
'library.category_distribution': 'Category Distribution',
|
||||
'library.checkout_trends': 'Checkout Trends',
|
||||
'library.no_data': 'No data available',
|
||||
'library.book_title': 'Title',
|
||||
'library.author': 'Author',
|
||||
'library.isbn': 'ISBN',
|
||||
'library.publisher': 'Publisher',
|
||||
'library.publish_year': 'Publish Year',
|
||||
'library.total_copies_field': 'Total Copies',
|
||||
'library.location': 'Location',
|
||||
'library.description': 'Description',
|
||||
'library.student': 'Student',
|
||||
'library.due_date': 'Due Date',
|
||||
'library.checkout_date': 'Checkout Date',
|
||||
'library.condition': 'Condition',
|
||||
'library.condition_excellent': 'Excellent',
|
||||
'library.condition_good': 'Good',
|
||||
'library.condition_fair': 'Fair',
|
||||
'library.condition_poor': 'Poor',
|
||||
'library.notes': 'Notes',
|
||||
'library.notes_placeholder': 'Optional notes...',
|
||||
'library.checkout_book': 'Checkout Book',
|
||||
'library.checkout_desc': 'Checkout a book for a student',
|
||||
'library.select_book': 'Select Book',
|
||||
'library.select_student': 'Select Student',
|
||||
'library.default_14_days': 'Default: 14 days from today',
|
||||
'library.return_book': 'Return Book',
|
||||
'library.return_condition': 'Return Condition',
|
||||
'library.fine_amount': 'Fine Amount',
|
||||
'library.overdue_fine_note': 'This book is overdue. Please check the fine amount.',
|
||||
'library.checkout_receipt': 'Checkout Receipt',
|
||||
'library.confirm_delete_book': 'Are you sure you want to delete this book?',
|
||||
'library.book_deleted': 'Book deleted',
|
||||
'library.error_delete_book': 'Error deleting book',
|
||||
'library.currently_checked_out': 'Currently Checked Out',
|
||||
'library.reservation_queue': 'Reservation Queue',
|
||||
'nav.school_library': 'Library',
|
||||
'nav.school-library': 'Library',
|
||||
'nav.seating_chart': 'Seating Chart',
|
||||
'nav.seating-chart': 'Seating Chart',
|
||||
|
||||
// Report Card
|
||||
'nav.report_cards': 'Report Cards',
|
||||
'nav.report-cards': 'Report Cards',
|
||||
'report_card.title': 'Report Card Generator',
|
||||
'report_card.subtitle': 'Create, edit, and manage report cards',
|
||||
'report_card.total_reports': 'Total Reports',
|
||||
'report_card.drafts': 'Drafts',
|
||||
'report_card.in_review': 'In Review',
|
||||
'report_card.published': 'Published',
|
||||
'report_card.search_placeholder': 'Search report cards...',
|
||||
'report_card.filter_class': 'Class',
|
||||
'report_card.filter_status': 'Status',
|
||||
'report_card.filter_period': 'Period',
|
||||
'report_card.all_classes': 'All Classes',
|
||||
'report_card.all_statuses': 'All Statuses',
|
||||
'report_card.all_periods': 'All Periods',
|
||||
'report_card.create': 'Create Report Card',
|
||||
'report_card.batch_generate': 'Batch Generate',
|
||||
'report_card.manage_templates': 'Manage Templates',
|
||||
'report_card.selected': 'selected',
|
||||
'report_card.publish': 'Publish',
|
||||
'report_card.archive': 'Archive',
|
||||
'report_card.no_reports': 'No report cards found',
|
||||
'report_card.create_first': 'Create first report card',
|
||||
'report_card.more': 'more',
|
||||
'report_card.with_grades': 'With Grades',
|
||||
'report_card.status_draft': 'Draft',
|
||||
'report_card.status_review': 'In Review',
|
||||
'report_card.status_published': 'Published',
|
||||
'report_card.status_archived': 'Archived',
|
||||
'report_card.status_final': 'Final',
|
||||
'report_card.submit_review': 'Submit for Review',
|
||||
'report_card.finalize': 'Finalize',
|
||||
'report_card.export_pdf': 'Export PDF',
|
||||
'report_card.edit_title': 'Edit Report Card',
|
||||
'report_card.student_info': 'Student Information',
|
||||
'report_card.student_name': 'Name',
|
||||
'report_card.class_name': 'Class',
|
||||
'report_card.school_year': 'School Year',
|
||||
'report_card.period': 'Period',
|
||||
'report_card.date': 'Date',
|
||||
'report_card.subject_grades': 'Subject Grades',
|
||||
'report_card.subject': 'Subject',
|
||||
'report_card.grade': 'Grade',
|
||||
'report_card.label': 'Label',
|
||||
'report_card.status_col': 'Status',
|
||||
'report_card.evaluation': 'Evaluation',
|
||||
'report_card.competency_sections': 'Competency Sections',
|
||||
'report_card.section': 'Section',
|
||||
'report_card.no_sections': 'No competency sections available',
|
||||
'report_card.teacher_comments': 'Teacher Comments',
|
||||
'report_card.comments_placeholder': 'Enter comments about the student...',
|
||||
'report_card.overall_assessment': 'Overall Assessment',
|
||||
'report_card.assessment_placeholder': 'Enter overall assessment...',
|
||||
'report_card.competency_radar': 'Competency Radar',
|
||||
'report_card.competency_level': 'Competency Level',
|
||||
'report_card.attendance_summary': 'Attendance',
|
||||
'report_card.present': 'Present',
|
||||
'report_card.absent': 'Absent',
|
||||
'report_card.excused': 'Excused',
|
||||
'report_card.late': 'Late',
|
||||
'report_card.actions': 'Actions',
|
||||
'report_card.preview_title': 'Report Card Preview',
|
||||
'report_card.report_card_title': 'Report Card',
|
||||
'report_card.competency_overview': 'Competency Overview',
|
||||
'report_card.competency_details': 'Competency Details',
|
||||
'report_card.teacher_signature': 'Teacher Signature',
|
||||
'report_card.parent_signature': 'Parent Signature',
|
||||
'report_card.grading_scale': 'Grading Scale (1-6)',
|
||||
'report_card.create_title': 'Create New Report Card',
|
||||
'report_card.create_desc': 'Create a new report card for a student.',
|
||||
'report_card.select_class': 'Select class',
|
||||
'report_card.select_student': 'Select student',
|
||||
'report_card.select_year': 'Select school year',
|
||||
'report_card.template': 'Template',
|
||||
'report_card.select_template': 'Select template',
|
||||
'report_card.no_template': 'No template',
|
||||
'report_card.include_grades': 'Include grades',
|
||||
'report_card.batch_generate_title': 'Batch Generate Report Cards',
|
||||
'report_card.batch_generate_desc': 'Generate report cards for all students in a class.',
|
||||
'report_card.generate': 'Generate',
|
||||
'report_card.template_management': 'Template Management',
|
||||
'report_card.template_desc': 'Manage and create report card templates.',
|
||||
'report_card.existing_templates': 'Existing Templates',
|
||||
'report_card.default': 'Default',
|
||||
'report_card.template_name': 'Template Name',
|
||||
'report_card.template_name_placeholder': 'e.g. Standard Elementary Report',
|
||||
'report_card.template_description': 'Description',
|
||||
'report_card.template_desc_placeholder': 'Brief description of the template',
|
||||
'report_card.layout': 'Layout',
|
||||
'report_card.layout_default': 'Default',
|
||||
'report_card.layout_detailed': 'Detailed',
|
||||
'report_card.layout_compact': 'Compact',
|
||||
'report_card.set_as_default': 'Set as default',
|
||||
'report_card.create_template': 'Create Template',
|
||||
'report_card.delete_confirm_title': 'Delete Report Card',
|
||||
'report_card.delete_confirm_desc': 'Are you sure you want to delete this report card? This action cannot be undone.',
|
||||
'report_card.created': 'Report card created successfully',
|
||||
'report_card.create_error': 'Error creating report card',
|
||||
'report_card.batch_generated': '{count} report cards generated',
|
||||
'report_card.batch_error': 'Error generating batch report cards',
|
||||
'report_card.saved': 'Report card saved',
|
||||
'report_card.save_error': 'Error saving',
|
||||
'report_card.status_updated': 'Status updated',
|
||||
'report_card.status_error': 'Error updating status',
|
||||
'report_card.deleted': 'Report card deleted',
|
||||
'report_card.delete_error': 'Error deleting',
|
||||
'report_card.bulk_action_success': 'Bulk action successful',
|
||||
'report_card.bulk_action_error': 'Error performing bulk action',
|
||||
'report_card.export_success': 'Export successful',
|
||||
'report_card.export_error': 'Error exporting',
|
||||
'report_card.load_error': 'Error loading report cards',
|
||||
'report_card.template_created': 'Template created',
|
||||
'report_card.template_error': 'Error creating template',
|
||||
'report_card.section_header': 'Header',
|
||||
'report_card.section_grades': 'Grades',
|
||||
'report_card.section_competencies': 'Competencies',
|
||||
'report_card.section_comments': 'Comments',
|
||||
'report_card.section_attendance': 'Attendance',
|
||||
'report_card.section_signature': 'Signature',
|
||||
};
|
||||
|
||||
const translations: Record<string, TranslationDict> = { de, en };
|
||||
|
||||
+4
-1
@@ -44,7 +44,10 @@ export type ViewName =
|
||||
| 'tablet-grading'
|
||||
| 'exam-calendar'
|
||||
| 'student-achievements'
|
||||
| 'student-study-planner';
|
||||
| 'student-study-planner'
|
||||
| 'seating-chart'
|
||||
| 'school-library'
|
||||
| 'report-cards';
|
||||
|
||||
export interface CurrentUser {
|
||||
id: string;
|
||||
|
||||
Reference in new issue
Block a user