Features: - Rich text toolbar for notebook pages (Bold, Italic, Underline, Headings, Lists) - Drawing canvas integration in notebook pages (toggle drawing mode) - Notebook PDF export (client-side print with print CSS) - Page background rendering (lined, grid, blank, dotted, music, calligraphy) - Page thumbnails in sidebar with bookmark indicators - Auto-save with 3-second debounce - Notebook sharing with classes (isPublic toggle) - Notebook duplication (copy with all pages) - 6 pre-built notebook templates (Math, Deutsch, Englisch, Kunst, Musik, Sachkunde) - Shared notebooks tab (view other teachers' shared notebooks) - Templates tab with one-click creation - Keyboard shortcuts (Cmd+N, Cmd+D, Cmd+Shift+N, Cmd+E, Cmd+Shift+A, Cmd+.) - Student notebook access (role-based UI) - Role indicator in notebook header (Teacher/Student) - Onboarding tour expanded to 14 steps - Dashboard improvements (Today's Schedule, Paper Saved counter, Recent Activity) - Classes view improvements (student/subject counts, type badges) - Competence flower improvements (shadow, shimmer, mastery summary) - Progress entries improvements (mastery distribution chart) - Global CSS improvements (dark scrollbar, focus-visible, card-hover-glow) - 60+ new i18n keys (German/English) Bug Fixes: - Notebook creation not refreshing list (fixed by calling loadData after creation) - Missing BarChart3 import in progress-entries-view - Escaped quotes in JSX className attributes
3951 lines
183 KiB
TypeScript
3951 lines
183 KiB
TypeScript
// CompetenceTrack — i18n (German + English)
|
||
// Simple translation system: t(key) returns the string for the current locale
|
||
|
||
type TranslationDict = Record<string, string>;
|
||
|
||
const de: TranslationDict = {
|
||
// App branding
|
||
'app.name': 'CompetenceTrack',
|
||
'app.subtitle': 'Freie Kompetenz- & Benotungsplattform für Schulen',
|
||
'app.tagline': 'Open-Source Software für kompetenzorientierte Beurteilung',
|
||
|
||
// Navigation
|
||
'nav.dashboard': 'Dashboard',
|
||
'nav.classes': 'Klassen & Schüler',
|
||
'nav.competencies': 'Kompetenzraster',
|
||
'nav.progress': 'Lernfortschritt',
|
||
'nav.flower': 'Kompetenzblume',
|
||
'nav.assessments': 'Leistungsüberprüfungen',
|
||
'nav.grading': 'Benotung',
|
||
'nav.reports': 'Berichte',
|
||
'nav.student-detail': 'Schülerprofil',
|
||
|
||
// Common actions
|
||
'action.save': 'Speichern',
|
||
'action.cancel': 'Abbrechen',
|
||
'action.delete': 'Löschen',
|
||
'action.edit': 'Bearbeiten',
|
||
'action.add': 'Hinzufügen',
|
||
'action.create': 'Erstellen',
|
||
'action.search': 'Suchen',
|
||
'action.filter': 'Filtern',
|
||
'action.export': 'Exportieren',
|
||
'action.close': 'Schließen',
|
||
'action.back': 'Zurück',
|
||
'action.next': 'Weiter',
|
||
'action.confirm': 'Bestätigen',
|
||
'action.refresh': 'Aktualisieren',
|
||
'action.download': 'Herunterladen',
|
||
'action.preview': 'Vorschau',
|
||
'action.assign': 'Zuweisen',
|
||
'action.select': 'Auswählen',
|
||
'action.view': 'Anzeigen',
|
||
'action.print': 'Drucken',
|
||
'action.generate': 'Erzeugen',
|
||
'action.finalize': 'Finalisieren',
|
||
'action.override': 'Überschreiben',
|
||
'action.log_entry': 'Eintrag loggen',
|
||
'action.create_assessment': 'Überprüfung erstellen',
|
||
'action.generate_report': 'Bericht erstellen',
|
||
|
||
// Auth
|
||
'auth.login': 'Anmelden',
|
||
'auth.register': 'Registrieren',
|
||
'auth.logout': 'Abmelden',
|
||
'auth.email': 'E-Mail',
|
||
'auth.password': 'Passwort',
|
||
'auth.firstName': 'Vorname',
|
||
'auth.lastName': 'Nachname',
|
||
'auth.login_title': 'Bei CompetenceTrack anmelden',
|
||
'auth.register_title': 'Neues Konto erstellen',
|
||
'auth.login_subtitle': 'Geben Sie Ihre Zugangsdaten ein',
|
||
'auth.register_subtitle': 'Erstellen Sie ein kostenloses Konto',
|
||
'auth.no_account': 'Noch kein Konto?',
|
||
'auth.has_account': 'Bereits ein Konto?',
|
||
'auth.error.invalid_credentials': 'Ungültige Zugangsdaten',
|
||
'auth.error.email_exists': 'E-Mail bereits registriert',
|
||
'auth.error.generic': 'Ein Fehler ist aufgetreten',
|
||
'auth.welcome_back': 'Willkommen zurück',
|
||
|
||
// Form labels
|
||
'label.name': 'Name',
|
||
'label.date': 'Datum',
|
||
'label.note': 'Bemerkung',
|
||
'label.score': 'Punktzahl',
|
||
'label.level': 'Niveau',
|
||
'label.subject': 'Fach',
|
||
'label.class': 'Klasse',
|
||
'label.grade': 'Jahrgangsstufe',
|
||
'label.type': 'Typ',
|
||
'label.weight': 'Gewichtung',
|
||
'label.max_score': 'Maximale Punktzahl',
|
||
'label.description': 'Beschreibung',
|
||
'label.school_type': 'Schulform',
|
||
'label.period': 'Zeitraum',
|
||
'label.school_year': 'Schuljahr',
|
||
'label.status': 'Status',
|
||
'label.category': 'Kategorie',
|
||
'label.competency': 'Kompetenz',
|
||
'label.mastery': 'Kompetenzniveau',
|
||
'label.weight_percent': 'Gewichtung (%)',
|
||
'label.source_type': 'Quelltyp',
|
||
'label.target': 'Bezug',
|
||
'label.scale_definition': 'Notenskala',
|
||
'label.scheme_type': 'Notenschema-Typ',
|
||
'label.student_count': 'Schüleranzahl',
|
||
'label.external_id': 'Externe ID',
|
||
'label.date_of_birth': 'Geburtsdatum',
|
||
'label.first_name': 'Vorname',
|
||
'label.last_name': 'Nachname',
|
||
|
||
// Status labels
|
||
'status.active': 'Aktiv',
|
||
'status.draft': 'Entwurf',
|
||
'status.final': 'Final',
|
||
'status.pending': 'Ausstehend',
|
||
'status.processing': 'In Bearbeitung',
|
||
'status.completed': 'Erledigt',
|
||
'status.failed': 'Fehlgeschlagen',
|
||
'status.enrolled': 'Eingeschult',
|
||
'status.not_yet_assessed': 'Noch nicht beurteilt',
|
||
|
||
// Subject names
|
||
'subject.math': 'Mathematik',
|
||
'subject.german': 'Deutsch',
|
||
'subject.english': 'Englisch',
|
||
'subject.science': 'Naturwissenschaften',
|
||
'subject.art': 'Kunst',
|
||
'subject.music': 'Musik',
|
||
'subject.physical_ed': 'Sport',
|
||
'subject.history': 'Geschichte',
|
||
'subject.geography': 'Geographie',
|
||
'subject.religion': 'Religion',
|
||
|
||
// School types
|
||
'school_type.elementary': 'Grundschule',
|
||
'school_type.middle': 'Mittelschule',
|
||
'school_type.gymnasium': 'Gymnasium',
|
||
'school_type.other': 'Andere',
|
||
|
||
// Mastery levels
|
||
'mastery.1': 'noch nicht erreicht',
|
||
'mastery.2': 'entwickelt sich',
|
||
'mastery.3': 'kompetent',
|
||
'mastery.4': 'weit entwickelt',
|
||
'mastery.level_1': 'Niveau 1 — noch nicht erreicht',
|
||
'mastery.level_2': 'Niveau 2 — entwickelt sich',
|
||
'mastery.level_3': 'Niveau 3 — kompetent',
|
||
'mastery.level_4': 'Niveau 4 — weit entwickelt',
|
||
|
||
// Assessment types
|
||
'assessment_type.test': 'Klassenarbeit',
|
||
'assessment_type.oral': 'Mündliche Prüfung',
|
||
'assessment_type.project': 'Projekt',
|
||
'assessment_type.homework': 'Hausaufgabe',
|
||
'assessment_type.other': 'Sonstige',
|
||
|
||
// Grading scheme types
|
||
'grading_type.numeric': 'Ziffernnote',
|
||
'grading_type.verbal': 'Verbale Beurteilung',
|
||
'grading_type.combined': 'Kombiniert',
|
||
|
||
// Grading weight source types
|
||
'weight_source.learning_progress': 'Lernfortschritt',
|
||
'weight_source.assessment': 'Leistungsüberprüfung',
|
||
|
||
// Dashboard
|
||
'dashboard.welcome': 'Willkommen',
|
||
'dashboard.overview': 'Übersicht',
|
||
'dashboard.classes': 'Meine Klassen',
|
||
'dashboard.recent_activity': 'Letzte Aktivitäten',
|
||
'dashboard.students_attention': 'Schüler mit Förderbedarf',
|
||
'dashboard.stats': 'Statistik',
|
||
'dashboard.total_students': 'Schüler insgesamt',
|
||
'dashboard.total_entries': 'Einträge insgesamt',
|
||
'dashboard.total_assessments': 'Überprüfungen insgesamt',
|
||
'dashboard.total_classes': 'Klassen insgesamt',
|
||
'dashboard.total_reports': 'Berichte insgesamt',
|
||
'dashboard.quick_actions': 'Schnellzugriff',
|
||
'dashboard.quick_actions_subtitle': 'Häufige Aktionen direkt erreichbar',
|
||
'dashboard.quick_action_attendance': 'Anwesenheit',
|
||
'dashboard.quick_action_attendance_desc': 'Anwesenheitssitzung für eine Klasse erfassen.',
|
||
'dashboard.quick_action_assessment_desc': 'Neue Leistungsüberprüfung anlegen.',
|
||
'dashboard.quick_action_report_desc': 'Zeugnis- oder Entwicklungsbericht erstellen.',
|
||
'dashboard.quick_action_parent': 'Elterngespräch',
|
||
'dashboard.quick_action_parent_desc': 'Nachricht an Eltern verfassen oder beantworten.',
|
||
'dashboard.no_classes': 'Keine Klassen vorhanden. Erstellen Sie eine Klasse, um zu beginnen.',
|
||
'dashboard.no_recent_activity': 'Keine aktuellen Aktivitäten.',
|
||
'dashboard.no_students_attention': 'Alle Schüler sind auf einem guten Weg!',
|
||
'dashboard.student_name': 'Schüler',
|
||
'dashboard.average_mastery': 'Durchschnittsniveau',
|
||
'dashboard.class_name': 'Klasse',
|
||
'dashboard.competency_name': 'Kompetenz',
|
||
'dashboard.entry_date': 'Datum',
|
||
'dashboard.mastery_level': 'Niveau',
|
||
'dashboard.teacher': 'Lehrkraft',
|
||
'dashboard.this_week': 'Diese Woche',
|
||
'dashboard.all_time': 'Gesamt',
|
||
|
||
// Classes view
|
||
'classes.title': 'Klassen & Schüler',
|
||
'classes.select_class': 'Wählen Sie eine Klasse',
|
||
'classes.class_details': 'Klassendetails',
|
||
'classes.student_roster': 'Schülerliste',
|
||
'classes.add_student': 'Schüler hinzufügen',
|
||
'classes.add_student_title': 'Neuen Schüler hinzufügen',
|
||
'classes.enroll_student': 'Schüler einschulen',
|
||
'classes.enroll_student_title': 'Bestehenden Schüler einschulen',
|
||
'classes.assign_template': 'Kompetenzraster zuweisen',
|
||
'classes.create_class': 'Neue Klasse erstellen',
|
||
'classes.no_students': 'Keine Schüler in dieser Klasse.',
|
||
'classes.no_classes': 'Keine Klassen vorhanden.',
|
||
'classes.enrollment_status': 'Einschulungsstatus',
|
||
'classes.entry_count': 'Einträge',
|
||
'classes.teacher_list': 'Lehrkräfte',
|
||
'classes.homeroom_teacher': 'Klassenleitung',
|
||
'classes.subject_teacher': 'Fachlehrkraft',
|
||
'classes.grade_level': 'Jahrgangsstufe',
|
||
'classes.school_year_label': 'Schuljahr',
|
||
|
||
// Competency grid view
|
||
'competencies.title': 'Kompetenzraster',
|
||
'competencies.template_library': 'Raster-Bibliothek',
|
||
'competencies.template_details': 'Raster-Details',
|
||
'competencies.assign_to_class': 'Klasse zuweisen',
|
||
'competencies.categories': 'Kategorien',
|
||
'competencies.competencies': 'Kompetenzen',
|
||
'competencies.mastery_levels': 'Kompetenzniveaus',
|
||
'competencies.no_templates': 'Keine Kompetenzraster vorhanden.',
|
||
'competencies.no_categories': 'Keine Kategorien definiert.',
|
||
'competencies.grid_structure': 'Rasterstruktur',
|
||
'competencies.assignments': 'Zuweisungen',
|
||
'competencies.quick_guide_title': 'Schnellübersicht',
|
||
'competencies.quick_guide_subtitle': 'Überblick über Ihre Kompetenzraster-Bibliothek',
|
||
'competencies.total_templates': 'Raster',
|
||
'competencies.total_categories': 'Kategorien',
|
||
'competencies.total_competencies': 'Kompetenzen',
|
||
'competencies.by_subject_breakdown': 'Kompetenzen nach Fach',
|
||
'competencies.no_subjects_yet': 'Noch keine Fächer zugewiesen.',
|
||
'competencies.recent_templates': 'Raster-Bibliothek',
|
||
'competencies.no_recent_templates': 'Noch keine Raster angelegt.',
|
||
'competencies.no_subject': 'Ohne Fach',
|
||
'competencies.filter_school_type': 'Schulform',
|
||
'competencies.filter_subject': 'Fach',
|
||
'competencies.filter_grade': 'Jahrgangsstufe',
|
||
'competencies.global_template': 'Globaler Raster',
|
||
'competencies.school_template': 'Schulraster',
|
||
'competencies.assignment_exists': 'Raster bereits zugewiesen',
|
||
'competencies.assignment_success': 'Raster erfolgreich zugewiesen',
|
||
'competencies.create_template': 'Neues Raster erstellen',
|
||
'competencies.version': 'Version',
|
||
'competencies.grade_range': 'Jahrgangsstufe {min}–{max}',
|
||
'competencies.used_in_classes': 'Verwendet in {count} Klasse(n)',
|
||
|
||
// Progress entries view
|
||
'progress.title': 'Lernfortschritt',
|
||
'progress.select_class': 'Klasse auswählen',
|
||
'progress.select_student': 'Schüler auswählen',
|
||
'progress.log_entry': 'Eintrag loggen',
|
||
'progress.log_entry_title': 'Neuen Lernfortschritt loggen',
|
||
'progress.timeline': 'Zeitleiste',
|
||
'progress.student_timeline': 'Schüler-Zeitleiste',
|
||
'progress.no_entries': 'Keine Einträge vorhanden.',
|
||
'progress.entry_saved': 'Eintrag gespeichert',
|
||
'progress.bulk_saved': 'Einträge gespeichert',
|
||
'progress.select_competency': 'Kompetenz auswählen',
|
||
'progress.mastery_level': 'Kompetenzniveau',
|
||
'progress.note_optional': 'Bemerkung (optional)',
|
||
'progress.date': 'Datum',
|
||
'progress.category': 'Kategorie',
|
||
'progress.competency': 'Kompetenz',
|
||
'progress.competency_code': 'Code',
|
||
'progress.no_class_selected': 'Wählen Sie eine Klasse, um die Schülerliste zu sehen.',
|
||
'progress.no_students': 'Keine Schüler in dieser Klasse.',
|
||
'progress.no_template_assigned': 'Kein Kompetenzraster für dieses Fach zugewiesen. Weisen Sie zuerst ein Raster zu.',
|
||
'progress.select_subject': 'Fach auswählen',
|
||
'progress.empty_step_title': 'Lernfortschritte erfassen',
|
||
'progress.empty_step_subtitle': 'Wählen Sie eine Klasse und ein Fach, um individuelle Lernfortschritte zu dokumentieren.',
|
||
'progress.how_it_works_title': 'So funktioniert\u2019s',
|
||
'progress.how_it_works_subtitle': 'In drei Schritten zum ersten Lernfortschritt',
|
||
'progress.empty_step1_title': 'Klasse wählen',
|
||
'progress.empty_step1_desc': 'Wählen Sie oben eine Klasse aus dem Dropdown.',
|
||
'progress.empty_step2_title': 'Fach wählen',
|
||
'progress.empty_step2_desc': 'Wählen Sie das Fach, dessen Kompetenzen Sie bewerten möchten.',
|
||
'progress.empty_step3_title': 'Fortschritt eintragen',
|
||
'progress.empty_step3_desc': 'Klicken Sie auf eine Kompetenz und tragen Sie das Niveau (1–4) ein.',
|
||
|
||
// Competence flower view
|
||
'flower.title': 'Kompetenzblume',
|
||
'flower.select_class': 'Klasse auswählen',
|
||
'flower.select_student': 'Schüler auswählen',
|
||
'flower.select_subject': 'Fach auswählen',
|
||
'flower.radar_chart': 'Kompetenzblume',
|
||
'flower.breakdown': 'Detailübersicht',
|
||
'flower.category': 'Kategorie',
|
||
'flower.average_mastery': 'Durchschnittsniveau',
|
||
'flower.assessed': 'Beurteilt',
|
||
'flower.total': 'Gesamt',
|
||
'flower.export_chart': 'Diagramm exportieren',
|
||
'flower.no_data': 'Wählen Sie Klasse, Fach und Schüler, um die Kompetenzblume zu sehen.',
|
||
'flower.no_progress': 'Keine Lernfortschrittsdaten für diesen Schüler vorhanden.',
|
||
'flower.petal_legend': 'Jede Achse zeigt den Durchschnitt der Kompetenzniveaus pro Kategorie',
|
||
|
||
// Assessments view
|
||
'assessments.title': 'Leistungsüberprüfungen',
|
||
'assessments.list': 'Überprüfungen',
|
||
'assessments.create': 'Neue Überprüfung erstellen',
|
||
'assessments.create_title': 'Neue Leistungsüberprüfung erstellen',
|
||
'assessments.bulk_grading': 'Bulk-Benotung',
|
||
'assessments.bulk_grading_title': 'Benotung für {title}',
|
||
'assessments.select_class': 'Klasse auswählen',
|
||
'assessments.select_subject': 'Fach auswählen',
|
||
'assessments.no_assessments': 'Keine Leistungsüberprüfungen vorhanden.',
|
||
'assessments.results_count': 'Ergebnisse',
|
||
'assessments.linked_competencies': 'Verknüpfte Kompetenzen',
|
||
'assessments.enter_scores': 'Punkte eingeben',
|
||
'assessments.scores_saved': 'Punkte gespeichert',
|
||
'assessments.no_students': 'Keine Schüler vorhanden.',
|
||
'assessments.assessment_type': 'Überprüfungstyp',
|
||
'assessments.max_score': 'Maximale Punktzahl',
|
||
'assessments.weight': 'Gewichtung',
|
||
'assessments.link_competency': 'Kompetenz verknüpfen',
|
||
|
||
// Grading view
|
||
'grading.title': 'Benotung',
|
||
'grading.schemes': 'Notenschemata',
|
||
'grading.weight_rules': 'Gewichtung',
|
||
'grading.computed_grades': 'Berechnete Noten',
|
||
'grading.breakdown': 'Notenaufschlüsselung',
|
||
'grading.create_scheme': 'Notenschema erstellen',
|
||
'grading.create_scheme_title': 'Neues Notenschema erstellen',
|
||
'grading.add_weight_rule': 'Gewichtung hinzufügen',
|
||
'grading.override_grade': 'Note überschreiben',
|
||
'grading.override_reason': 'Begründung der Überschreibung',
|
||
'grading.compute_grades': 'Noten berechnen',
|
||
'grading.grades_computed': 'Noten berechnet',
|
||
'grading.no_schemes': 'Keine Notenschemata vorhanden.',
|
||
'grading.no_grades': 'Noch keine Noten berechnet.',
|
||
'grading.select_class': 'Klasse auswählen',
|
||
'grading.select_subject': 'Fach auswählen',
|
||
'grading.select_scheme': 'Schema auswählen',
|
||
'grading.student': 'Schüler',
|
||
'grading.computed_value': 'Berechneter Wert',
|
||
'grading.finalized': 'Finalisiert',
|
||
'grading.overridden': 'Überschrieben',
|
||
'grading.period': 'Halbjahr',
|
||
|
||
// Reports view
|
||
'reports.title': 'Berichte',
|
||
'reports.generate': 'Bericht erstellen',
|
||
'reports.generate_title': 'Neuen Bericht erstellen',
|
||
'reports.preview': 'Berichtsvorschau',
|
||
'reports.export_pdf': 'Als PDF exportieren',
|
||
'reports.bulk_generate': 'Bulk-Erstellung für Klasse',
|
||
'reports.select_student': 'Schüler auswählen',
|
||
'reports.select_class': 'Klasse auswählen',
|
||
'reports.draft_reports': 'Entwurfsberichte',
|
||
'reports.final_reports': 'Finalisierte Berichte',
|
||
'reports.no_reports': 'Keine Berichte vorhanden.',
|
||
'reports.sections': 'Berichtsteile',
|
||
'reports.generated_by': 'Erstellt von',
|
||
'reports.generated_at': 'Erstellt am',
|
||
'reports.includes_grades': 'Mit Noten',
|
||
'reports.finalize_report': 'Bericht finalisieren',
|
||
'reports.edit_section': 'Berichtsteil bearbeiten',
|
||
'reports.section_text': 'Text',
|
||
'reports.category_name': 'Kategorie',
|
||
'reports.report_saved': 'Bericht gespeichert',
|
||
'reports.report_finalized': 'Bericht finalisiert',
|
||
'reports.select_period': 'Zeitraum auswählen',
|
||
'reports.empty_subtitle': 'Wählen Sie eine Klasse aus, um Berichte zu erstellen und zu verwalten.',
|
||
|
||
// Empty states
|
||
'empty.no_data': 'Keine Daten vorhanden.',
|
||
'empty.no_results': 'Keine Ergebnisse.',
|
||
'empty.no_items': 'Keine Einträge.',
|
||
'empty.add_first': 'Fügen Sie den ersten Eintrag hinzu, um zu beginnen.',
|
||
'empty.select_class': 'Wählen Sie eine Klasse aus der Navigation.',
|
||
'empty.loading': 'Laden...',
|
||
|
||
// Error messages
|
||
'error.generic': 'Ein Fehler ist aufgetreten.',
|
||
'error.network': 'Netzwerkfehler. Bitte versuchen Sie es erneut.',
|
||
'error.not_authenticated': 'Sie sind nicht angemeldet.',
|
||
'error.forbidden': 'Sie haben keine Berechtigung für diese Aktion.',
|
||
'error.not_found': 'Die angeforderte Ressource wurde nicht gefunden.',
|
||
'error.validation': 'Überprüfen Sie Ihre Eingaben.',
|
||
'error.unexpected': 'Ein unerwarteter Fehler ist aufgetreten.',
|
||
|
||
// Toast messages
|
||
'toast.saved': 'Gespeichert',
|
||
'toast.created': 'Erstellt',
|
||
'toast.deleted': 'Gelöscht',
|
||
'toast.updated': 'Aktualisiert',
|
||
'toast.error': 'Fehler',
|
||
'toast.success': 'Erfolgreich',
|
||
'toast.info': 'Information',
|
||
'toast.warning': 'Warnung',
|
||
|
||
// Theme
|
||
'theme.light': 'Hell',
|
||
'theme.dark': 'Dunkel',
|
||
'theme.system': 'System',
|
||
'theme.toggle': 'Farbschema ändern',
|
||
|
||
// Language
|
||
'language.de': 'Deutsch',
|
||
'language.en': 'Englisch',
|
||
'language.toggle': 'Sprache ändern',
|
||
|
||
// Role
|
||
'role.teacher': 'Lehrkraft',
|
||
'role.school_admin': 'Schuladmin',
|
||
'role.super_admin': 'Superadmin',
|
||
|
||
// Assessment bulk grading
|
||
'assessments.save_all': 'Alle speichern',
|
||
'assessments.score_invalid': 'Punktzahl muss zwischen 0 und {max} liegen',
|
||
'assessments.score_out_of_range': 'Außerhalb des Bereichs',
|
||
'assessments.mastery_buttons': 'Kompetenzniveau',
|
||
'assessments.students_count': '{count} Schüler',
|
||
'assessments.validation_error': 'Bitte überprüfen Sie die Eingaben',
|
||
|
||
// Grading enhancements
|
||
'grading.scale_reference': 'Notenskala-Referenz',
|
||
'grading.grade_good': 'Gut',
|
||
'grading.grade_ok': 'Befriedigend',
|
||
'grading.grade_needs_improvement': 'Verbesserungsbedarf',
|
||
'grading.override_title': 'Note überschreiben',
|
||
'grading.override_student': 'Schüler',
|
||
'grading.override_computed': 'Berechnete Note',
|
||
'grading.override_new': 'Neue Note',
|
||
'grading.override_justification': 'Begründung (Pflicht)',
|
||
'grading.override_justification_required': 'Begründung ist erforderlich',
|
||
'grading.override_saved': 'Note überschrieben',
|
||
'grading.weight_breakdown': 'Gewichtungsaufschlüsselung',
|
||
'grading.weight_progress': 'Fortschritt',
|
||
|
||
// Report narrative generation
|
||
'reports.generating': 'Bericht wird erstellt...',
|
||
'reports.narrative_intro': 'Einleitung',
|
||
'reports.narrative_competency': 'Kompetenzbereich',
|
||
'reports.narrative_summary': 'Zusammenfassung',
|
||
'reports.download_pdf': 'Als PDF herunterladen',
|
||
'reports.pdf_coming_soon': 'PDF-Export wird in einer künftigen Version verfügbar sein.',
|
||
'reports.edit_sections': 'Abschnitte bearbeiten',
|
||
'reports.section_edited': 'Abschnitt aktualisiert',
|
||
'reports.generate_narrative': 'Berichtstext erzeugen',
|
||
'reports.includes_grades_label': 'Noten einbeziehen',
|
||
|
||
// Onboarding checklist
|
||
'onboarding.title': 'Erste Schritte',
|
||
'onboarding.subtitle': 'Follow these steps to set up CompetenceTrack',
|
||
'onboarding.step_create_class': 'Erstellen Sie Ihre erste Klasse',
|
||
'onboarding.step_assign_grid': 'Weisen Sie ein Kompetenzraster zu',
|
||
'onboarding.step_add_students': 'Fügen Sie Schüler hinzu',
|
||
'onboarding.step_log_entry': 'Loggen Sie Ihren ersten Eintrag',
|
||
'onboarding.step_create_class_desc': 'Erstellen Sie eine Klasse, um Schüler zu verwalten.',
|
||
'onboarding.step_assign_grid_desc': 'Weisen Sie ein Kompetenzraster zu, um Kompetenzen zu tracken.',
|
||
'onboarding.step_add_students_desc': 'Fügen Sie Schüler zu Ihrer Klasse hinzu.',
|
||
'onboarding.step_log_entry_desc': 'Erfassen Sie den Lernfortschritt eines Schülers.',
|
||
'onboarding.all_set': 'Sie sind bereit!',
|
||
'onboarding.all_set_desc': 'Sie haben alle Einrichtungsschritte abgeschlossen. Viel Erfolg!',
|
||
'onboarding.progress': '{completed} von {total} Schritten abgeschlossen',
|
||
'onboarding.go_to_classes': 'Zu den Klassen',
|
||
'onboarding.go_to_grids': 'Zu den Kompetenzrastern',
|
||
'onboarding.go_to_progress': 'Zum Lernfortschritt',
|
||
|
||
// Student profile
|
||
'student.profile': 'Schülerprofil',
|
||
'student.quick_stats': 'Schnellstatistik',
|
||
'student.total_entries': 'Einträge gesamt',
|
||
'student.avg_mastery': 'Durchschnittsniveau',
|
||
'student.recent_entries': 'Neueste Einträge',
|
||
'student.view_flower': 'Kompetenzblume anzeigen',
|
||
'student.class': 'Klasse',
|
||
'student.date_of_birth': 'Geburtsdatum',
|
||
|
||
// Template assignment flow
|
||
'classes.assign_template_title': 'Kompetenzraster zuweisen',
|
||
'classes.assign_step1': '1. Fach auswählen',
|
||
'classes.assign_step2': '2. Raster auswählen',
|
||
'classes.assign_step3': '3. Zuweisung bestätigen',
|
||
'classes.assign_filtered': 'Gefiltert nach Schulform und Jahrgangsstufe',
|
||
'classes.assign_confirm': 'Zuweisung bestätigen',
|
||
'classes.assign_review': 'Überprüfung',
|
||
'classes.assign_subject': 'Fach',
|
||
'classes.assign_no_templates': 'Keine passenden Raster gefunden.',
|
||
|
||
// Footer
|
||
'footer.copyright': 'CompetenceTrack — Freie Schulsoftware',
|
||
'footer.version': 'Version 1.0',
|
||
'footer.oss': 'Open Source',
|
||
'sidebar.eco_message': 'Papier sparen, Umwelt schutzen',
|
||
'dashboard.env_tip_title': 'Umwelttip',
|
||
'dashboard.env_tip_text': 'Digitale Kompetenznachweise sparen Papier und schutzen die Umwelt.',
|
||
'settings.demo_data_title': 'Demo-Daten',
|
||
'settings.demo_data_desc': 'Demo-Daten werden automatisch erstellt und können gelöscht werden.',
|
||
'settings.demo_record_count': 'Datensatze',
|
||
'settings.demo_delete_all_data': 'Alle Demo-Daten löschen',
|
||
'settings.demo_delete_confirm_data': 'Wirklich alle Demo-Daten (Kompetenznachweise, Bewertungen, Berichte) löschen? Die Demo-Konten bleiben bestehen.',
|
||
'settings.demo_data_deleted': 'Demo-Daten gelöscht',
|
||
'settings.env_tip': 'Papier sparen, Umwelt schutzen — digitale Nachweise statt Druck.',
|
||
|
||
// New styling keys
|
||
'dashboard.start_here': 'Jetzt beginnen!',
|
||
'date.today': 'Heute',
|
||
'date.yesterday': 'Gestern',
|
||
'date.days_ago': '{count} Tage zuvor',
|
||
'date.weeks_ago': '{count} Wochen zuvor',
|
||
'progress.entries': 'Einträge',
|
||
'competencies.expand_all': 'Alle öffnen',
|
||
'competencies.collapse_all': 'Alle schließen',
|
||
'flower.class_average': 'Klassendurchschnitt',
|
||
'auth.mission_title': 'Kompetenzorientierte Beurteilung für alle',
|
||
'auth.feature_competencies': 'Kompetenzraster & Lernfortschritt',
|
||
'auth.feature_student_centered': 'Schülerzentrierte Beurteilung',
|
||
'auth.feature_open_source': 'Freie & Open-Source Software',
|
||
'grading.click_compute': 'Klicken Sie "Noten berechnen" zum Start',
|
||
// New styling keys (round 2)
|
||
'header.select_year': 'Schuljahr',
|
||
'header.notifications': 'Aktivitäten',
|
||
'auth.feature_reports': 'Berichte & Zeugnisse',
|
||
'auth.feature_flower': 'Kompetenzblume',
|
||
'flower.hide_average': 'Vergleich aus',
|
||
'flower.show_average': 'Vergleich an',
|
||
'flower.download_png': 'Als PNG',
|
||
'flower.compare_with': 'Vergleichen mit',
|
||
'flower.compare_clear': 'Vergleich entfernen',
|
||
'flower.compare_legend': 'Vergleich',
|
||
'grading.grade_distribution': 'Notenverteilung',
|
||
'grading.trend_title': 'Notenverlauf',
|
||
'grading.trend_desc': 'Entwicklung der Durchschnittsnote im Zeitverlauf',
|
||
'grading.trend_average': 'Klassenschnitt',
|
||
|
||
// Navigation (new view)
|
||
'nav.settings': 'Einstellungen',
|
||
|
||
// Settings view
|
||
'settings.title': 'Einstellungen & Verwaltung',
|
||
'settings.tab_school': 'Schulinfo',
|
||
'settings.tab_years': 'Schuljahre',
|
||
'settings.tab_subjects': 'Fächer',
|
||
'settings.tab_audit': 'Audit-Log',
|
||
'settings.tab_data': 'Datenverwaltung',
|
||
'settings.school_name': 'Schulname',
|
||
'settings.school_type': 'Schulform',
|
||
'settings.school_country': 'Land',
|
||
'settings.school_timezone': 'Zeitzone',
|
||
'settings.school_address': 'Adresse',
|
||
'settings.school_saved': 'Schulinfo gespeichert',
|
||
'settings.year_label': 'Bezeichnung',
|
||
'settings.year_start': 'Beginn',
|
||
'settings.year_end': 'Ende',
|
||
'settings.year_created': 'Schuljahr erstellt',
|
||
'settings.year_classes': 'Klassen',
|
||
'settings.year_enrollments': 'Einschreibungen',
|
||
'settings.subject_name': 'Fachname',
|
||
'settings.subject_grade_min': 'Min. Jahrgang',
|
||
'settings.subject_grade_max': 'Max. Jahrgang',
|
||
'settings.subject_created': 'Fach erstellt',
|
||
'settings.subject_updated': 'Fach aktualisiert',
|
||
'settings.subject_deleted': 'Fach gelöscht',
|
||
'settings.subject_global': 'Global',
|
||
'settings.subject_school': 'Schulspezifisch',
|
||
'settings.audit_title': 'Audit-Log',
|
||
'settings.audit_action': 'Aktion',
|
||
'settings.audit_entity': 'Entität',
|
||
'settings.audit_actor': 'Akteur',
|
||
'settings.audit_timestamp': 'Zeitpunkt',
|
||
'settings.audit_filter_action': 'Aktion filtern',
|
||
'settings.audit_filter_date_from': 'Von',
|
||
'settings.audit_filter_date_to': 'Bis',
|
||
'settings.audit_all_actions': 'Alle Aktionen',
|
||
'settings.audit_no_entries': 'Keine Audit-Einträge gefunden',
|
||
'settings.data_title': 'Datenverwaltung & DSGVO',
|
||
'settings.data_export_csv': 'CSV-Export',
|
||
'settings.data_export_students': 'Schülerliste',
|
||
'settings.data_export_progress': 'Lernfortschritte',
|
||
'settings.data_export_assessments': 'Leistungsüberprüfungen',
|
||
'settings.data_export_grades': 'Noten',
|
||
'settings.data_export_download': 'CSV herunterladen',
|
||
'settings.data_export_started': 'Export gestartet',
|
||
'settings.data_erasure': 'Datenlöschung (DSGVO)',
|
||
'settings.data_erasure_desc': 'Gemäß DSGVO können Sie die Löschung personenbezogener Daten anfordern.',
|
||
'settings.data_erasure_request': 'Löschungsantrag stellen',
|
||
'settings.data_erasure_requested': 'Löschungsantrag gestellt',
|
||
'settings.data_erasure_scope': 'Bereich',
|
||
'settings.data_erasure_scope_student': 'Einzelner Schüler',
|
||
'settings.data_erasure_scope_class': 'Klasse',
|
||
'settings.data_erasure_scope_school': 'Gesamte Schule',
|
||
'settings.data_erasure_confirm': 'Löschung bestätigen',
|
||
|
||
// PDF export
|
||
'pdf.print_report': 'Bericht drucken',
|
||
'pdf.print_view': 'Druckansicht',
|
||
'pdf.export_pdf': 'PDF exportieren',
|
||
'pdf.generated': 'PDF-Bericht wird generiert',
|
||
'pdf.report_title': 'Kompetenzbericht',
|
||
'pdf.student': 'Schüler/in',
|
||
'pdf.class': 'Klasse',
|
||
'pdf.period': 'Zeitraum',
|
||
'pdf.date': 'Datum',
|
||
|
||
// CSV export
|
||
'csv.export_title': 'Daten exportieren',
|
||
'csv.export_type': 'Export-Typ',
|
||
'csv.export_class': 'Klasse',
|
||
'csv.export_year': 'Schuljahr',
|
||
'csv.export_success': 'CSV-Datei erfolgreich exportiert',
|
||
'csv.export_error': 'Fehler beim Export',
|
||
|
||
// Notifications
|
||
'notification.title': 'Aktuelle Aktivitäten',
|
||
'notification.progress_logged': 'Lernfortschritt eingeloggt',
|
||
'notification.assessment_created': 'Leistungsüberprüfung erstellt',
|
||
'notification.grade_computed': 'Noten berechnet',
|
||
'notification.report_generated': 'Bericht erstellt',
|
||
'notification.preferences': 'Benachrichtigungseinstellungen',
|
||
'notification.show_progress': 'Lernfortschritte anzeigen',
|
||
'notification.show_assessments': 'Überprüfungen anzeigen',
|
||
'notification.show_grades': 'Noten anzeigen',
|
||
'notification.show_reports': 'Berichte anzeigen',
|
||
'notification.no_recent': 'Keine aktuellen Aktivitäten',
|
||
'notification.mark_read': 'Als gelesen markieren',
|
||
|
||
// School year context
|
||
'context.all_years': 'Alle Schuljahre',
|
||
'context.year_selected': 'Schuljahr ausgewählt',
|
||
|
||
// User management
|
||
'settings.tab_users': 'Benutzer',
|
||
'users.title': 'Benutzerverwaltung',
|
||
'users.subtitle': 'Lehrkräfte & Administratoren verwalten',
|
||
'users.create_user': 'Benutzer erstellen',
|
||
'users.edit_user': 'Benutzer bearbeiten',
|
||
'users.delete_user': 'Benutzer löschen',
|
||
'users.delete_confirm': 'Benutzer wirklich deaktivieren? Der Zugriff wird sofort gesperrt.',
|
||
'users.created': 'Benutzerkonto erstellt',
|
||
'users.updated': 'Benutzerkonto aktualisiert',
|
||
'users.deleted': 'Benutzerkonto deaktiviert',
|
||
'users.no_users': 'Keine Benutzer gefunden',
|
||
'users.role': 'Rolle',
|
||
'users.email': 'E-Mail',
|
||
'users.password': 'Passwort',
|
||
'users.password_hint': 'Mindestens 8 Zeichen',
|
||
'users.assigned_classes': 'Zugeordnete Klassen',
|
||
'users.no_classes_assigned': 'Keine Klassen zugeordnet',
|
||
'users.assign_classes': 'Klassen zuordnen',
|
||
'users.active': 'Aktiv',
|
||
'users.inactive': 'Inaktiv',
|
||
'users.count': '{count} Benutzer',
|
||
'users.last_active': 'Zuletzt aktiv',
|
||
'users.created_at': 'Erstellt am',
|
||
|
||
// CSV student import
|
||
'classes.import_csv': 'CSV importieren',
|
||
'classes.import_csv_title': 'Schüler aus CSV-Datei importieren',
|
||
'classes.import_csv_subtitle': 'Wählen Sie eine CSV-Datei mit Schülerdaten (firstName, lastName, dateOfBirth, externalId)',
|
||
'classes.import_csv_select_file': 'CSV-Datei auswählen',
|
||
'classes.import_csv_drag': 'Datei hierher ziehen oder klicken zum Auswählen',
|
||
'classes.import_csv_preview': 'Vorschau',
|
||
'classes.import_csv_import': 'Importieren',
|
||
'classes.import_csv_success': '{success} Schüler erfolgreich importiert',
|
||
'classes.import_csv_errors': '{errors} Fehler beim Import',
|
||
'classes.import_csv_no_data': 'Keine Daten zum Importieren gefunden',
|
||
'classes.import_csv_invalid_format': 'Ungültiges CSV-Format. Spalten: firstName, lastName, dateOfBirth, externalId',
|
||
'classes.import_csv_processing': 'Import läuft…',
|
||
'classes.import_csv_template': 'Vorlage herunterladen',
|
||
'classes.import_csv_file_selected': 'Datei ausgewählt: {name} ({rows} Zeilen)',
|
||
'classes.import_csv_row': 'Zeile {n}',
|
||
'classes.import_csv_results': 'Importergebnisse',
|
||
'classes.import_csv_done': 'Fertig',
|
||
'classes.import_csv_external_id': 'Externe ID',
|
||
'classes.import_csv_first_name': 'Vorname',
|
||
'classes.import_csv_last_name': 'Nachname',
|
||
'classes.import_csv_dob': 'Geburtsdatum',
|
||
|
||
// Student detail view
|
||
'student_detail.title': 'Schülerprofil',
|
||
'student_detail.back': 'Zurück',
|
||
'student_detail.age': 'Alter',
|
||
'student_detail.years': 'Jahre',
|
||
'student_detail.school': 'Schule',
|
||
'student_detail.class': 'Klasse',
|
||
'student_detail.external_id': 'Externe ID',
|
||
'student_detail.date_of_birth': 'Geburtsdatum',
|
||
'student_detail.quick_stats': 'Schnellstatistik',
|
||
'student_detail.total_entries': 'Fortschritts-einträge',
|
||
'student_detail.avg_mastery': 'Ø Kompetenzniveau',
|
||
'student_detail.latest_grade': 'Aktuellste Note',
|
||
'student_detail.competence_flower': 'Kompetenzblume',
|
||
'student_detail.progress_timeline': 'Lernfortschritt (Verlauf)',
|
||
'student_detail.assessment_results': 'Leistungsüberprüfungen',
|
||
'student_detail.computed_grades': 'Berechnete Noten',
|
||
'student_detail.reports': 'Berichte',
|
||
'student_detail.no_data': 'Keine Daten verfügbar',
|
||
'student_detail.no_progress_entries': 'Noch keine Fortschrittseinträge',
|
||
'student_detail.no_assessments': 'Keine Prüfungsergebnisse',
|
||
'student_detail.no_grades': 'Keine berechneten Noten',
|
||
'student_detail.no_reports': 'Keine Berichte erstellt',
|
||
'student_detail.no_flower': 'Keine Kompetenzblume verfügbar',
|
||
'student_detail.no_flower_hint': 'Wählen Sie eine Klasse & ein Fach in der Kompetenzblumen-Ansicht',
|
||
'student_detail.view_report': 'Bericht anzeigen',
|
||
'student_detail.view_flower': 'Vollständige Kompetenzblume',
|
||
'student_detail.score': 'Punktzahl',
|
||
'student_detail.mastery': 'Niveau',
|
||
'student_detail.assessment': 'Überprüfung',
|
||
'student_detail.date': 'Datum',
|
||
'student_detail.subject': 'Fach',
|
||
'student_detail.value': 'Wert',
|
||
'student_detail.value_hint': 'Werte 0–4 (Kompetenzstufe)',
|
||
'student_detail.period': 'Zeitraum',
|
||
'student_detail.status': 'Status',
|
||
'student_detail.generated_at': 'Erstellt am',
|
||
'student_detail.view_progress': 'Zum Fortschritt',
|
||
'student_detail.print_report': 'Bericht drucken',
|
||
'student_detail.select_subject_for_flower': 'Fach für Kompetenzblume wählen',
|
||
'student_detail.flower_not_assigned': 'Keine Vorlage für dieses Fach in dieser Klasse zugewiesen',
|
||
'student_detail.created_at': 'Erstellt',
|
||
'student_detail.note': 'Bemerkung',
|
||
'student_detail.competency': 'Kompetenz',
|
||
'student_detail.category': 'Kategorie',
|
||
|
||
// ─── Styling polish: shared labels ──────────────────────────────
|
||
'polish.today_date': 'Heutiges Datum',
|
||
'polish.last_login': 'Letzte Anmeldung',
|
||
'polish.last_login_never': 'Erste Anmeldung',
|
||
'polish.class_overview': 'Klassenübersicht',
|
||
'polish.total_students': 'Schüler gesamt',
|
||
'polish.total_entries': 'Einträge gesamt',
|
||
'polish.avg_mastery': 'Ø Kompetenz',
|
||
'polish.class_health': 'Klassengesundheit',
|
||
'polish.health_good': 'Gut',
|
||
'polish.health_ok': 'Ok',
|
||
'polish.health_attention': 'Bedarf Aufmerksamkeit',
|
||
'polish.last_entry': 'Letzter Eintrag',
|
||
'polish.never': '—',
|
||
'polish.search_students': 'Schüler suchen…',
|
||
'polish.competency_count': 'Kompetenzen',
|
||
'polish.mastered': 'beherrscht',
|
||
'polish.mastery_distribution': 'Verteilung',
|
||
'polish.todays_entries': 'Einträge heute',
|
||
'polish.filter_today': 'Heute',
|
||
'polish.filter_week': 'Diese Woche',
|
||
'polish.filter_month': 'Dieser Monat',
|
||
'polish.filter_all': 'Alle',
|
||
'polish.keyboard_hint': 'Tastenkürzel: 1–4 für Niveau',
|
||
'polish.mastery_legend': 'Niveaulegende',
|
||
'polish.level_1': 'Beginnend',
|
||
'polish.level_2': 'Entwickelnd',
|
||
'polish.level_3': 'Gesichert',
|
||
'polish.level_4': 'Vertieft',
|
||
'polish.progress_over_time': 'Verlauf über Zeit',
|
||
'polish.vs_class_avg': 'Im Vergleich zum Klassenschnitt',
|
||
'polish.student_value': 'Schüler/in',
|
||
'polish.class_average': 'Klassenschnitt',
|
||
'polish.strengths': 'Stärken',
|
||
'polish.weaknesses': 'Entwicklungsfelder',
|
||
'polish.score_distribution': 'Punkteverteilung',
|
||
'polish.class_avg': 'Klassenschnitt',
|
||
'polish.best_performer': 'Bestleistung',
|
||
'polish.needs_support': 'Braucht Unterstützung',
|
||
'polish.grade_stats': 'Notenstatistik',
|
||
'polish.median': 'Median',
|
||
'polish.minimum': 'Min',
|
||
'polish.maximum': 'Max',
|
||
'polish.grade_trend': 'Notenverlauf',
|
||
'polish.grade_legend': 'Notenlegende',
|
||
'polish.grade_good': 'gut',
|
||
'polish.grade_satisfactory': 'befriedigend',
|
||
'polish.grade_needs_work': 'verbesserungsbedürftig',
|
||
'polish.report_completion': 'Berichtsfortschritt',
|
||
'polish.last_edited': 'Zuletzt bearbeitet',
|
||
'polish.workflow_draft': 'Entwurf',
|
||
'polish.workflow_review': 'In Prüfung',
|
||
'polish.workflow_published': 'Veröffentlicht',
|
||
'polish.report_logo': 'Schullogo',
|
||
'polish.quick_stats': 'Schnellstatistik',
|
||
'polish.total_users': 'Benutzer',
|
||
'polish.total_subjects': 'Fächer',
|
||
'polish.total_years': 'Schuljahre',
|
||
'polish.audit_search': 'Audit-Log durchsuchen…',
|
||
'polish.all_actions': 'Alle Aktionen',
|
||
'polish.create_action': 'Anlegen',
|
||
'polish.update_action': 'Aktualisieren',
|
||
'polish.delete_action': 'Löschen',
|
||
'polish.login_action': 'Anmeldung',
|
||
'polish.student_journey': 'Lernweg',
|
||
'polish.competency_grid': 'Kompetenzmatrix',
|
||
'polish.recent_achievements': 'Letzte Erfolge',
|
||
'polish.teacher_notes': 'Lehrernotizen',
|
||
'polish.no_notes': 'Noch keine Notizen',
|
||
'polish.demo_credentials': 'Demo-Zugang',
|
||
'polish.demo_email': 'demo@competencetrack.org',
|
||
'polish.demo_password': 'Demo2025!',
|
||
'polish.demo_hint': 'Klicken, um die Felder automatisch auszufüllen',
|
||
'polish.remember_me': 'Angemeldet bleiben',
|
||
'polish.forgot_password': 'Passwort vergessen?',
|
||
'polish.use_demo': 'Demo-Zugang verwenden',
|
||
'polish.show_password': 'Passwort anzeigen',
|
||
'polish.hide_password': 'Passwort verbergen',
|
||
'polish.breadcrumb_home': 'Start',
|
||
'polish.quick_search': 'Schnellsuche',
|
||
'polish.search_placeholder': 'Schüler, Klassen oder Kompetenzen suchen…',
|
||
'polish.no_results': 'Keine Ergebnisse',
|
||
'polish.help': 'Hilfe',
|
||
'polish.nav_setup': 'Einrichtung',
|
||
'polish.nav_teaching': 'Unterricht',
|
||
'polish.nav_analysis': 'Analyse',
|
||
'polish.students_found': '{count} Schüler gefunden',
|
||
'polish.class_avg_label': 'Klassenschnitt',
|
||
'polish.male': 'm',
|
||
'polish.female': 'w',
|
||
'polish.diverse': 'd',
|
||
'polish.print_preview': 'Druckvorschau',
|
||
'polish.report_header': 'Schulbericht',
|
||
|
||
// ─── Analytics view ───────────────────────────────────────────────
|
||
'nav.analytics': 'Analysen',
|
||
'analytics.title': 'Fortschrittsanalysen',
|
||
'analytics.subtitle': 'Umfassende Auswertung von Kompetenzentwicklung über Zeit, Klassen und Kompetenzen',
|
||
'analytics.filters': 'Filter',
|
||
'analytics.select_class': 'Klasse wählen',
|
||
'analytics.all_classes': 'Alle Klassen',
|
||
'analytics.select_subject': 'Fach wählen',
|
||
'analytics.all_subjects': 'Alle Fächer',
|
||
'analytics.date_range': 'Zeitraum',
|
||
'analytics.range_30': '30 Tage',
|
||
'analytics.range_90': '90 Tage',
|
||
'analytics.range_180': '180 Tage',
|
||
'analytics.range_365': '1 Jahr',
|
||
'analytics.range_all': 'Gesamt',
|
||
'analytics.mastery_trend': 'Kompetenzverlauf über Zeit',
|
||
'analytics.mastery_trend_desc': 'Durchschnittliches Kompetenzniveau pro Woche',
|
||
'analytics.class_comparison': 'Klassenvergleich',
|
||
'analytics.class_comparison_desc': 'Ø Kompetenzniveau je Klasse im gewählten Fach',
|
||
'analytics.mastery_distribution': 'Niveauverteilung',
|
||
'analytics.mastery_distribution_desc': 'Verteilung der eingetragenen Niveaus (1–4)',
|
||
'analytics.top_competencies': 'Stärkste Kompetenzen',
|
||
'analytics.bottom_competencies': 'Kompetenzen mit Förderbedarf',
|
||
'analytics.top_bottom_desc': 'Top 5 / Bottom 5 nach Ø Kompetenzniveau',
|
||
'analytics.activity_heatmap': 'Aktivitäts-Heatmap',
|
||
'analytics.activity_heatmap_desc': 'Anzahl Fortschrittseinträge pro Tag (letzte 90 Tage)',
|
||
'analytics.no_data': 'Keine Daten für die gewählten Filter',
|
||
'analytics.no_data_hint': 'Wählen Sie eine Klasse oder ein Fach, um Analysen anzuzeigen',
|
||
'analytics.entry_count': 'Einträge',
|
||
'analytics.avg_mastery': 'Ø Niveau',
|
||
'analytics.student_count': 'Schüler',
|
||
'analytics.level': 'Niveau',
|
||
'analytics.count': 'Anzahl',
|
||
'analytics.share': 'Anteil',
|
||
'analytics.week': 'KW',
|
||
'analytics.today': 'Heute',
|
||
'analytics.less': 'weniger',
|
||
'analytics.more': 'mehr',
|
||
'analytics.refresh': 'Aktualisieren',
|
||
'analytics.no_competencies': 'Keine Kompetenzen mit Einträgen gefunden',
|
||
'analytics.no_classes': 'Keine Klassen mit Einträgen gefunden',
|
||
|
||
// ─── Mastery Matrix view ──────────────────────────────────────────
|
||
'nav.matrix': 'Kompetenzmatrix',
|
||
'matrix.title': 'Kompetenzmatrix',
|
||
'matrix.subtitle': 'Schüler × Kompetenzen — farbcodierte Niveau-Übersicht',
|
||
'matrix.select_class': 'Klasse wählen',
|
||
'matrix.select_subject': 'Fach wählen',
|
||
'matrix.no_template': 'Kein Kompetenzraster für diese Klasse / Fach-Kombination zugewiesen',
|
||
'matrix.no_template_hint': 'Weisen Sie ein Raster in der Klassenansicht zu',
|
||
'matrix.no_students': 'Keine Schüler in dieser Klasse eingeschrieben',
|
||
'matrix.entry_count_short': 'E',
|
||
'matrix.legend': 'Legende',
|
||
'matrix.legend_unassessed': 'Nicht beurteilt',
|
||
'matrix.legend_level_1': 'Niveau 1',
|
||
'matrix.legend_level_2': 'Niveau 2',
|
||
'matrix.legend_level_3': 'Niveau 3',
|
||
'matrix.legend_level_4': 'Niveau 4',
|
||
'matrix.row_avg': 'Schüler-Ø',
|
||
'matrix.col_avg': 'Klassen-Ø',
|
||
'matrix.entries_for': 'Einträge für',
|
||
'matrix.no_entries_for': 'Keine Einträge für diese Kompetenz',
|
||
'matrix.last_entry': 'Letzter Eintrag',
|
||
'matrix.export_csv': 'CSV exportieren',
|
||
'matrix.export_success': 'Matrix als CSV exportiert',
|
||
'matrix.competency': 'Kompetenz',
|
||
'matrix.student': 'Schüler/in',
|
||
'matrix.avg': 'Ø',
|
||
'matrix.entries': 'Einträge',
|
||
'matrix.choose_filters': 'Bitte Klasse und Fach wählen',
|
||
'matrix.choose_filters_hint': 'Wählen Sie oben eine Klasse und ein Fach, um die Matrix anzuzeigen',
|
||
|
||
// ─── Teacher Notes (Student Detail) ───────────────────────────────
|
||
'teacher_notes.title': 'Lehrernotizen',
|
||
'teacher_notes.subtitle': 'Private Notizen für Kolleginnen & Kollegen',
|
||
'teacher_notes.add': 'Notiz hinzufügen',
|
||
'teacher_notes.add_title': 'Neue Notiz',
|
||
'teacher_notes.edit_title': 'Notiz bearbeiten',
|
||
'teacher_notes.category': 'Kategorie',
|
||
'teacher_notes.content': 'Inhalt',
|
||
'teacher_notes.content_placeholder': 'Notiz eingeben…',
|
||
'teacher_notes.private': 'Privat (nur für Lehrkräfte sichtbar)',
|
||
'teacher_notes.created': 'Notiz erstellt',
|
||
'teacher_notes.updated': 'Notiz aktualisiert',
|
||
'teacher_notes.deleted': 'Notiz gelöscht',
|
||
'teacher_notes.delete_confirm': 'Notiz wirklich löschen?',
|
||
'teacher_notes.no_notes': 'Noch keine Notizen vorhanden',
|
||
'teacher_notes.no_notes_hint': 'Notizen sind nur für Lehrkräfte sichtbar',
|
||
'teacher_notes.count': '{count} Notizen',
|
||
'teacher_notes.by': 'von',
|
||
'teacher_notes.edit': 'Bearbeiten',
|
||
'teacher_notes.delete': 'Löschen',
|
||
'teacher_notes.save': 'Notiz speichern',
|
||
'teacher_notes.cat_general': 'Allgemein',
|
||
'teacher_notes.cat_behavior': 'Verhalten',
|
||
'teacher_notes.cat_academic': 'Leistung',
|
||
'teacher_notes.cat_intervention': 'Förderung',
|
||
'teacher_notes.cat_parent_contact': 'Elternkontakt',
|
||
'teacher_notes.error_min_content': 'Inhalt darf nicht leer sein',
|
||
'teacher_notes.you': 'Sie',
|
||
'teacher_notes.view_all': 'Alle anzeigen',
|
||
|
||
// ─── Polish round 4: additional UI strings ──────────────────────────
|
||
'polish.insights_title': 'Erkenntnisse',
|
||
'polish.insight_mastery_up': 'Kompetenzniveau ist um {pct}% gestiegen',
|
||
'polish.insight_mastery_down': 'Kompetenzniveau ist um {pct}% gesunken',
|
||
'polish.insight_mastery_stable': 'Kompetenzniveau bleibt stabil',
|
||
'polish.insight_top_class': 'Klasse {class} führt mit Ø {avg}',
|
||
'polish.insight_mastered_pct': '{pct}% der Einträge auf Niveau 3+',
|
||
'polish.insight_peak_day': 'Aktivster Tag: {date} ({count} Einträge)',
|
||
'polish.insight_focus': 'Förderbedarf: {comp} (Ø {avg})',
|
||
'polish.coverage': 'Abdeckung',
|
||
'polish.matrix_click_hint': 'Auf eine Zelle klicken für Einzeldetails',
|
||
'polish.weekly_summary': 'Wochenüberblick',
|
||
'polish.this_week_vs_last': 'Diese Woche vs. letzte Woche',
|
||
'polish.this_week': 'Diese Woche',
|
||
'polish.last_week': 'Letzte Woche',
|
||
'polish.change': 'Veränderung',
|
||
'polish.mastery_indicator': 'Niveau',
|
||
'polish.template_usage': 'Klassen',
|
||
'polish.filter_by_category': 'Kategorie',
|
||
|
||
// ─── Empty state polish & shared UI strings ───────────────────────
|
||
'polish.please_choose': 'Bitte wählen…',
|
||
'polish.label_class': 'Klasse',
|
||
'polish.empty_title_no_class': 'Noch keine Klasse ausgewählt',
|
||
'polish.empty_subtitle_no_class': 'Wählen Sie oben eine Klasse aus, um Inhalte anzuzeigen und zu bearbeiten.',
|
||
'polish.empty_title_no_data': 'Hier ist noch nichts los',
|
||
'polish.empty_subtitle_no_data': 'Sobald Daten vorliegen, erscheinen sie an dieser Stelle.',
|
||
'polish.empty_cta_select_class': 'Klasse auswählen',
|
||
'polish.empty_title_competency_grid': 'Kein Kompetenzraster ausgewählt',
|
||
'polish.empty_subtitle_competency_grid': 'Wählen Sie links ein Raster aus der Bibliothek, um die Struktur und Details zu sehen.',
|
||
'polish.empty_title_flower': 'Keine Kompetenzblume verfügbar',
|
||
'polish.empty_subtitle_flower': 'Wählen Sie oben Klasse, Fach und Schüler/in aus, um die visuelle Kompetenzübersicht zu sehen.',
|
||
'polish.empty_title_progress': 'Noch keine Lernfortschritte',
|
||
'polish.empty_subtitle_progress': 'Wählen Sie eine Klasse und ein Fach, um Lernfortschritte zu erfassen oder anzusehen.',
|
||
'polish.empty_title_assessments': 'Keine Überprüfungen angelegt',
|
||
'polish.empty_subtitle_assessments': 'Wählen Sie oben eine Klasse und ein Fach, dann erstellen Sie Ihre erste Überprüfung.',
|
||
'polish.empty_title_grading': 'Keine Notenberechnung möglich',
|
||
'polish.empty_subtitle_grading': 'Wählen Sie oben eine Klasse und ein Fach, um Notenschemata anzulegen und Noten zu berechnen.',
|
||
'polish.empty_title_reports': 'Noch keine Berichte erstellt',
|
||
'polish.empty_subtitle_reports': 'Wählen Sie oben eine Klasse, um Berichte zu generieren und zu verwalten.',
|
||
'polish.empty_title_attendance': 'Anwesenheit verfolgen',
|
||
'polish.empty_subtitle_attendance': 'Wählen Sie oben eine Klasse aus, um Anwesenheitssitzungen anzulegen und auszuwerten.',
|
||
'polish.empty_title_matrix': 'Matrix noch nicht verfügbar',
|
||
'polish.empty_subtitle_matrix': 'Wählen Sie oben Klasse und Fach, um die Kompetenzmatrix mit allen Schülerinnen und Schülern zu sehen.',
|
||
'polish.trend_up': 'Steigend',
|
||
'polish.trend_down': 'Fallend',
|
||
'polish.trend_flat': 'Stabil',
|
||
'polish.this_week_bars': 'Diese Woche vs. letzte Woche',
|
||
|
||
// ─── Empty state enrichments (Round 7) ───────────────────────────────
|
||
'polish.recent_activity_title': 'Letzte Aktivitäten',
|
||
'polish.recent_activity_subtitle': 'Neueste Lernfortschritte über alle Klassen hinweg',
|
||
'polish.recent_activity_loading': 'Aktivitäten werden geladen…',
|
||
'polish.recent_activity_empty': 'Noch keine Aktivitäten vorhanden.',
|
||
'polish.grading_overview_title': 'Bewertungsübersicht',
|
||
'polish.grading_overview_subtitle': 'Notenschemata und Berechnungen für Ihre Schule',
|
||
'polish.grading_total_schemes': 'Notenschemata',
|
||
'polish.grading_subjects_covered': 'Fächer abgedeckt',
|
||
'polish.grading_distribution': 'Typverteilung',
|
||
'polish.grading_loading': 'Bewertungsdaten werden geladen…',
|
||
'polish.report_templates_title': 'Berichtsvorlagen',
|
||
'polish.report_templates_subtitle': 'Drei Berichtstypen für unterschiedliche Einsatzzwecke',
|
||
'polish.report_template_draft_name': 'Entwurfsbericht',
|
||
'polish.report_template_draft_desc': 'Beobachtungen und Texte während des Semesters sammeln und schrittweise ausbauen.',
|
||
'polish.report_template_final_name': 'Endgültiger Bericht',
|
||
'polish.report_template_final_desc': 'Fertiger Bericht mit narrativen Texten und optionalen Noten für die Zeugniskonferenz.',
|
||
'polish.report_template_pdf_name': 'PDF-Export',
|
||
'polish.report_template_pdf_desc': 'Druckfertige Version zum Teilen mit Eltern und Schüler:innen.',
|
||
'polish.matrix_how_it_works_title': 'So funktioniert\u2019s',
|
||
'polish.matrix_how_it_works_subtitle': 'In drei Schritten zur Kompetenzmatrix',
|
||
'polish.matrix_step_1_title': 'Klasse wählen',
|
||
'polish.matrix_step_1_desc': 'Wählen Sie oben eine Klasse aus dem Dropdown.',
|
||
'polish.matrix_step_2_title': 'Fach wählen',
|
||
'polish.matrix_step_2_desc': 'Wählen Sie das Fach, dessen Kompetenzen Sie sehen möchten.',
|
||
'polish.matrix_step_3_title': 'Matrix anzeigen',
|
||
'polish.matrix_step_3_desc': 'Die Kompetenzmatrix aller Schüler:innen wird automatisch geladen.',
|
||
'polish.attendance_quick_stats_title': 'Schnellstatistik',
|
||
'polish.attendance_quick_stats_subtitle': 'Anwesenheitsübersicht über alle Ihre Klassen',
|
||
'polish.attendance_total_sessions_month': 'Sitzungen in diesem Monat',
|
||
'polish.attendance_avg_rate': 'Ø Anwesenheitsrate',
|
||
'polish.attendance_common_reason': 'Häufigster Abwesenheitsgrund',
|
||
'polish.attendance_no_absences': 'Keine Abwesenheiten',
|
||
'polish.attendance_loading': 'Schnellstatistik wird geladen…',
|
||
'polish.attendance_no_classes_hint': 'Noch keine Klassen angelegt — legen Sie eine Klasse an, um Anwesenheit zu verfolgen.',
|
||
|
||
// ─── Score distribution histogram (assessments) ────────────────────
|
||
'assessments.score_distribution': 'Punktezahlenverteilung',
|
||
'assessments.average': 'Durchschnitt',
|
||
'assessments.median': 'Median',
|
||
'assessments.range': 'Spanne',
|
||
'assessments.no_scores': 'Keine Punktezahlen',
|
||
|
||
// ─── Student journey timeline ──────────────────────────────────────
|
||
'student.journey': 'Lernreise',
|
||
'student.journey_milestone': 'Meilenstein',
|
||
'student.journey_achieved': 'Kompetenz erreicht',
|
||
'student.journey_started': 'Neues Bereich begonnen',
|
||
'student.journey_above_avg': 'Über dem Durchschnitt',
|
||
'student.journey_grade': 'Benotung abgeschlossen',
|
||
'student.journey_last_30': 'Letzte 30 Tage',
|
||
'student.journey_last_90': 'Letzte 90 Tage',
|
||
'student.journey_all': 'Alle',
|
||
|
||
// Student export & print
|
||
'student.export_pdf': 'Als PDF exportieren',
|
||
'student.export_csv': 'Als CSV exportieren',
|
||
'student.print_report': 'Bericht drucken',
|
||
'student.export_data': 'Daten exportieren',
|
||
|
||
// ─── Attendance ──────────────────────────────────────────────────────
|
||
'nav.attendance': 'Anwesenheit',
|
||
'attendance.title': 'Anwesenheitsverfolgung',
|
||
'attendance.subtitle': 'Anwesenheit pro Klasse und Stunde erfassen und auswerten',
|
||
'attendance.new_session': 'Neue Sitzung',
|
||
'attendance.present': 'Anwesend',
|
||
'attendance.absent': 'Abwesend',
|
||
'attendance.excused': 'Entschuldigt',
|
||
'attendance.late': 'Verspätet',
|
||
'attendance.status': 'Status',
|
||
'attendance.rate': 'Anwesenheitsrate',
|
||
'attendance.date': 'Datum',
|
||
'attendance.period': 'Stunde',
|
||
'attendance.completed': 'Abgeschlossen',
|
||
'attendance.open': 'Offen',
|
||
'attendance.save_all': 'Alle speichern',
|
||
'attendance.no_sessions': 'Keine Anwesenheitsdaten',
|
||
'attendance.stats': 'Statistik',
|
||
'attendance.monthly': 'Monatliche Übersicht',
|
||
'attendance.absences_count': 'Abwesenheiten',
|
||
'attendance.late_count': 'Verspätungen',
|
||
'attendance.select_class': 'Klasse auswählen',
|
||
'attendance.comment': 'Kommentar',
|
||
'attendance.arrival_time': 'Ankunftszeit',
|
||
'attendance.calendar': 'Kalender',
|
||
'attendance.complete_session': 'Sitzung abschließen',
|
||
'attendance.delete_session': 'Sitzung löschen',
|
||
'attendance.reopen_session': 'Sitzung wieder öffnen',
|
||
'attendance.no_students': 'Keine Schüler in dieser Klasse',
|
||
'attendance.session_for': 'Anwesenheit für',
|
||
'attendance.total_students': 'Schüler gesamt',
|
||
'attendance.present_count': 'Anwesende',
|
||
'attendance.excused_count': 'Entschuldigte',
|
||
'attendance.absent_count': 'Abwesende',
|
||
'attendance.late_count_short': 'Verspätete',
|
||
'attendance.subject': 'Fach',
|
||
'competencies.select_class': 'Wählen Sie ein Kompetenzraster aus der Liste',
|
||
'label.teacher': 'Lehrkräfte',
|
||
'label.student': 'Schüler',
|
||
'label.students': 'Schüler',
|
||
'label.classes': 'Klassen',
|
||
'label.subjects': 'Fächer',
|
||
'label.entries': 'Einträge',
|
||
'label.assessments': 'Überprüfungen',
|
||
'label.reports': 'Berichte',
|
||
|
||
// ─── Lesson Planning ──────────────────────────────────────────────
|
||
'nav.lesson_plans': 'Unterrichtsplanung',
|
||
'nav.lesson-plans': 'Unterrichtsplanung',
|
||
'lesson.title': 'Unterrichtsplanung',
|
||
'lesson.subtitle': 'Unterrichtsstunden planen und dokumentieren',
|
||
'lesson.new': 'Neue Stunde',
|
||
'lesson.edit': 'Stunde bearbeiten',
|
||
'lesson.empty': 'Noch keine Stunden geplant',
|
||
'lesson.empty_desc': 'Erstellen Sie Ihre erste Unterrichtsstunde',
|
||
'lesson.this_week': 'Diese Woche',
|
||
'lesson.upcoming': 'Anstehend',
|
||
'lesson.field.title': 'Titel',
|
||
'lesson.field.description': 'Beschreibung',
|
||
'lesson.field.date': 'Datum',
|
||
'lesson_plans.date_hint': 'Format: TT.MM.JJJJ',
|
||
'lesson.field.duration': 'Dauer (Min)',
|
||
'lesson.field.class': 'Klasse',
|
||
'lesson.field.subject': 'Fach',
|
||
'lesson.field.objectives': 'Lernziele',
|
||
'lesson.field.materials': 'Materialien',
|
||
'lesson.field.homework': 'Hausaufgaben',
|
||
'lesson.field.reflection': 'Reflexion',
|
||
'lesson.field.competencies': 'Verknüpfte Kompetenzen',
|
||
'lesson.field.status': 'Status',
|
||
'lesson.status_draft': 'Entwurf',
|
||
'lesson.status_scheduled': 'Geplant',
|
||
'lesson.status_completed': 'Erledigt',
|
||
'lesson.status_cancelled': 'Abgesagt',
|
||
'lesson.filter_all': 'Alle',
|
||
'lesson.add_objective': 'Lernziel hinzufügen',
|
||
'lesson.add_material': 'Material hinzufügen',
|
||
'lesson.duration_min': 'Min',
|
||
'lesson.agenda': 'Agenda',
|
||
'lesson.delete_confirm': 'Diese Stunde wirklich löschen?',
|
||
'lesson.saved': 'Stunde gespeichert',
|
||
'lesson.deleted': 'Stunde gelöscht',
|
||
'lesson.no_upcoming': 'Keine anstehenden Stunden',
|
||
'lesson.no_lessons_this_week': 'Diese Woche sind keine Stunden geplant',
|
||
'lesson.select_class_first': 'Bitte wählen Sie zuerst eine Klasse',
|
||
'lesson.duration_label': '{min} Min',
|
||
'lesson.objective_placeholder': 'Neues Lernziel…',
|
||
'lesson.material_placeholder': 'Neues Material…',
|
||
'lesson.objectives_count': '{count} Ziele',
|
||
'lesson.materials_count': '{count} Materialien',
|
||
|
||
// ─── Unified Calendar ─────────────────────────────────────────────────
|
||
'nav.calendar': 'Kalender',
|
||
'calendar.title': 'Kalender',
|
||
'calendar.subtitle': 'Alle Termine und Ereignisse auf einen Blick',
|
||
'calendar.today': 'Heute',
|
||
'calendar.legend': 'Legende',
|
||
'calendar.upcoming': 'Anstehend',
|
||
'calendar.upcoming_week': 'Diese Woche',
|
||
'calendar.no_events': 'Keine Termine in diesem Monat',
|
||
'calendar.no_events_desc': 'Wählen Sie einen anderen Monat',
|
||
'calendar.event_types.assessment': 'Überprüfung',
|
||
'calendar.event_types.attendance': 'Anwesenheit',
|
||
'calendar.event_types.progress': 'Lernfortschritt',
|
||
'calendar.event_types.report': 'Bericht',
|
||
'calendar.event_types.lesson': 'Unterricht',
|
||
'calendar.more_events': '+{count} weitere',
|
||
'calendar.day_events': 'Termine am {date}',
|
||
'calendar.week': 'Woche',
|
||
'calendar.loading': 'Termine werden geladen …',
|
||
'calendar.error': 'Termine konnten nicht geladen werden',
|
||
'calendar.no_day_events': 'Keine Termine an diesem Tag',
|
||
'calendar.close': 'Schließen',
|
||
'calendar.meta.subject': 'Fach',
|
||
'calendar.meta.class': 'Klasse',
|
||
'calendar.meta.type': 'Typ',
|
||
'calendar.meta.period': 'Stunde',
|
||
'calendar.meta.status': 'Status',
|
||
'calendar.meta.rate': 'Rate',
|
||
'calendar.meta.present': 'Anwesend',
|
||
'calendar.meta.absent': 'Abwesend',
|
||
'calendar.meta.excused': 'Entschuldigt',
|
||
'calendar.meta.late': 'Verspätet',
|
||
'calendar.meta.count': 'Einträge',
|
||
'calendar.meta.student': 'Schüler',
|
||
'calendar.meta.weight': 'Gewichtung',
|
||
'calendar.meta.max_score': 'Maximalpunktzahl',
|
||
'calendar.meta.includes_grades': 'Mit Noten',
|
||
'calendar.no_upcoming': 'Keine anstehenden Termine in dieser Woche',
|
||
|
||
// ─── Grade Trend & Risk Analysis (analytics enhancements) ────────
|
||
'analytics.grade_trend': 'Notenentwicklung über Zeit',
|
||
'analytics.grade_trend_desc': 'Durchschnittliche Kompetenz nach Woche',
|
||
'analytics.range_12_weeks': '12 Wochen',
|
||
'analytics.range_24_weeks': '24 Wochen',
|
||
'analytics.min_standard': 'Mindeststandard',
|
||
'analytics.unique_students': 'Schüler:innen',
|
||
'analytics.school_avg': 'Schulø',
|
||
'analytics.risk_analysis': 'Risikoanalyse: Schüler:innen mit Förderbedarf',
|
||
'analytics.risk_analysis_desc': 'Schüler:innen mit Förderbedarf',
|
||
'analytics.risk_score': 'Risiko-Score',
|
||
'analytics.risk_level': 'Risikostufe',
|
||
'analytics.risk_low': 'Niedrig',
|
||
'analytics.risk_medium': 'Mittel',
|
||
'analytics.risk_high': 'Hoch',
|
||
'analytics.risk_critical': 'Kritisch',
|
||
'analytics.signals': 'Signale',
|
||
'analytics.signal_low_mastery': 'Niedrige Kompetenz',
|
||
'analytics.signal_no_progress': 'Kein Fortschritt',
|
||
'analytics.signal_low_attendance': 'Niedrige Anwesenheit',
|
||
'analytics.signal_declining': 'Abfallender Trend',
|
||
'analytics.latest_mastery': 'Aktuelle Kompetenz',
|
||
'analytics.last_activity': 'Letzte Aktivität',
|
||
'analytics.total_at_risk': 'Insgesamt riskant',
|
||
'analytics.critical_count': 'Kritisch',
|
||
'analytics.high_count': 'Hoch',
|
||
'analytics.avg_risk_score': 'Ø Risiko-Score',
|
||
'analytics.all_good': 'Alle Schüler:innen sind auf einem guten Weg!',
|
||
'analytics.filter_risk': 'Nach Risikostufe filtern',
|
||
'analytics.class_avg': 'Klassenø',
|
||
'analytics.details': 'Details',
|
||
'analytics.filter_all': 'Alle',
|
||
'analytics.no_recent_activity': 'Keine Aktivität',
|
||
'analytics.risk_distribution_title': 'Risikoverteilung',
|
||
'analytics.risk_distribution_desc': 'Anzahl Schüler:innen je Risikostufe',
|
||
|
||
// ─── Parent Communication ──────────────────────────────────────────
|
||
'nav.parents': 'Elternkommunikation',
|
||
'parents.title': 'Elternkommunikation',
|
||
'parents.subtitle': 'Nachrichten an Eltern verwalten',
|
||
'parents.new_message': 'Neue Nachricht',
|
||
'parents.new_contact': 'Neuer Kontakt',
|
||
'parents.conversations': 'Unterhaltungen',
|
||
'parents.no_conversations': 'Keine Unterhaltungen',
|
||
'parents.no_conversations_desc': 'Starten Sie eine neue Nachricht',
|
||
'parents.select_conversation': 'Wählen Sie eine Unterhaltung',
|
||
'parents.parent_info': 'Elterninformation',
|
||
'parents.student_info': 'Schülerinformation',
|
||
'parents.field.parent': 'Erziehungsberechtigte:r',
|
||
'parents.field.student': 'Schüler:in',
|
||
'parents.field.subject': 'Betreff',
|
||
'parents.field.body': 'Nachricht',
|
||
'parents.field.category': 'Kategorie',
|
||
'parents.field.priority': 'Priorität',
|
||
'parents.field.relationship': 'Beziehung',
|
||
'parents.field.email': 'E-Mail',
|
||
'parents.field.phone': 'Telefon',
|
||
'parents.field.preferred_contact': 'Bevorzugter Kontakt',
|
||
'parents.field.preferred_language': 'Bevorzugte Sprache',
|
||
'parents.field.notes': 'Notizen',
|
||
'parents.category_general': 'Allgemein',
|
||
'parents.category_progress': 'Lernfortschritt',
|
||
'parents.category_assessment': 'Überprüfung',
|
||
'parents.category_behavior': 'Verhalten',
|
||
'parents.category_attendance': 'Anwesenheit',
|
||
'parents.category_event': 'Veranstaltung',
|
||
'parents.priority_low': 'Niedrig',
|
||
'parents.priority_normal': 'Normal',
|
||
'parents.priority_high': 'Hoch',
|
||
'parents.priority_urgent': 'Dringend',
|
||
'parents.status_draft': 'Entwurf',
|
||
'parents.status_sent': 'Gesendet',
|
||
'parents.status_delivered': 'Zugestellt',
|
||
'parents.status_read': 'Gelesen',
|
||
'parents.status_replied': 'Beantwortet',
|
||
'parents.reply': 'Antworten',
|
||
'parents.send': 'Senden',
|
||
'parents.save_draft': 'Entwurf speichern',
|
||
'parents.statistics': 'Statistik',
|
||
'parents.messages_sent': 'Gesendete Nachrichten',
|
||
'parents.response_rate': 'Antwortrate',
|
||
'parents.avg_response_time': 'Ø Antwortzeit',
|
||
'parents.by_category': 'Nach Kategorie',
|
||
'parents.empty_thread': 'Noch keine Nachrichten',
|
||
'parents.empty_thread_desc': 'Starten Sie die Unterhaltung',
|
||
'parents.templates': 'Vorlagen',
|
||
'parents.template_progress_good': 'Positiver Lernfortschritt',
|
||
'parents.template_assessment_reminder': 'Überprüfungserinnerung',
|
||
'parents.template_behavior_concern': 'Verhalten',
|
||
'parents.template_meeting_request': 'Gesprächswunsch',
|
||
'parents.relationship_parent': 'Elternteil',
|
||
'parents.relationship_guardian': 'Vormund',
|
||
'parents.relationship_emergency': 'Notfallkontakt',
|
||
'parents.delete_confirm': 'Diese Nachricht wirklich löschen?',
|
||
'parents.deleted': 'Nachricht gelöscht',
|
||
'parents.sent': 'Nachricht gesendet',
|
||
'parents.draft_saved': 'Entwurf gespeichert',
|
||
'parents.reply_sent': 'Antwort gespeichert',
|
||
'parents.marked_read': 'Als gelesen markiert',
|
||
'parents.contact_created': 'Kontakt erstellt',
|
||
'parents.contact_updated': 'Kontakt aktualisiert',
|
||
'parents.contact_deleted': 'Kontakt gelöscht',
|
||
'parents.filter_all': 'Alle',
|
||
'parents.filter_by_student': 'Nach Schüler:in',
|
||
'parents.filter_by_category': 'Nach Kategorie',
|
||
'parents.search_placeholder': 'Suche nach Name…',
|
||
'parents.this_month': 'Diesen Monat',
|
||
'parents.no_messages_sent': 'Noch keine Nachrichten gesendet',
|
||
'parents.messages': 'Nachrichten',
|
||
'parents.unread': 'Ungelesen',
|
||
'parents.last_message': 'Letzte Nachricht',
|
||
'parents.create_contact_first': 'Bitte erstellen Sie zuerst einen Elternkontakt',
|
||
'parents.no_contacts': 'Keine Elternkontakte vorhanden',
|
||
'parents.no_contacts_desc': 'Erstellen Sie den ersten Kontakt',
|
||
'parents.view_thread': 'Unterhaltung anzeigen',
|
||
'parents.reply_placeholder': 'Antwort der Eltern eintragen…',
|
||
'parents.hours': 'Std.',
|
||
'parents.minutes': 'Min.',
|
||
'parents.days': 'Tage',
|
||
'parents.no_response_yet': 'Keine Antwort',
|
||
|
||
// Behavior Tracking — Verhaltensverfolgung
|
||
'nav.behavior': 'Verhalten',
|
||
'behavior.title': 'Verhaltensverfolgung',
|
||
'behavior.subtitle': 'Erfassen und verfolgen Sie Verhaltensvorfälle Ihrer Schüler:innen',
|
||
'behavior.tab_incidents': 'Vorfälle',
|
||
'behavior.tab_categories': 'Kategorien',
|
||
'behavior.tab_statistics': 'Statistik',
|
||
'behavior.loading': 'Wird geladen…',
|
||
'behavior.error_load': 'Fehler beim Laden',
|
||
'behavior.error_save': 'Fehler beim Speichern',
|
||
'behavior.error_delete': 'Fehler beim Löschen',
|
||
'behavior.empty_incidents': 'Keine Vorfälle erfasst',
|
||
'behavior.empty_incidents_desc': 'Erfassen Sie den ersten Vorfall oder passen Sie die Filter an.',
|
||
'behavior.empty_incidents_filtered': 'Keine Vorfälle für die gewählten Filter',
|
||
'behavior.empty_incidents_filtered_desc': 'Passen Sie die Filter an, um Ergebnisse zu sehen.',
|
||
'behavior.empty_categories': 'Noch keine Kategorien',
|
||
'behavior.empty_categories_desc': 'Legen Sie die erste Verhaltenskategorie an.',
|
||
'behavior.select_class': 'Klasse auswählen',
|
||
'behavior.all_classes': 'Alle Klassen',
|
||
'behavior.all_students': 'Alle Schüler:innen',
|
||
'behavior.all_categories': 'Alle Kategorien',
|
||
'behavior.all_severities': 'Alle Schweregrade',
|
||
'behavior.all_resolved': 'Alle Status',
|
||
'behavior.add_incident': 'Vorfall erfassen',
|
||
'behavior.edit_incident': 'Vorfall bearbeiten',
|
||
'behavior.add_category': 'Kategorie hinzufügen',
|
||
'behavior.edit_category': 'Kategorie bearbeiten',
|
||
'behavior.field.student': 'Schüler:in',
|
||
'behavior.field.category': 'Kategorie',
|
||
'behavior.field.date': 'Datum',
|
||
'behavior.field.severity': 'Schweregrad',
|
||
'behavior.field.description': 'Beschreibung',
|
||
'behavior.field.location': 'Ort',
|
||
'behavior.field.follow_up': 'Folgende Maßnahme',
|
||
'behavior.field.name': 'Name',
|
||
'behavior.field.color': 'Farbe',
|
||
'behavior.field.valence': 'Wertung',
|
||
'behavior.field.icon': 'Symbol (Emoji)',
|
||
'behavior.field.class': 'Klasse',
|
||
'behavior.field.resolved': 'Als gelöst markieren',
|
||
'behavior.severity.minor': 'Gering',
|
||
'behavior.severity.moderate': 'Mittel',
|
||
'behavior.severity.major': 'Schwerwiegend',
|
||
'behavior.valence.positive': 'Positiv',
|
||
'behavior.valence.negative': 'Negativ',
|
||
'behavior.valence.neutral': 'Neutral',
|
||
'behavior.resolved': 'Gelöst',
|
||
'behavior.unresolved': 'Offen',
|
||
'behavior.mark_resolved': 'Als gelöst markieren',
|
||
'behavior.mark_unresolved': 'Wieder eröffnen',
|
||
'behavior.resolved_by': 'Gelöst von',
|
||
'behavior.resolved_at': 'Gelöst am',
|
||
'behavior.created_at': 'Erfasst am',
|
||
'behavior.by_teacher': 'Erfasst von',
|
||
'behavior.delete_incident_title': 'Vorfall löschen',
|
||
'behavior.delete_incident_desc': 'Möchten Sie diesen Vorfall wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
|
||
'behavior.delete_category_title': 'Kategorie löschen',
|
||
'behavior.delete_category_desc': 'Möchten Sie diese Kategorie wirklich löschen?',
|
||
'behavior.delete_category_blocked': 'Kategorie kann nicht gelöscht werden — es sind noch Vorfälle zugeordnet.',
|
||
'behavior.save': 'Speichern',
|
||
'behavior.cancel': 'Abbrechen',
|
||
'behavior.delete': 'Löschen',
|
||
'behavior.edit': 'Bearbeiten',
|
||
'behavior.saved_incident': 'Vorfall gespeichert',
|
||
'behavior.deleted_incident': 'Vorfall gelöscht',
|
||
'behavior.saved_category': 'Kategorie gespeichert',
|
||
'behavior.deleted_category': 'Kategorie gelöscht',
|
||
'behavior.marked_resolved': 'Vorfall als gelöst markiert',
|
||
'behavior.marked_unresolved': 'Vorfall wieder eröffnet',
|
||
'behavior.location.classroom': 'Klassenzimmer',
|
||
'behavior.location.playground': 'Pausenhof',
|
||
'behavior.location.hallway': 'Flur',
|
||
'behavior.location.gym': 'Turnhalle',
|
||
'behavior.location.auditorium': 'Aula',
|
||
'behavior.location.library': 'Bibliothek',
|
||
'behavior.location.cafeteria': 'Mensa',
|
||
'behavior.location.other': 'Sonstiger Ort',
|
||
'behavior.followup.parent_talk': 'Elterngespräch',
|
||
'behavior.followup.detention': 'Nachsitzen',
|
||
'behavior.followup.praise_circle': 'Lob im Kreis',
|
||
'behavior.followup.note_home': 'Notiz nach Hause',
|
||
'behavior.followup.warning': 'Ermahnung',
|
||
'behavior.followup.mediation': 'Mediation',
|
||
'behavior.followup.prize': 'Belohnung',
|
||
'behavior.followup.none': 'Keine',
|
||
'behavior.filter_section': 'Filter',
|
||
'behavior.filter.date_from': 'Von',
|
||
'behavior.filter.date_to': 'Bis',
|
||
'behavior.filter.category': 'Kategorie',
|
||
'behavior.filter.severity': 'Schweregrad',
|
||
'behavior.filter.resolved': 'Status',
|
||
'behavior.filter.student': 'Schüler:in',
|
||
'behavior.stat.this_month': 'Vorfälle diesen Monat',
|
||
'behavior.stat.positive': 'Positive Vorfälle',
|
||
'behavior.stat.negative': 'Negative Vorfälle',
|
||
'behavior.stat.resolution_rate': 'Lösungsquote',
|
||
'behavior.stat.by_category': 'Vorfälle nach Kategorie',
|
||
'behavior.stat.by_valence': 'Verteilung nach Wertung',
|
||
'behavior.stat.top_students': 'Top 5 Schüler:innen nach Vorfällen',
|
||
'behavior.stat.no_data': 'Noch keine Daten verfügbar',
|
||
'behavior.stat.total': 'Gesamt',
|
||
'behavior.stat.pos_count': 'Positiv',
|
||
'behavior.stat.neg_count': 'Negativ',
|
||
'behavior.incidents_count': 'Vorfälle',
|
||
'behavior.preview': 'Vorschau',
|
||
'behavior.no_class_selected': 'Bitte wählen Sie eine Klasse aus',
|
||
'behavior.no_class_selected_desc': 'Wählen Sie oben eine Klasse aus, um Vorfälle zu erfassen und anzusehen.',
|
||
'behavior.schoolwide': 'Schulweit',
|
||
'behavior.color_helper': 'Hex-Farbe, z. B. #10b981',
|
||
'behavior.icon_helper': 'Ein Emoji zur schnellen Erkennung, z. B. 🤝',
|
||
'behavior.name_placeholder': 'z. B. Hilfsbereitschaft',
|
||
'behavior.description_placeholder': 'Was ist passiert?',
|
||
'behavior.location_placeholder': 'z. B. Klassenzimmer',
|
||
'behavior.followup_placeholder': 'z. B. Elterngespräch',
|
||
'behavior.detail': 'Detail',
|
||
'behavior.required_student': 'Bitte wählen Sie eine Schüler:in aus',
|
||
'behavior.required_category': 'Bitte wählen Sie eine Kategorie aus',
|
||
'behavior.required_description': 'Bitte geben Sie eine Beschreibung ein',
|
||
'behavior.duplicate_category': 'Eine Kategorie mit diesem Namen existiert bereits',
|
||
'behavior.confirm_close': 'Möchten Sie den Dialog wirklich schließen? Nicht gespeicherte Änderungen gehen verloren.',
|
||
|
||
// Curriculum Coverage — Kompetenzabdeckung
|
||
'nav.coverage': 'Abdeckung',
|
||
'coverage.title': 'Kompetenzabdeckung',
|
||
'coverage.subtitle': 'Sehen Sie, welche Kompetenzen bereits erfasst wurden und wo Lücken bestehen',
|
||
'coverage.loading': 'Wird geladen…',
|
||
'coverage.error': 'Fehler beim Laden der Abdeckungsdaten',
|
||
'coverage.select_class': 'Bitte wählen Sie eine Klasse aus',
|
||
'coverage.select_subject': 'Alle Fächer',
|
||
'coverage.no_assignments': 'Kein Kompetenzraster zugewiesen',
|
||
'coverage.no_assignments_desc': 'Diese Klasse hat noch kein Kompetenzraster. Weisen Sie im Kompetenzraster-Bereich ein Raster zu, um die Abdeckung zu analysieren.',
|
||
'coverage.go_to_grid': 'Zum Kompetenzraster',
|
||
'coverage.kpi.total': 'Kompetenzen Insgesamt',
|
||
'coverage.kpi.assessed': 'Abgedeckt',
|
||
'coverage.kpi.not_assessed': 'Nicht Abgedeckt',
|
||
'coverage.kpi.students': 'Schüler:innen',
|
||
'coverage.section.by_category': 'Abdeckung nach Kategorie',
|
||
'coverage.section.by_category_desc': 'Übersicht über die Erfassung pro Kompetenzkategorie',
|
||
'coverage.section.matrix': 'Kompetenzmatrix',
|
||
'coverage.section.matrix_desc': 'Detaillierte Übersicht aller Kompetenzen',
|
||
'coverage.section.action_needed': 'Handlungsbedarf',
|
||
'coverage.section.action_needed_desc': 'Diese Kompetenzen wurden noch nicht oder unvollständig erfasst',
|
||
'coverage.section.recent': 'Zuletzt erfasst',
|
||
'coverage.section.recent_desc': 'Die 5 am kürzesten erfassten Kompetenzen',
|
||
'coverage.filter.all': 'Alle',
|
||
'coverage.filter.covered': 'Abgedeckt',
|
||
'coverage.filter.partial': 'Teilweise',
|
||
'coverage.filter.untouched': 'Nicht begonnen',
|
||
'coverage.sort.by_category': 'Nach Kategorie',
|
||
'coverage.sort.by_status': 'Nach Status',
|
||
'coverage.sort.by_recent': 'Zuletzt erfasst',
|
||
'coverage.search_placeholder': 'Kompetenz suchen (Code oder Titel)…',
|
||
'coverage.status.covered': 'Vollständig erfasst',
|
||
'coverage.status.partial': 'Teilweise erfasst',
|
||
'coverage.status.untouched': 'Nicht erfasst',
|
||
'coverage.assessed_count': 'Erfasste Schüler:innen',
|
||
'coverage.last_assessed': 'Zuletzt erfasst',
|
||
'coverage.never_assessed': 'Nie erfasst',
|
||
'coverage.assessments_count': 'Bewertungen',
|
||
'coverage.progress_count': 'Fortschritte',
|
||
'coverage.empty_action': 'Alle Kompetenzen erfasst!',
|
||
'coverage.empty_action_desc': 'Alle Kompetenzen dieser Klasse wurden mindestens teilweise erfasst.',
|
||
'coverage.empty_recent': 'Noch keine Erfassungen',
|
||
'coverage.empty_recent_desc': 'Sobald Sie Fortschritte eintragen, erscheinen diese hier.',
|
||
'coverage.record_progress': 'Erfassen',
|
||
'coverage.guide.title': 'So funktioniert\'s',
|
||
'coverage.guide.subtitle': 'Drei Schritte zur Abdeckungsanalyse',
|
||
'coverage.guide.step1_title': 'Klasse wählen',
|
||
'coverage.guide.step1_desc': 'Wählen Sie oben eine Klasse aus, um die zugewiesenen Kompetenzraster zu laden.',
|
||
'coverage.guide.step2_title': 'Fach wählen (optional)',
|
||
'coverage.guide.step2_desc': 'Filtern Sie nach einem bestimmten Fach oder zeigen Sie alle Fächer auf einmal.',
|
||
'coverage.guide.step3_title': 'Abdeckung analysieren',
|
||
'coverage.guide.step3_desc': 'Identifizieren Sie Lücken und gezielt zu erfassende Kompetenzen.',
|
||
'coverage.no_data': 'Keine Daten verfügbar',
|
||
'coverage.coverage_percent': 'Abgedeckt',
|
||
'coverage.not_covered_percent': 'Offen',
|
||
'attendance.empty_action_hint': 'Klicken Sie auf "Neue Sitzung" oben, um eine Anwesenheitssitzung zu starten.',
|
||
'student_detail.sparse_chart_hint': 'Kompetenzbereiche ohne Bewertung werden als minimaler Wert dargestellt.',
|
||
'student_detail.no_assessment': 'k.A.',
|
||
'analytics.level_range': '(0–4)',
|
||
'analytics.calendar_week_full': 'Kalenderwoche',
|
||
'flower.empty_tip': 'Wählen Sie eine Klasse und eine Schüler:in aus, um die Kompetenzblume zu sehen.',
|
||
'grading.empty_description': 'Notenschemata definieren, wie verschiedene Bewertungen (Fortschritt, Prüfungen, etc.) zu einer Gesamtnote kombiniert werden. Wählen Sie eine Klasse und ein Fach, um zu beginnen.',
|
||
'parents.no_conversation_selected': 'Wählen Sie eine Konversation aus der Liste',
|
||
|
||
// ─── Rubric Library ──────────────────────────────────────────────
|
||
'nav.rubrics': 'Bewertungsraster',
|
||
'rubrics.title': 'Bewertungsraster-Bibliothek',
|
||
'rubrics.subtitle': 'Erstellen und verwalten Sie wiederverwendbare Bewertungsraster',
|
||
'rubrics.create': 'Raster erstellen',
|
||
'rubrics.edit': 'Raster bearbeiten',
|
||
'rubrics.duplicate': 'Duplizieren',
|
||
'rubrics.delete': 'Löschen',
|
||
'rubrics.detail': 'Raster-Details',
|
||
'rubrics.print': 'Drucken',
|
||
'rubrics.save': 'Speichern',
|
||
'rubrics.cancel': 'Abbrechen',
|
||
'rubrics.close': 'Schließen',
|
||
'rubrics.type_analytic': 'Analytisch',
|
||
'rubrics.type_holistic': 'Ganzheitlich',
|
||
'rubrics.criteria': 'Kriterien',
|
||
'rubrics.levels': 'Niveaustufen',
|
||
'rubrics.add_criterion': 'Kriterium hinzufügen',
|
||
'rubrics.add_level': 'Stufe hinzufügen',
|
||
'rubrics.remove_criterion': 'Kriterium entfernen',
|
||
'rubrics.remove_level': 'Stufe entfernen',
|
||
'rubrics.criterion_name': 'Kriteriumsname',
|
||
'rubrics.criterion_description': 'Kriteriumsbeschreibung',
|
||
'rubrics.criterion_weight': 'Gewichtung',
|
||
'rubrics.criterion_max_points': 'Max. Punkte',
|
||
'rubrics.level_label': 'Stufenbezeichnung',
|
||
'rubrics.level_description': 'Deskriptor',
|
||
'rubrics.level_points': 'Punkte',
|
||
'rubrics.field.title': 'Titel',
|
||
'rubrics.field.description': 'Beschreibung',
|
||
'rubrics.field.type': 'Raster-Typ',
|
||
'rubrics.field.subject': 'Fach',
|
||
'rubrics.field.max_points': 'Maximale Punktzahl',
|
||
'rubrics.field.is_public': 'Schulweit teilen',
|
||
'rubrics.field.is_public_hint': 'Andere Lehrkräfte können dieses Raster verwenden',
|
||
'rubrics.no_subject': 'Kein Fach',
|
||
'rubrics.all_subjects': 'Alle Fächer',
|
||
'rubrics.public': 'Öffentlich',
|
||
'rubrics.private': 'Privat',
|
||
'rubrics.version': 'Version',
|
||
'rubrics.by_teacher': 'Von',
|
||
'rubrics.max_points': 'Max. Punkte',
|
||
'rubrics.search_placeholder': 'Raster suchen…',
|
||
'rubrics.filter_subject': 'Fach filtern',
|
||
'rubrics.filter_public': 'Nur eigene',
|
||
'rubrics.filter_all': 'Alle Raster',
|
||
'rubrics.empty_title': 'Noch keine Bewertungsraster',
|
||
'rubrics.empty_desc': 'Erstellen Sie Ihr erstes Bewertungsraster, um standardisierte Bewertungskriterien für Ihre Klasse zu definieren.',
|
||
'rubrics.empty_create': 'Erstes Raster erstellen',
|
||
'rubrics.loading': 'Laden…',
|
||
'rubrics.error': 'Fehler beim Laden der Bewertungsraster',
|
||
'rubrics.saved': 'Bewertungsraster gespeichert',
|
||
'rubrics.deleted': 'Bewertungsraster gelöscht',
|
||
'rubrics.duplicated': 'Bewertungsraster dupliziert',
|
||
'rubrics.delete_title': 'Bewertungsraster löschen',
|
||
'rubrics.delete_desc': 'Sind Sie sicher, dass Sie dieses Bewertungsraster löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.',
|
||
'rubrics.preview': 'Vorschau',
|
||
'rubrics.edit_form': 'Bearbeiten',
|
||
'rubrics.criteria_count': '{count} Kriterien',
|
||
'rubrics.criterion': 'Kriterium',
|
||
'rubrics.level': 'Stufe',
|
||
'rubrics.weight': 'Gewichtung',
|
||
'rubrics.points': 'Punkte',
|
||
'rubrics.total_weight': 'Gesamtgewichtung',
|
||
'rubrics.total_points': 'Gesamtpunktzahl',
|
||
'rubrics.title_required': 'Bitte geben Sie einen Titel ein',
|
||
'rubrics.criteria_required': 'Mindestens ein Kriterium ist erforderlich',
|
||
'rubrics.levels_required': 'Jedes Kriterium benötigt mindestens eine Stufe',
|
||
'rubrics.level_header': 'Stufe {order}',
|
||
'rubrics.table_criterion': 'Kriterium',
|
||
'rubrics.table_weight_short': 'Gew.',
|
||
'rubrics.confirm_close': 'Nicht gespeicherte Änderungen gehen verloren. Fortfahren?',
|
||
|
||
// ── Comments Bank (Zeugnisbemerkungen) ──────────────────────────────
|
||
'nav.comments': 'Bemerkungen',
|
||
'nav.drawing': 'Zeichnen',
|
||
'comments.title': 'Zeugnisbemerkungen',
|
||
'comments.subtitle': 'Bibliothek wiederverwendbarer Bemerkungstexte für Zeugnisse',
|
||
'comments.tab_entries': 'Bemerkungen',
|
||
'comments.tab_categories': 'Kategorien',
|
||
'comments.tab_statistics': 'Statistik',
|
||
'comments.search_placeholder': 'Bemerkungen durchsuchen…',
|
||
'comments.create_entry': 'Bemerkung erstellen',
|
||
'comments.edit_entry': 'Bemerkung bearbeiten',
|
||
'comments.create_entry_desc': 'Erstellen Sie eine neue wiederverwendbare Bemerkung für Zeugnisse.',
|
||
'comments.edit_entry_desc': 'Bearbeiten Sie die Bemerkung.',
|
||
'comments.field_title': 'Titel',
|
||
'comments.title_placeholder': 'Kurzer Titel der Bemerkung',
|
||
'comments.field_category': 'Kategorie',
|
||
'comments.field_subject': 'Fach',
|
||
'comments.no_subject': 'Kein Fach',
|
||
'comments.field_grade_level': 'Klassenstufe',
|
||
'comments.field_text': 'Bemerkungstext',
|
||
'comments.text_placeholder': 'Schreiben Sie den Bemerkungstext hier…',
|
||
'comments.field_public': 'Öffentlich',
|
||
'comments.field_tags': 'Tags',
|
||
'comments.tags_placeholder': 'z.B. motivation, sozial, fachlich',
|
||
'comments.preview': 'Vorschau',
|
||
'comments.public': 'Öffentlich',
|
||
'comments.private': 'Privat',
|
||
'comments.usage_count': 'Verwendungen',
|
||
'comments.entries_count': 'Einträge',
|
||
'comments.copy_success': 'In die Zwischenablage kopiert',
|
||
'comments.copy_text': 'Text kopieren',
|
||
'comments.saved': 'Bemerkung gespeichert',
|
||
'comments.created': 'Bemerkung erstellt',
|
||
'comments.deleted': 'Bemerkung gelöscht',
|
||
'comments.error': 'Fehler beim Laden',
|
||
'comments.validation_required': 'Bitte füllen Sie alle Pflichtfelder aus.',
|
||
'comments.empty_title': 'Noch keine Bemerkungen',
|
||
'comments.empty_desc': 'Erstellen Sie Ihre erste wiederverwendbare Bemerkung für Zeugnisse.',
|
||
'comments.empty_create': 'Erste Bemerkung erstellen',
|
||
'comments.filter_category': 'Kategorie',
|
||
'comments.filter_subject': 'Fach',
|
||
'comments.filter_grade': 'Klassenstufe',
|
||
'comments.filter_visibility': 'Sichtbarkeit',
|
||
'comments.all_categories': 'Alle Kategorien',
|
||
'comments.all_subjects': 'Alle Fächer',
|
||
'comments.all_grades': 'Alle Klassen',
|
||
'comments.all_visibility': 'Alle',
|
||
'comments.public_only': 'Nur öffentliche',
|
||
'comments.private_only': 'Nur private',
|
||
'comments.categories_title': 'Bemerkungskategorien',
|
||
'comments.add_category': 'Kategorie hinzufügen',
|
||
'comments.edit_category': 'Kategorie bearbeiten',
|
||
'comments.add_category_desc': 'Erstellen Sie eine neue Kategorie für Bemerkungen.',
|
||
'comments.edit_category_desc': 'Bearbeiten Sie die Kategorie.',
|
||
'comments.category_name': 'Name',
|
||
'comments.category_name_placeholder': 'z.B. Sozialverhalten',
|
||
'comments.category_name_required': 'Bitte geben Sie einen Kategorienamen ein.',
|
||
'comments.category_color': 'Farbe',
|
||
'comments.category_icon': 'Icon',
|
||
'comments.category_icon_placeholder': '🤝',
|
||
'comments.category_saved': 'Kategorie gespeichert',
|
||
'comments.category_created': 'Kategorie erstellt',
|
||
'comments.category_deleted': 'Kategorie gelöscht',
|
||
'comments.category_empty_title': 'Noch keine Kategorien',
|
||
'comments.category_empty_desc': 'Erstellen Sie Ihre erste Kategorie.',
|
||
'comments.delete_entry_title': 'Bemerkung löschen',
|
||
'comments.delete_entry_desc': 'Möchten Sie diese Bemerkung wirklich löschen? Diese Aktion kann nicht rückgängig gemacht werden.',
|
||
'comments.delete_category_title': 'Kategorie löschen',
|
||
'comments.delete_category_desc': 'Möchten Sie diese Kategorie wirklich löschen? Kategorien mit vorhandenen Bemerkungen können nicht gelöscht werden.',
|
||
'comments.stat_total': 'Gesamt',
|
||
'comments.stat_public': 'Öffentlich',
|
||
'comments.stat_categories': 'Kategorien',
|
||
'comments.stat_most_used': 'Meistverwendet',
|
||
'comments.chart_by_category': 'Bemerkungen nach Kategorie',
|
||
'comments.top_used_title': 'Top 5 meistverwendete Bemerkungen',
|
||
|
||
// Notifications
|
||
'notifications.title': 'Benachrichtigungen',
|
||
'notifications.empty': 'Keine Benachrichtigungen',
|
||
'notifications.mark_all_read': 'Alle als gelesen markieren',
|
||
'notifications.upcoming_assessments': 'Anstehende Leistungsüberprüfungen',
|
||
'notifications.missing_observations': 'Fehlende Beobachtungen',
|
||
'notifications.assessment_deadline': 'Prüfung in {days} Tagen',
|
||
'notifications.no_progress_for': 'Kein Fortschritt seit {days} Tagen für {student}',
|
||
'notifications.record_now': 'Jetzt erfassen',
|
||
'notifications.to_assessment': 'Zur Bewertung',
|
||
'notifications.to_report': 'Zum Bericht',
|
||
'notifications.in_days': 'in {days} Tagen',
|
||
'notifications.days_ago': 'vor {days} Tagen',
|
||
|
||
// Onboarding
|
||
'onboarding.welcome_title': 'Willkommen bei CompetenceTrack!',
|
||
'onboarding.welcome_desc': 'Ihre freie Kompetenz- & Benotungsplattform für Schulen. Lassen Sie uns eine kurze Einführung machen.',
|
||
'onboarding.dashboard_title': 'Dashboard',
|
||
'onboarding.dashboard_desc': 'Hier sehen Sie einen Überblick über alle Klassen, Schüler und aktuelle Aktivitäten. Nutzen Sie die Schnellaktionen für häufige Aufgaben.',
|
||
'onboarding.progress_title': 'Lernfortschritt',
|
||
'onboarding.progress_desc': 'Erfassen Sie Beobachtungen und Fortschritte einzelner Schüler. Wählen Sie eine Klasse und ein Fach, um Einträge zu loggen.',
|
||
'onboarding.flower_title': 'Kompetenzblume',
|
||
'onboarding.flower_desc': 'Visualisieren Sie die Kompetenzentwicklung als Radar-Chart. Vergleichen Sie Schüler und verfolgen Sie Trends über die Zeit.',
|
||
'onboarding.reports_title': 'Berichte',
|
||
'onboarding.reports_desc': 'Erstellen Sie Zeugnis- und Entwicklungsberichte. Exportieren Sie diese als PDF oder drucken Sie sie direkt.',
|
||
'onboarding.done_title': 'Fertig!',
|
||
'onboarding.done_desc': 'Sie sind bereit, CompetenceTrack zu nutzen. Bei Fragen klicken Sie auf das Hilfe-Symbol in der Kopfzeile.',
|
||
'onboarding.skip': 'Überspringen',
|
||
'onboarding.next': 'Weiter',
|
||
'onboarding.back': 'Zurück',
|
||
'onboarding.start': 'Loslegen',
|
||
'onboarding.step': 'Schritt {current} von {total}',
|
||
'onboarding.classes_title': 'Klassen & Schüler',
|
||
'onboarding.classes_desc': 'Verwalten Sie Ihre Klassen und Schüler. Erstellen Sie neue Klassen, fügen Sie Schüler hinzu und weisen Sie Kompetenzraster zu.',
|
||
'onboarding.assessments_title': 'Leistungsüberprüfungen',
|
||
'onboarding.assessments_desc': 'Erstellen und verwalten Sie Leistungsüberprüfungen. Bewerten Sie Schüler und verfolgen Sie deren Fortschritt.',
|
||
'onboarding.grading_title': 'Benotung',
|
||
'onboarding.grading_desc': 'Konfigurieren Sie Notenschemata und berechnen Sie Noten basierend auf Kompetenzniveaus und Leistungsüberprüfungen.',
|
||
'onboarding.notebooks_title': 'Digitale Hefte',
|
||
'onboarding.notebooks_desc': 'Erstellen Sie digitale Notizbücher für Ihre Fächer. Spart Papier und schützt die Umwelt — jedes Heft spart ca. 50 Seiten.',
|
||
'onboarding.drawing_title': 'Zeichnen',
|
||
'onboarding.drawing_desc': 'Nutzen Sie die digitale Zeichenfläche für Skizzen und Illustrationen. Stylus-optimiert mit Druckempfindlichkeit.',
|
||
'onboarding.calendar_title': 'Kalender & Anwesenheit',
|
||
'onboarding.calendar_desc': 'Verwalten Sie den Stundenplan und die Anwesenheit Ihrer Schüler. Behalten Sie den Überblick über Fehlzeiten.',
|
||
'onboarding.parents_title': 'Elternkommunikation',
|
||
'onboarding.parents_desc': 'Kommunizieren Sie mit Eltern über den Lernfortschritt. Senden Sie Berichte und halten Sie den Dialog aufrecht.',
|
||
'onboarding.environmental_title': 'Umweltschutz',
|
||
'onboarding.environmental_desc': 'CompetenceTrack spart Papier: Jeder digitale Eintrag ersetzt ca. 50 Seiten Papier. Danke für Ihren Beitrag zum Umweltschutz!',
|
||
|
||
// Batch deletion (progress entries)
|
||
'progress.batch_select': 'Auswählen',
|
||
'progress.batch_select_all': 'Alle auswählen',
|
||
'progress.batch_deselect_all': 'Alle abwählen',
|
||
'progress.batch_selected': '{count} Einträge ausgewählt',
|
||
'progress.batch_delete': 'Ausgewählte löschen',
|
||
'progress.batch_cancel': 'Abbrechen',
|
||
'progress.batch_delete_confirm': '{count} Einträge wirklich löschen?',
|
||
'progress.batch_mode': 'Auswahlmodus',
|
||
|
||
// Drag-and-drop (classes)
|
||
'classes.seating_order': 'Sitzordnung',
|
||
'classes.reorder_mode': 'Neu anordnen',
|
||
'classes.position': 'Position',
|
||
'classes.drag_hint': 'Ziehen zum Neuordnen',
|
||
|
||
// Color palette (flower)
|
||
'flower.color_scheme': 'Farbschema',
|
||
'flower.color_emerald': 'Smaragd',
|
||
'flower.color_sapphire': 'Saphir',
|
||
'flower.color_amethyst': 'Amethyst',
|
||
'flower.color_amber': 'Bernstein',
|
||
'flower.color_ruby': 'Rubin',
|
||
'flower.color_turquoise': 'Türkis',
|
||
'flower.color_custom': 'Benutzerdefiniert',
|
||
|
||
// ─── Demo accounts ──────────────────────────────────────────────────
|
||
'auth.demo_section_title': 'Demo-Zugang',
|
||
'auth.demo_section_subtitle': 'Schnell ausprobieren mit verschiedenen Rollen',
|
||
'auth.demo_admin': 'Demo Admin',
|
||
'auth.demo_teacher': 'Demo Lehrer',
|
||
'auth.demo_student': 'Demo Schüler',
|
||
'auth.demo_parent': 'Demo Elternteil',
|
||
'auth.demo_logging_in': 'Anmeldung als Demo...',
|
||
'settings.demo_accounts': 'Demo-Konten',
|
||
'settings.demo_accounts_desc': 'Demo-Konten verwalten',
|
||
'settings.demo_enable': 'Aktivieren',
|
||
'settings.demo_disable': 'Deaktivieren',
|
||
'settings.demo_disable_all': 'Alle Demo-Konten deaktivieren',
|
||
'settings.demo_delete_all': 'Alle Demo-Konten löschen',
|
||
'settings.demo_toggle_hint': 'Deaktivierte Demo-Konten können nicht angemeldet werden',
|
||
'settings.demo_delete_confirm': 'Alle Demo-Konten wirklich löschen?',
|
||
'settings.demo_no_accounts': 'Keine Demo-Konten vorhanden',
|
||
'badge.demo': 'Demo',
|
||
'settings.demo_active': 'Aktiv',
|
||
'settings.demo_inactive': 'Inaktiv',
|
||
'settings.demo_delete_one_confirm': 'Dieses Demo-Konto wirklich löschen?',
|
||
'settings.demo_disabled': 'Demo-Konten deaktiviert',
|
||
'settings.demo_enabled': 'Demo-Konten aktiviert',
|
||
'settings.demo_deleted': 'Demo-Konten gelöscht',
|
||
'settings.demo_account_deleted': 'Demo-Konto gelöscht',
|
||
'settings.demo_account_toggled': 'Demo-Konto-Status geändert',
|
||
|
||
// Keyboard shortcuts
|
||
'shortcuts.title': 'Tastaturkurzbefehle',
|
||
'shortcuts.description': 'Verfügbare Tastaturkurzbefehle',
|
||
'shortcuts.navigation': 'Navigation',
|
||
'shortcuts.actions': 'Aktionen',
|
||
'shortcuts.switch_view': 'Ansicht wechseln',
|
||
'shortcuts.quick_search': 'Schnellsuche',
|
||
'shortcuts.new_entry': 'Neuen Eintrag erstellen',
|
||
'shortcuts.show_shortcuts': 'Kurzbefehle anzeigen',
|
||
'shortcuts.close_dialog': 'Dialog schließen',
|
||
'shortcuts.command_palette': 'Befehlspalette',
|
||
'shortcuts.recent_actions': 'Letzte Aktionen',
|
||
'shortcuts.views': 'Ansichten',
|
||
'shortcuts.quick_actions': 'Schnellaktionen',
|
||
'shortcuts.new_notebook': 'Neues Heft',
|
||
'shortcuts.drawing': 'Zeichnen',
|
||
'shortcuts.new_page': 'Neue Seite',
|
||
'shortcuts.export_pdf': 'PDF exportieren',
|
||
'shortcuts.archive_toggle': 'Archiv umschalten',
|
||
'shortcuts.close_notebook': 'Heft schließen',
|
||
'shortcuts.notebooks_drawing': 'Hefte & Zeichnen',
|
||
|
||
// Drawing
|
||
'drawing.title': 'Zeichnungen',
|
||
'drawing.subtitle': 'Digital zeichnen statt Papier verschwenden',
|
||
'drawing.new': 'Neue Zeichnung',
|
||
'drawing.gallery': 'Galerie',
|
||
'drawing.edit': 'Bearbeiten',
|
||
'drawing.delete': 'Löschen',
|
||
'drawing.delete_confirm': 'Zeichnung wirklich löschen?',
|
||
'drawing.delete_desc': 'Diese Aktion kann nicht rückgängig gemacht werden.',
|
||
'drawing.save': 'Speichern',
|
||
'drawing.save_success': 'Zeichnung gespeichert',
|
||
'drawing.export_png': 'Als PNG exportieren',
|
||
'drawing.auto_save': 'Automatisch gespeichert',
|
||
'drawing.no_drawings': 'Keine Zeichnungen vorhanden',
|
||
'drawing.no_drawings_desc': 'Erstellen Sie Ihre erste digitale Zeichnung.',
|
||
'drawing.title_label': 'Titel',
|
||
'drawing.description_label': 'Beschreibung',
|
||
'drawing.subject_label': 'Fach',
|
||
'drawing.class_label': 'Klasse',
|
||
'drawing.public': 'Öffentlich teilen',
|
||
'drawing.public_desc': 'Mit der Klasse teilen',
|
||
'drawing.private': 'Privat',
|
||
'drawing.canvas': 'Zeichenfläche',
|
||
'drawing.exit': 'Zeichnung verlassen',
|
||
'drawing.clear': 'Leeren',
|
||
'drawing.clear_confirm': 'Zeichenfläche wirklich leeren?',
|
||
'drawing.undo': 'Rückgängig',
|
||
'drawing.redo': 'Wiederholen',
|
||
'drawing.tool_pencil': 'Stift',
|
||
'drawing.tool_pen': 'Füller',
|
||
'drawing.tool_line': 'Linie',
|
||
'drawing.tool_rectangle': 'Rechteck',
|
||
'drawing.tool_circle': 'Kreis',
|
||
'drawing.tool_eraser': 'Radiergummi',
|
||
'drawing.color': 'Farbe',
|
||
'drawing.stroke_width': 'Strichstärke',
|
||
'drawing.background': 'Hintergrund',
|
||
'drawing.bg_blank': 'Weiss',
|
||
'drawing.bg_lined': 'Liniert',
|
||
'drawing.bg_grid': 'Kariert',
|
||
'drawing.bg_dotted': 'Gepunktet',
|
||
'drawing.guide_mode': 'Hilfslinien',
|
||
'drawing.guide_shapes': 'Formvorlagen',
|
||
'drawing.guide_off': 'Aus',
|
||
'drawing.guide_basic': 'Grundformen',
|
||
'drawing.guide_circles': 'Kreise',
|
||
'drawing.guide_perspective': 'Perspektive',
|
||
'drawing.pressure': 'Druckempfindlichkeit',
|
||
'drawing.loading': 'Laden...',
|
||
'drawing.saving': 'Speichern...',
|
||
'drawing.filter_subject': 'Nach Fach filtern',
|
||
'drawing.all_subjects': 'Alle Fächer',
|
||
'drawing.created_at': 'Erstellt',
|
||
'drawing.updated_at': 'Aktualisiert',
|
||
'drawing.untitled': 'Unbenannte Zeichnung',
|
||
'drawing.eco_message': 'Digital zeichnen statt Papier verschwenden',
|
||
'drawing.eco_tip': 'Jede digitale Zeichnung spart Papier und schont die Umwelt',
|
||
|
||
// ─── Digital Notebooks ──────────────────────────────────────────────
|
||
'nav.notebooks': 'Hefte',
|
||
'notebooks.title': 'Digitale Hefte',
|
||
'notebooks.subtitle': 'Papier sparen, Umwelt schützen — digitale Hefte statt Papierhefte',
|
||
'notebooks.create': 'Neues Heft erstellen',
|
||
'notebooks.create_title': 'Neues digitales Heft erstellen',
|
||
'notebooks.create_desc': 'Erstellen Sie ein digitales Heft und sparen Sie Papier.',
|
||
'notebooks.edit_title': 'Heft bearbeiten',
|
||
'notebooks.library': 'Hefte-Bibliothek',
|
||
'notebooks.archived': 'Archivierte Hefte',
|
||
'notebooks.show_archived': 'Archivierte anzeigen',
|
||
'notebooks.hide_archived': 'Archivierte ausblenden',
|
||
'notebooks.archive': 'Archivieren',
|
||
'notebooks.unarchive': 'Wiederherstellen',
|
||
'notebooks.delete': 'Löschen',
|
||
'notebooks.delete_confirm': 'Dieses Heft wirklich löschen? Alle Seiten gehen verloren.',
|
||
'notebooks.no_notebooks': 'Keine Hefte vorhanden',
|
||
'notebooks.no_notebooks_desc': 'Erstellen Sie Ihr erstes digitales Heft.',
|
||
'notebooks.no_notebooks_create': 'Erstes Heft erstellen',
|
||
'notebooks.no_archived': 'Keine archivierten Hefte',
|
||
'notebooks.field_title': 'Titel',
|
||
'notebooks.field_title_placeholder': 'Hefttitel eingeben',
|
||
'notebooks.field_description': 'Beschreibung',
|
||
'notebooks.field_description_placeholder': 'Optionale Beschreibung des Hefts',
|
||
'notebooks.field_type': 'Hefttyp',
|
||
'notebooks.field_subject': 'Fach',
|
||
'notebooks.field_class': 'Klasse',
|
||
'notebooks.field_color': 'Farbe',
|
||
'notebooks.field_icon': 'Symbol',
|
||
'notebooks.field_public': 'Mit Klasse teilen',
|
||
'notebooks.field_public_hint': 'Andere können dieses Heft einsehen',
|
||
'notebooks.type_lined': 'Liniert',
|
||
'notebooks.type_grid': 'Kariert',
|
||
'notebooks.type_blank': 'Blanko',
|
||
'notebooks.type_dotted': 'Punktiert',
|
||
'notebooks.type_music': 'Musik',
|
||
'notebooks.type_calligraphy': 'Kalligraphie',
|
||
'notebooks.type_lined_desc': 'Liniertes Heft für Text',
|
||
'notebooks.type_grid_desc': 'Kariertes Heft für Mathematik',
|
||
'notebooks.type_blank_desc': 'Blanko-Heft für freies Gestalten',
|
||
'notebooks.type_dotted_desc': 'Punktiertes Heft für Notizen',
|
||
'notebooks.type_music_desc': 'Musikheft mit Notenlinien',
|
||
'notebooks.type_calligraphy_desc': 'Kalligraphie-Heft zum Schreiben üben',
|
||
'notebooks.no_subject': 'Ohne Fach',
|
||
'notebooks.no_class': 'Ohne Klasse',
|
||
'notebooks.all_subjects': 'Alle Fächer',
|
||
'notebooks.page_count': '{count} Seiten',
|
||
'notebooks.page': 'Seite',
|
||
'notebooks.pages': 'Seiten',
|
||
'notebooks.new_page': 'Neue Seite',
|
||
'notebooks.add_page': 'Seite hinzufügen',
|
||
'notebooks.delete_page': 'Seite löschen',
|
||
'notebooks.delete_page_confirm': 'Diese Seite wirklich löschen?',
|
||
'notebooks.page_title': 'Seitentitel',
|
||
'notebooks.page_title_placeholder': 'Seitenname eingeben',
|
||
'notebooks.page_content': 'Seiteninhalt',
|
||
'notebooks.bookmark': 'Lesezeichen',
|
||
'notebooks.bookmark_add': 'Lesezeichen setzen',
|
||
'notebooks.bookmark_remove': 'Lesezeichen entfernen',
|
||
'notebooks.drawing_mode': 'Zeichnungsmodus',
|
||
'notebooks.drawing_mode_toggle': 'Zeichnen',
|
||
'notebooks.drawing_mode_exit': 'Zurück zum Text',
|
||
'notebooks.drawing_placeholder': 'Zeichnungsbereich — wird in einer separaten Komponente integriert',
|
||
'notebooks.back_to_library': 'Zurück zur Bibliothek',
|
||
'notebooks.open_notebook': 'Heft öffnen',
|
||
'notebooks.created': 'Heft erstellt',
|
||
'notebooks.updated': 'Heft aktualisiert',
|
||
'notebooks.archived_toast': 'Heft archiviert',
|
||
'notebooks.unarchived_toast': 'Heft wiederhergestellt',
|
||
'notebooks.deleted_toast': 'Heft gelöscht',
|
||
'notebooks.page_saved': 'Seite gespeichert',
|
||
'notebooks.page_added': 'Seite hinzugefügt',
|
||
'notebooks.page_deleted': 'Seite gelöscht',
|
||
'notebooks.error_load': 'Fehler beim Laden der Hefte',
|
||
'notebooks.error_save': 'Fehler beim Speichern',
|
||
'notebooks.error_create': 'Fehler beim Erstellen des Hefts',
|
||
'notebooks.loading': 'Hefte werden geladen…',
|
||
'notebooks.public': 'Geteilt',
|
||
'notebooks.private': 'Privat',
|
||
'notebooks.filter_all': 'Alle',
|
||
'notebooks.filter_subject': 'Nach Fach filtern',
|
||
'notebooks.eco_message': 'Papier sparen, Umwelt schützen',
|
||
'notebooks.eco_tip': '1 Heft = ca. 50 Seiten Papier gespart',
|
||
'notebooks.eco_total': '{count} digitale Hefte = ca. {pages} Seiten Papier gespart',
|
||
'notebooks.search_placeholder': 'Hefte durchsuchen…',
|
||
'notebooks.detail_title': 'Heft-Details',
|
||
'notebooks.page_nav': 'Seitennavigation',
|
||
'notebooks.content_area': 'Inhaltsbereich',
|
||
'notebooks.save_page': 'Seite speichern',
|
||
'notebooks.color_emerald': 'Emerald',
|
||
'notebooks.color_blue': 'Blau',
|
||
'notebooks.color_red': 'Rot',
|
||
'notebooks.color_yellow': 'Gelb',
|
||
'notebooks.color_purple': 'Lila',
|
||
'notebooks.color_orange': 'Orange',
|
||
'notebooks.color_teal': 'Teal',
|
||
'notebooks.color_pink': 'Pink',
|
||
'notebooks.title_required': 'Bitte geben Sie einen Titel ein',
|
||
'notebooks.total_notebooks': 'Hefte gesamt',
|
||
'notebooks.total_pages': 'Seiten gesamt',
|
||
'notebooks.paper_saved': 'Papier gespart',
|
||
'notebooks.pages_unit': 'Seiten',
|
||
|
||
// Notebook toolbar
|
||
'notebooks.toolbar_bold': 'Fett',
|
||
'notebooks.toolbar_italic': 'Kursiv',
|
||
'notebooks.toolbar_underline': 'Unterstrichen',
|
||
'notebooks.toolbar_heading1': 'Ueberschrift 1',
|
||
'notebooks.toolbar_heading2': 'Ueberschrift 2',
|
||
'notebooks.toolbar_heading3': 'Ueberschrift 3',
|
||
'notebooks.toolbar_bullet_list': 'Aufzaehlungsliste',
|
||
'notebooks.toolbar_numbered_list': 'Nummerierte Liste',
|
||
'notebooks.toolbar_align_left': 'Linksbuendig',
|
||
'notebooks.toolbar_align_center': 'Zentriert',
|
||
'notebooks.toolbar_align_right': 'Rechtsbuendig',
|
||
'notebooks.auto_saving': 'Automatisch speichern...',
|
||
'notebooks.auto_saved': 'Automatisch gespeichert',
|
||
'notebooks.page_thumbnail': 'Seitenvorschau',
|
||
|
||
// Drawing integration
|
||
'notebooks.drawing_saved': 'Zeichnung gespeichert',
|
||
'notebooks.drawing_page_label': 'Diese Seite enthält eine Zeichnung',
|
||
'notebooks.edit_drawing': 'Zeichnung bearbeiten',
|
||
'notebooks.switch_to_text': 'Zur Textseite wechseln',
|
||
'notebooks.drawing_section_label': 'Zeichnungsbereich',
|
||
'notebooks.open_drawing': 'Zeichnung öffnen',
|
||
'notebooks.switch_to_mixed': 'Text + Zeichnung',
|
||
|
||
// PDF Export
|
||
'notebooks.export_pdf': 'PDF exportieren',
|
||
'notebooks.export_error': 'Fehler beim Exportieren. Bitte Popups erlauben.',
|
||
'notebooks.export_drawing_note': 'Diese Seite enthält eine Zeichnung (nicht im PDF enthalten)',
|
||
'notebooks.export_empty_page': 'Leere Seite',
|
||
'notebooks.export_eco_message': 'Dieses Heft wurde digital erstellt — Papier gespart!',
|
||
|
||
// Student notebook access
|
||
'notebooks.shared_with_me': 'Mit mir geteilt',
|
||
'notebooks.my_notebooks': 'Meine Hefte',
|
||
'notebooks.shared_notebook': 'Geteiltes Heft',
|
||
|
||
// Sharing & Collaboration
|
||
'notebooks.share': 'Teilen',
|
||
'notebooks.duplicate': 'Duplizieren',
|
||
'notebooks.shared': 'Geteilt',
|
||
'notebooks.copy_suffix': ' (Kopie)',
|
||
'notebooks.templates': 'Vorlagen',
|
||
'notebooks.template_desc': 'Vorgefertigte Hefte fuer haeufige Faecher',
|
||
'notebooks.tab_shared': 'Geteilt',
|
||
'notebooks.tab_templates': 'Vorlagen',
|
||
'notebooks.share_confirm': 'Dieses Heft mit der Klasse teilen?',
|
||
'notebooks.share_confirm_desc': 'Wenn Sie dieses Heft teilen, koennen alle Schueler der Klasse es einsehen (schreibgeschuetzt).',
|
||
'notebooks.unshare_confirm': 'Teilen aufheben?',
|
||
'notebooks.unshare_confirm_desc': 'Wenn Sie das Teilen aufheben, koennen die Schueler der Klasse dieses Heft nicht mehr einsehen.',
|
||
'notebooks.duplicated': 'Heft dupliziert',
|
||
'notebooks.duplicate_error': 'Fehler beim Duplizieren des Hefts',
|
||
'notebooks.shared_notebooks': 'Geteilte Hefte',
|
||
'notebooks.shared_empty': 'Keine geteilten Hefte vorhanden',
|
||
'notebooks.shared_empty_desc': 'Hefte von anderen Lehrern werden hier angezeigt, wenn sie geteilt werden.',
|
||
'notebooks.read_only': 'Schreibgeschuetzt',
|
||
'notebooks.create_from_template': 'Aus Vorlage erstellen',
|
||
'notebooks.template_math': 'Mathematik',
|
||
'notebooks.template_german': 'Deutsch',
|
||
'notebooks.template_english': 'Englisch',
|
||
'notebooks.template_art': 'Kunst',
|
||
'notebooks.template_music': 'Musik',
|
||
'notebooks.template_science': 'Sachkunde',
|
||
'notebooks.template_math_desc': 'Kariertes Heft mit Mathe-Abschnitten',
|
||
'notebooks.template_german_desc': 'Liniertes Heft mit Schreib-Abschnitten',
|
||
'notebooks.template_english_desc': 'Liniertes Heft mit Vokabel-Abschnitten',
|
||
'notebooks.template_art_desc': 'Blanko-Heft zum Zeichnen',
|
||
'notebooks.template_music_desc': 'Musikheft zum Komponieren',
|
||
'notebooks.template_science_desc': 'Kariertes Heft fuer Experimente',
|
||
'notebooks.tab_all': 'Meine Hefte',
|
||
'notebooks.owner': 'Von',
|
||
};
|
||
|
||
const en: TranslationDict = {
|
||
// App branding
|
||
'app.name': 'CompetenceTrack',
|
||
'app.subtitle': 'Free Competency & Grading Platform for Schools',
|
||
'app.tagline': 'Open-Source Software for Competency-Based Assessment',
|
||
|
||
// Navigation
|
||
'nav.dashboard': 'Dashboard',
|
||
'nav.classes': 'Classes & Students',
|
||
'nav.competencies': 'Competency Grids',
|
||
'nav.progress': 'Progress Entries',
|
||
'nav.flower': 'Competence Flower',
|
||
'nav.assessments': 'Assessments',
|
||
'nav.grading': 'Grading',
|
||
'nav.reports': 'Reports',
|
||
'nav.student-detail': 'Student Profile',
|
||
|
||
// Common actions
|
||
'action.save': 'Save',
|
||
'action.cancel': 'Cancel',
|
||
'action.delete': 'Delete',
|
||
'action.edit': 'Edit',
|
||
'action.add': 'Add',
|
||
'action.create': 'Create',
|
||
'action.search': 'Search',
|
||
'action.filter': 'Filter',
|
||
'action.export': 'Export',
|
||
'action.close': 'Close',
|
||
'action.back': 'Back',
|
||
'action.next': 'Next',
|
||
'action.confirm': 'Confirm',
|
||
'action.refresh': 'Refresh',
|
||
'action.download': 'Download',
|
||
'action.preview': 'Preview',
|
||
'action.assign': 'Assign',
|
||
'action.select': 'Select',
|
||
'action.view': 'View',
|
||
'action.print': 'Print',
|
||
'action.generate': 'Generate',
|
||
'action.finalize': 'Finalize',
|
||
'action.override': 'Override',
|
||
'action.log_entry': 'Log Entry',
|
||
'action.create_assessment': 'Create Assessment',
|
||
'action.generate_report': 'Generate Report',
|
||
|
||
// Auth
|
||
'auth.login': 'Sign In',
|
||
'auth.register': 'Sign Up',
|
||
'auth.logout': 'Sign Out',
|
||
'auth.email': 'Email',
|
||
'auth.password': 'Password',
|
||
'auth.firstName': 'First Name',
|
||
'auth.lastName': 'Last Name',
|
||
'auth.login_title': 'Sign in to CompetenceTrack',
|
||
'auth.register_title': 'Create a new account',
|
||
'auth.login_subtitle': 'Enter your credentials',
|
||
'auth.register_subtitle': 'Create a free account',
|
||
'auth.no_account': 'No account yet?',
|
||
'auth.has_account': 'Already have an account?',
|
||
'auth.error.invalid_credentials': 'Invalid credentials',
|
||
'auth.error.email_exists': 'Email already registered',
|
||
'auth.error.generic': 'An error occurred',
|
||
'auth.welcome_back': 'Welcome back',
|
||
|
||
// Form labels
|
||
'label.name': 'Name',
|
||
'label.date': 'Date',
|
||
'label.note': 'Note',
|
||
'label.score': 'Score',
|
||
'label.level': 'Level',
|
||
'label.subject': 'Subject',
|
||
'label.class': 'Class',
|
||
'label.grade': 'Grade Level',
|
||
'label.type': 'Type',
|
||
'label.weight': 'Weight',
|
||
'label.max_score': 'Max Score',
|
||
'label.description': 'Description',
|
||
'label.school_type': 'School Type',
|
||
'label.period': 'Period',
|
||
'label.school_year': 'School Year',
|
||
'label.status': 'Status',
|
||
'label.category': 'Category',
|
||
'label.competency': 'Competency',
|
||
'label.mastery': 'Mastery Level',
|
||
'label.weight_percent': 'Weight (%)',
|
||
'label.source_type': 'Source Type',
|
||
'label.target': 'Target',
|
||
'label.scale_definition': 'Scale Definition',
|
||
'label.scheme_type': 'Scheme Type',
|
||
'label.student_count': 'Student Count',
|
||
'label.external_id': 'External ID',
|
||
'label.date_of_birth': 'Date of Birth',
|
||
'label.first_name': 'First Name',
|
||
'label.last_name': 'Last Name',
|
||
|
||
// Status labels
|
||
'status.active': 'Active',
|
||
'status.draft': 'Draft',
|
||
'status.final': 'Final',
|
||
'status.pending': 'Pending',
|
||
'status.processing': 'Processing',
|
||
'status.completed': 'Completed',
|
||
'status.failed': 'Failed',
|
||
'status.enrolled': 'Enrolled',
|
||
'status.not_yet_assessed': 'Not yet assessed',
|
||
|
||
// Subject names
|
||
'subject.math': 'Math',
|
||
'subject.german': 'German',
|
||
'subject.english': 'English',
|
||
'subject.science': 'Science',
|
||
'subject.art': 'Art',
|
||
'subject.music': 'Music',
|
||
'subject.physical_ed': 'Physical Education',
|
||
'subject.history': 'History',
|
||
'subject.geography': 'Geography',
|
||
'subject.religion': 'Religion',
|
||
|
||
// School types
|
||
'school_type.elementary': 'Elementary',
|
||
'school_type.middle': 'Middle School',
|
||
'school_type.gymnasium': 'Gymnasium',
|
||
'school_type.other': 'Other',
|
||
|
||
// Mastery levels
|
||
'mastery.1': 'not yet achieved',
|
||
'mastery.2': 'developing',
|
||
'mastery.3': 'proficient',
|
||
'mastery.4': 'advanced',
|
||
'mastery.level_1': 'Level 1 — not yet achieved',
|
||
'mastery.level_2': 'Level 2 — developing',
|
||
'mastery.level_3': 'Level 3 — proficient',
|
||
'mastery.level_4': 'Level 4 — advanced',
|
||
|
||
// Assessment types
|
||
'assessment_type.test': 'Test',
|
||
'assessment_type.oral': 'Oral Exam',
|
||
'assessment_type.project': 'Project',
|
||
'assessment_type.homework': 'Homework',
|
||
'assessment_type.other': 'Other',
|
||
|
||
// Grading scheme types
|
||
'grading_type.numeric': 'Numeric Grade',
|
||
'grading_type.verbal': 'Verbal Feedback',
|
||
'grading_type.combined': 'Combined',
|
||
|
||
// Grading weight source types
|
||
'weight_source.learning_progress': 'Learning Progress',
|
||
'weight_source.assessment': 'Assessment',
|
||
|
||
// Dashboard
|
||
'dashboard.welcome': 'Welcome',
|
||
'dashboard.overview': 'Overview',
|
||
'dashboard.classes': 'My Classes',
|
||
'dashboard.recent_activity': 'Recent Activity',
|
||
'dashboard.students_attention': 'Students Needing Attention',
|
||
'dashboard.stats': 'Statistics',
|
||
'dashboard.total_students': 'Total Students',
|
||
'dashboard.total_entries': 'Total Entries',
|
||
'dashboard.total_assessments': 'Total Assessments',
|
||
'dashboard.total_classes': 'Total Classes',
|
||
'dashboard.total_reports': 'Total Reports',
|
||
'dashboard.quick_actions': 'Quick Actions',
|
||
'dashboard.quick_actions_subtitle': 'Common actions within easy reach',
|
||
'dashboard.quick_action_attendance': 'Attendance',
|
||
'dashboard.quick_action_attendance_desc': 'Record an attendance session for a class.',
|
||
'dashboard.quick_action_assessment_desc': 'Create a new assessment.',
|
||
'dashboard.quick_action_report_desc': 'Generate a report card or progress report.',
|
||
'dashboard.quick_action_parent': 'Parent Talk',
|
||
'dashboard.quick_action_parent_desc': 'Compose or reply to a parent message.',
|
||
'dashboard.no_classes': 'No classes yet. Create a class to get started.',
|
||
'dashboard.no_recent_activity': 'No recent activity.',
|
||
'dashboard.no_students_attention': 'All students are on track!',
|
||
'dashboard.student_name': 'Student',
|
||
'dashboard.average_mastery': 'Average Mastery',
|
||
'dashboard.class_name': 'Class',
|
||
'dashboard.competency_name': 'Competency',
|
||
'dashboard.entry_date': 'Date',
|
||
'dashboard.mastery_level': 'Mastery Level',
|
||
'dashboard.teacher': 'Teacher',
|
||
'dashboard.this_week': 'This Week',
|
||
'dashboard.all_time': 'All Time',
|
||
|
||
// Classes view
|
||
'classes.title': 'Classes & Students',
|
||
'classes.select_class': 'Select a class',
|
||
'classes.class_details': 'Class Details',
|
||
'classes.student_roster': 'Student Roster',
|
||
'classes.add_student': 'Add Student',
|
||
'classes.add_student_title': 'Add New Student',
|
||
'classes.enroll_student': 'Enroll Student',
|
||
'classes.enroll_student_title': 'Enroll Existing Student',
|
||
'classes.assign_template': 'Assign Competency Template',
|
||
'classes.create_class': 'Create New Class',
|
||
'classes.no_students': 'No students in this class.',
|
||
'classes.no_classes': 'No classes available.',
|
||
'classes.enrollment_status': 'Enrollment Status',
|
||
'classes.entry_count': 'Entries',
|
||
'classes.teacher_list': 'Teachers',
|
||
'classes.homeroom_teacher': 'Homeroom Teacher',
|
||
'classes.subject_teacher': 'Subject Teacher',
|
||
'classes.grade_level': 'Grade Level',
|
||
'classes.school_year_label': 'School Year',
|
||
|
||
// Competency grid view
|
||
'competencies.title': 'Competency Grids',
|
||
'competencies.template_library': 'Template Library',
|
||
'competencies.template_details': 'Template Details',
|
||
'competencies.assign_to_class': 'Assign to Class',
|
||
'competencies.categories': 'Categories',
|
||
'competencies.competencies': 'Competencies',
|
||
'competencies.mastery_levels': 'Mastery Levels',
|
||
'competencies.no_templates': 'No competency templates available.',
|
||
'competencies.no_categories': 'No categories defined.',
|
||
'competencies.grid_structure': 'Grid Structure',
|
||
'competencies.assignments': 'Assignments',
|
||
'competencies.quick_guide_title': 'Quick Guide',
|
||
'competencies.quick_guide_subtitle': 'Overview of your competency template library',
|
||
'competencies.total_templates': 'Templates',
|
||
'competencies.total_categories': 'Categories',
|
||
'competencies.total_competencies': 'Competencies',
|
||
'competencies.by_subject_breakdown': 'Competencies by Subject',
|
||
'competencies.no_subjects_yet': 'No subjects assigned yet.',
|
||
'competencies.recent_templates': 'Template Library',
|
||
'competencies.no_recent_templates': 'No templates created yet.',
|
||
'competencies.no_subject': 'No subject',
|
||
'competencies.filter_school_type': 'School Type',
|
||
'competencies.filter_subject': 'Subject',
|
||
'competencies.filter_grade': 'Grade Level',
|
||
'competencies.global_template': 'Global Template',
|
||
'competencies.school_template': 'School Template',
|
||
'competencies.assignment_exists': 'Template already assigned',
|
||
'competencies.assignment_success': 'Template assigned successfully',
|
||
'competencies.create_template': 'Create New Template',
|
||
'competencies.version': 'Version',
|
||
'competencies.grade_range': 'Grade {min}–{max}',
|
||
'competencies.used_in_classes': 'Used in {count} class(es)',
|
||
|
||
// Progress entries view
|
||
'progress.title': 'Progress Entries',
|
||
'progress.select_class': 'Select Class',
|
||
'progress.select_student': 'Select Student',
|
||
'progress.log_entry': 'Log Entry',
|
||
'progress.log_entry_title': 'Log New Progress Entry',
|
||
'progress.timeline': 'Timeline',
|
||
'progress.student_timeline': 'Student Timeline',
|
||
'progress.no_entries': 'No entries available.',
|
||
'progress.entry_saved': 'Entry saved',
|
||
'progress.bulk_saved': 'Entries saved',
|
||
'progress.select_competency': 'Select Competency',
|
||
'progress.mastery_level': 'Mastery Level',
|
||
'progress.note_optional': 'Note (optional)',
|
||
'progress.date': 'Date',
|
||
'progress.category': 'Category',
|
||
'progress.competency': 'Competency',
|
||
'progress.competency_code': 'Code',
|
||
'progress.no_class_selected': 'Select a class to see the student roster.',
|
||
'progress.no_students': 'No students in this class.',
|
||
'progress.no_template_assigned': 'No competency template assigned for this subject. Assign a template first.',
|
||
'progress.select_subject': 'Select Subject',
|
||
'progress.empty_step_title': 'Record Learning Progress',
|
||
'progress.empty_step_subtitle': 'Choose a class and subject to document individual learning progress.',
|
||
'progress.how_it_works_title': 'How it works',
|
||
'progress.how_it_works_subtitle': 'Three steps to your first progress entry',
|
||
'progress.empty_step1_title': 'Pick a class',
|
||
'progress.empty_step1_desc': 'Choose a class from the dropdown above.',
|
||
'progress.empty_step2_title': 'Pick a subject',
|
||
'progress.empty_step2_desc': 'Pick the subject whose competencies you want to assess.',
|
||
'progress.empty_step3_title': 'Record progress',
|
||
'progress.empty_step3_desc': 'Click a competency and enter the mastery level (1–4).',
|
||
|
||
// Competence flower view
|
||
'flower.title': 'Competence Flower',
|
||
'flower.select_class': 'Select Class',
|
||
'flower.select_student': 'Select Student',
|
||
'flower.select_subject': 'Select Subject',
|
||
'flower.radar_chart': 'Competence Flower',
|
||
'flower.breakdown': 'Breakdown',
|
||
'flower.category': 'Category',
|
||
'flower.average_mastery': 'Average Mastery',
|
||
'flower.assessed': 'Assessed',
|
||
'flower.total': 'Total',
|
||
'flower.export_chart': 'Export Chart',
|
||
'flower.no_data': 'Select class, subject, and student to view the competence flower.',
|
||
'flower.no_progress': 'No progress data for this student.',
|
||
'flower.petal_legend': 'Each axis shows the average mastery level per category',
|
||
|
||
// Assessments view
|
||
'assessments.title': 'Assessments',
|
||
'assessments.list': 'Assessments',
|
||
'assessments.create': 'Create Assessment',
|
||
'assessments.create_title': 'Create New Assessment',
|
||
'assessments.bulk_grading': 'Bulk Grading',
|
||
'assessments.bulk_grading_title': 'Grading for {title}',
|
||
'assessments.select_class': 'Select Class',
|
||
'assessments.select_subject': 'Select Subject',
|
||
'assessments.no_assessments': 'No assessments available.',
|
||
'assessments.results_count': 'Results',
|
||
'assessments.linked_competencies': 'Linked Competencies',
|
||
'assessments.enter_scores': 'Enter Scores',
|
||
'assessments.scores_saved': 'Scores saved',
|
||
'assessments.no_students': 'No students available.',
|
||
'assessments.assessment_type': 'Assessment Type',
|
||
'assessments.max_score': 'Max Score',
|
||
'assessments.weight': 'Weight',
|
||
'assessments.link_competency': 'Link Competency',
|
||
|
||
// Grading view
|
||
'grading.title': 'Grading',
|
||
'grading.schemes': 'Grading Schemes',
|
||
'grading.weight_rules': 'Weight Rules',
|
||
'grading.computed_grades': 'Computed Grades',
|
||
'grading.breakdown': 'Grade Breakdown',
|
||
'grading.create_scheme': 'Create Scheme',
|
||
'grading.create_scheme_title': 'Create New Grading Scheme',
|
||
'grading.add_weight_rule': 'Add Weight Rule',
|
||
'grading.override_grade': 'Override Grade',
|
||
'grading.override_reason': 'Override Reason',
|
||
'grading.compute_grades': 'Compute Grades',
|
||
'grading.grades_computed': 'Grades computed',
|
||
'grading.no_schemes': 'No grading schemes available.',
|
||
'grading.no_grades': 'No grades computed yet.',
|
||
'grading.select_class': 'Select Class',
|
||
'grading.select_subject': 'Select Subject',
|
||
'grading.select_scheme': 'Select Scheme',
|
||
'grading.student': 'Student',
|
||
'grading.computed_value': 'Computed Value',
|
||
'grading.finalized': 'Finalized',
|
||
'grading.overridden': 'Overridden',
|
||
'grading.period': 'Period',
|
||
|
||
// Reports view
|
||
'reports.title': 'Reports',
|
||
'reports.generate': 'Generate Report',
|
||
'reports.generate_title': 'Generate New Report',
|
||
'reports.preview': 'Report Preview',
|
||
'reports.export_pdf': 'Export as PDF',
|
||
'reports.bulk_generate': 'Bulk Generate for Class',
|
||
'reports.select_student': 'Select Student',
|
||
'reports.select_class': 'Select Class',
|
||
'reports.draft_reports': 'Draft Reports',
|
||
'reports.final_reports': 'Finalized Reports',
|
||
'reports.no_reports': 'No reports available.',
|
||
'reports.sections': 'Report Sections',
|
||
'reports.generated_by': 'Generated by',
|
||
'reports.generated_at': 'Generated at',
|
||
'reports.includes_grades': 'Includes Grades',
|
||
'reports.finalize_report': 'Finalize Report',
|
||
'reports.edit_section': 'Edit Section',
|
||
'reports.section_text': 'Text',
|
||
'reports.category_name': 'Category',
|
||
'reports.report_saved': 'Report saved',
|
||
'reports.report_finalized': 'Report finalized',
|
||
'reports.select_period': 'Select Period',
|
||
'reports.empty_subtitle': 'Select a class to create and manage reports.',
|
||
|
||
// Empty states
|
||
'empty.no_data': 'No data available.',
|
||
'empty.no_results': 'No results.',
|
||
'empty.no_items': 'No items.',
|
||
'empty.add_first': 'Add the first item to get started.',
|
||
'empty.select_class': 'Select a class from the navigation.',
|
||
'empty.loading': 'Loading...',
|
||
|
||
// Error messages
|
||
'error.generic': 'An error occurred.',
|
||
'error.network': 'Network error. Please try again.',
|
||
'error.not_authenticated': 'You are not authenticated.',
|
||
'error.forbidden': 'You do not have permission for this action.',
|
||
'error.not_found': 'The requested resource was not found.',
|
||
'error.validation': 'Please check your inputs.',
|
||
'error.unexpected': 'An unexpected error occurred.',
|
||
|
||
// Toast messages
|
||
'toast.saved': 'Saved',
|
||
'toast.created': 'Created',
|
||
'toast.deleted': 'Deleted',
|
||
'toast.updated': 'Updated',
|
||
'toast.error': 'Error',
|
||
'toast.success': 'Success',
|
||
'toast.info': 'Info',
|
||
'toast.warning': 'Warning',
|
||
|
||
// Theme
|
||
'theme.light': 'Light',
|
||
'theme.dark': 'Dark',
|
||
'theme.system': 'System',
|
||
'theme.toggle': 'Toggle theme',
|
||
|
||
// Language
|
||
'language.de': 'German',
|
||
'language.en': 'English',
|
||
'language.toggle': 'Switch language',
|
||
|
||
// Role
|
||
'role.teacher': 'Teacher',
|
||
'role.school_admin': 'School Admin',
|
||
'role.super_admin': 'Super Admin',
|
||
|
||
// Assessment bulk grading
|
||
'assessments.save_all': 'Save All',
|
||
'assessments.score_invalid': 'Score must be between 0 and {max}',
|
||
'assessments.score_out_of_range': 'Out of range',
|
||
'assessments.mastery_buttons': 'Mastery Level',
|
||
'assessments.students_count': '{count} students',
|
||
'assessments.validation_error': 'Please check your inputs',
|
||
|
||
// Grading enhancements
|
||
'grading.scale_reference': 'Grading Scale Reference',
|
||
'grading.grade_good': 'Good',
|
||
'grading.grade_ok': 'Satisfactory',
|
||
'grading.grade_needs_improvement': 'Needs Improvement',
|
||
'grading.override_title': 'Override Grade',
|
||
'grading.override_student': 'Student',
|
||
'grading.override_computed': 'Computed Grade',
|
||
'grading.override_new': 'New Grade',
|
||
'grading.override_justification': 'Justification (required)',
|
||
'grading.override_justification_required': 'Justification is required',
|
||
'grading.override_saved': 'Grade overridden',
|
||
'grading.weight_breakdown': 'Weight Breakdown',
|
||
'grading.weight_progress': 'Progress',
|
||
|
||
// Report narrative generation
|
||
'reports.generating': 'Generating report...',
|
||
'reports.narrative_intro': 'Introduction',
|
||
'reports.narrative_competency': 'Competency Area',
|
||
'reports.narrative_summary': 'Summary',
|
||
'reports.download_pdf': 'Download as PDF',
|
||
'reports.pdf_coming_soon': 'PDF export will be available in a future version.',
|
||
'reports.edit_sections': 'Edit Sections',
|
||
'reports.section_edited': 'Section updated',
|
||
'reports.generate_narrative': 'Generate Report Text',
|
||
'reports.includes_grades_label': 'Include grades',
|
||
|
||
// Onboarding checklist
|
||
'onboarding.title': 'Getting Started',
|
||
'onboarding.subtitle': 'Follow these steps to set up CompetenceTrack',
|
||
'onboarding.step_create_class': 'Create your first class',
|
||
'onboarding.step_assign_grid': 'Assign a competency grid',
|
||
'onboarding.step_add_students': 'Add students',
|
||
'onboarding.step_log_entry': 'Log your first entry',
|
||
'onboarding.step_create_class_desc': 'Create a class to manage students.',
|
||
'onboarding.step_assign_grid_desc': 'Assign a competency grid to track competencies.',
|
||
'onboarding.step_add_students_desc': 'Add students to your class.',
|
||
'onboarding.step_log_entry_desc': 'Record a student\'s learning progress.',
|
||
'onboarding.all_set': 'You\'re all set!',
|
||
'onboarding.all_set_desc': 'You\'ve completed all setup steps. Good luck!',
|
||
'onboarding.progress': '{completed} of {total} steps completed',
|
||
'onboarding.go_to_classes': 'Go to Classes',
|
||
'onboarding.go_to_grids': 'Go to Competency Grids',
|
||
'onboarding.go_to_progress': 'Go to Progress',
|
||
|
||
// Student profile
|
||
'student.profile': 'Student Profile',
|
||
'student.quick_stats': 'Quick Stats',
|
||
'student.total_entries': 'Total entries',
|
||
'student.avg_mastery': 'Average mastery',
|
||
'student.recent_entries': 'Recent entries',
|
||
'student.view_flower': 'View Competence Flower',
|
||
'student.class': 'Class',
|
||
'student.date_of_birth': 'Date of Birth',
|
||
|
||
// Template assignment flow
|
||
'classes.assign_template_title': 'Assign Competency Template',
|
||
'classes.assign_step1': '1. Select Subject',
|
||
'classes.assign_step2': '2. Select Template',
|
||
'classes.assign_step3': '3. Confirm Assignment',
|
||
'classes.assign_filtered': 'Filtered by school type and grade level',
|
||
'classes.assign_confirm': 'Confirm Assignment',
|
||
'classes.assign_review': 'Review',
|
||
'classes.assign_subject': 'Subject',
|
||
'classes.assign_no_templates': 'No matching templates found.',
|
||
|
||
// Footer
|
||
'footer.copyright': 'CompetenceTrack — Free School Software',
|
||
'footer.version': 'Version 1.0',
|
||
'footer.oss': 'Open Source',
|
||
'sidebar.eco_message': 'Save paper, protect the environment',
|
||
'dashboard.env_tip_title': 'Eco Tip',
|
||
'dashboard.env_tip_text': 'Digital competency records save paper and protect the environment.',
|
||
'settings.demo_data_title': 'Demo Data',
|
||
'settings.demo_data_desc': 'Demo data is auto-generated and can be deleted at any time.',
|
||
'settings.demo_record_count': 'Records',
|
||
'settings.demo_delete_all_data': 'Delete All Demo Data',
|
||
'settings.demo_delete_confirm_data': 'Really delete all demo data (progress entries, assessments, reports)? Demo accounts will remain.',
|
||
'settings.demo_data_deleted': 'Demo data deleted',
|
||
'settings.env_tip': 'Save paper, protect the environment — digital records instead of printing.',
|
||
|
||
// New styling keys
|
||
'dashboard.start_here': 'Start here!',
|
||
'date.today': 'Today',
|
||
'date.yesterday': 'Yesterday',
|
||
'date.days_ago': '{count} days ago',
|
||
'date.weeks_ago': '{count} weeks ago',
|
||
'progress.entries': 'entries',
|
||
'competencies.expand_all': 'Expand all',
|
||
'competencies.collapse_all': 'Collapse all',
|
||
'flower.class_average': 'Class Average',
|
||
'auth.mission_title': 'Competency-based assessment for everyone',
|
||
'auth.feature_competencies': 'Competency grids & learning progress',
|
||
'auth.feature_student_centered': 'Student-centered assessment',
|
||
'auth.feature_open_source': 'Free & Open-Source Software',
|
||
'grading.click_compute': 'Click "Compute Grades" to start',
|
||
// New styling keys (round 2)
|
||
'header.select_year': 'School Year',
|
||
'header.notifications': 'Activity',
|
||
'auth.feature_reports': 'Reports & Transcripts',
|
||
'auth.feature_flower': 'Competence Flower',
|
||
'flower.hide_average': 'Hide Average',
|
||
'flower.show_average': 'Show Average',
|
||
'flower.download_png': 'As PNG',
|
||
'flower.compare_with': 'Compare with',
|
||
'flower.compare_clear': 'Clear comparison',
|
||
'flower.compare_legend': 'Comparison',
|
||
'grading.grade_distribution': 'Grade Distribution',
|
||
'grading.trend_title': 'Grade Trend',
|
||
'grading.trend_desc': 'Average grade development over time',
|
||
'grading.trend_average': 'Class average',
|
||
|
||
// Navigation (new view)
|
||
'nav.settings': 'Settings',
|
||
|
||
// Settings view
|
||
'settings.title': 'Settings & Administration',
|
||
'settings.tab_school': 'School Info',
|
||
'settings.tab_years': 'School Years',
|
||
'settings.tab_subjects': 'Subjects',
|
||
'settings.tab_audit': 'Audit Log',
|
||
'settings.tab_data': 'Data Management',
|
||
'settings.school_name': 'School Name',
|
||
'settings.school_type': 'School Type',
|
||
'settings.school_country': 'Country',
|
||
'settings.school_timezone': 'Timezone',
|
||
'settings.school_address': 'Address',
|
||
'settings.school_saved': 'School info saved',
|
||
'settings.year_label': 'Label',
|
||
'settings.year_start': 'Start Date',
|
||
'settings.year_end': 'End Date',
|
||
'settings.year_created': 'School year created',
|
||
'settings.year_classes': 'Classes',
|
||
'settings.year_enrollments': 'Enrollments',
|
||
'settings.subject_name': 'Subject Name',
|
||
'settings.subject_grade_min': 'Min Grade Level',
|
||
'settings.subject_grade_max': 'Max Grade Level',
|
||
'settings.subject_created': 'Subject created',
|
||
'settings.subject_updated': 'Subject updated',
|
||
'settings.subject_deleted': 'Subject deleted',
|
||
'settings.subject_global': 'Global',
|
||
'settings.subject_school': 'School-specific',
|
||
'settings.audit_title': 'Audit Log',
|
||
'settings.audit_action': 'Action',
|
||
'settings.audit_entity': 'Entity',
|
||
'settings.audit_actor': 'Actor',
|
||
'settings.audit_timestamp': 'Timestamp',
|
||
'settings.audit_filter_action': 'Filter action',
|
||
'settings.audit_filter_date_from': 'From',
|
||
'settings.audit_filter_date_to': 'To',
|
||
'settings.audit_all_actions': 'All actions',
|
||
'settings.audit_no_entries': 'No audit entries found',
|
||
'settings.data_title': 'Data Management & GDPR',
|
||
'settings.data_export_csv': 'CSV Export',
|
||
'settings.data_export_students': 'Students List',
|
||
'settings.data_export_progress': 'Progress Entries',
|
||
'settings.data_export_assessments': 'Assessments',
|
||
'settings.data_export_grades': 'Grades',
|
||
'settings.data_export_download': 'Download CSV',
|
||
'settings.data_export_started': 'Export started',
|
||
'settings.data_erasure': 'Data Erasure (GDPR)',
|
||
'settings.data_erasure_desc': 'Under GDPR, you can request the deletion of personal data.',
|
||
'settings.data_erasure_request': 'Request Erasure',
|
||
'settings.data_erasure_requested': 'Erasure requested',
|
||
'settings.data_erasure_scope': 'Scope',
|
||
'settings.data_erasure_scope_student': 'Single Student',
|
||
'settings.data_erasure_scope_class': 'Class',
|
||
'settings.data_erasure_scope_school': 'Entire School',
|
||
'settings.data_erasure_confirm': 'Confirm Erasure',
|
||
|
||
// PDF export
|
||
'pdf.print_report': 'Print Report',
|
||
'pdf.print_view': 'Print View',
|
||
'pdf.export_pdf': 'Export PDF',
|
||
'pdf.generated': 'PDF report is being generated',
|
||
'pdf.report_title': 'Competence Report',
|
||
'pdf.student': 'Student',
|
||
'pdf.class': 'Class',
|
||
'pdf.period': 'Period',
|
||
'pdf.date': 'Date',
|
||
|
||
// CSV export
|
||
'csv.export_title': 'Export Data',
|
||
'csv.export_type': 'Export Type',
|
||
'csv.export_class': 'Class',
|
||
'csv.export_year': 'School Year',
|
||
'csv.export_success': 'CSV file exported successfully',
|
||
'csv.export_error': 'Export error',
|
||
|
||
// Notifications
|
||
'notification.title': 'Recent Activities',
|
||
'notification.progress_logged': 'Progress entry logged',
|
||
'notification.assessment_created': 'Assessment created',
|
||
'notification.grade_computed': 'Grades computed',
|
||
'notification.report_generated': 'Report generated',
|
||
'notification.preferences': 'Notification Preferences',
|
||
'notification.show_progress': 'Show progress entries',
|
||
'notification.show_assessments': 'Show assessments',
|
||
'notification.show_grades': 'Show grades',
|
||
'notification.show_reports': 'Show reports',
|
||
'notification.no_recent': 'No recent activities',
|
||
'notification.mark_read': 'Mark as read',
|
||
|
||
// School year context
|
||
'context.all_years': 'All School Years',
|
||
'context.year_selected': 'School year selected',
|
||
|
||
// User management
|
||
'settings.tab_users': 'Users',
|
||
'users.title': 'User Management',
|
||
'users.subtitle': 'Manage teachers & administrators',
|
||
'users.create_user': 'Create User',
|
||
'users.edit_user': 'Edit User',
|
||
'users.delete_user': 'Delete User',
|
||
'users.delete_confirm': 'Really deactivate this user? Access will be revoked immediately.',
|
||
'users.created': 'User account created',
|
||
'users.updated': 'User account updated',
|
||
'users.deleted': 'User account deactivated',
|
||
'users.no_users': 'No users found',
|
||
'users.role': 'Role',
|
||
'users.email': 'Email',
|
||
'users.password': 'Password',
|
||
'users.password_hint': 'At least 8 characters',
|
||
'users.assigned_classes': 'Assigned Classes',
|
||
'users.no_classes_assigned': 'No classes assigned',
|
||
'users.assign_classes': 'Assign Classes',
|
||
'users.active': 'Active',
|
||
'users.inactive': 'Inactive',
|
||
'users.count': '{count} users',
|
||
'users.last_active': 'Last active',
|
||
'users.created_at': 'Created at',
|
||
|
||
// CSV student import
|
||
'classes.import_csv': 'Import CSV',
|
||
'classes.import_csv_title': 'Import Students from CSV',
|
||
'classes.import_csv_subtitle': 'Select a CSV file with student data (firstName, lastName, dateOfBirth, externalId)',
|
||
'classes.import_csv_select_file': 'Select CSV file',
|
||
'classes.import_csv_drag': 'Drag file here or click to select',
|
||
'classes.import_csv_preview': 'Preview',
|
||
'classes.import_csv_import': 'Import',
|
||
'classes.import_csv_success': '{success} students imported successfully',
|
||
'classes.import_csv_errors': '{errors} errors during import',
|
||
'classes.import_csv_no_data': 'No data found to import',
|
||
'classes.import_csv_invalid_format': 'Invalid CSV format. Columns: firstName, lastName, dateOfBirth, externalId',
|
||
'classes.import_csv_processing': 'Importing…',
|
||
'classes.import_csv_template': 'Download template',
|
||
'classes.import_csv_file_selected': 'File selected: {name} ({rows} rows)',
|
||
'classes.import_csv_row': 'Row {n}',
|
||
'classes.import_csv_results': 'Import Results',
|
||
'classes.import_csv_done': 'Done',
|
||
'classes.import_csv_external_id': 'External ID',
|
||
'classes.import_csv_first_name': 'First Name',
|
||
'classes.import_csv_last_name': 'Last Name',
|
||
'classes.import_csv_dob': 'Date of Birth',
|
||
|
||
// Student detail view
|
||
'student_detail.title': 'Student Profile',
|
||
'student_detail.back': 'Back',
|
||
'student_detail.age': 'Age',
|
||
'student_detail.years': 'years',
|
||
'student_detail.school': 'School',
|
||
'student_detail.class': 'Class',
|
||
'student_detail.external_id': 'External ID',
|
||
'student_detail.date_of_birth': 'Date of Birth',
|
||
'student_detail.quick_stats': 'Quick Stats',
|
||
'student_detail.total_entries': 'Progress entries',
|
||
'student_detail.avg_mastery': 'Avg mastery',
|
||
'student_detail.latest_grade': 'Latest grade',
|
||
'student_detail.competence_flower': 'Competence Flower',
|
||
'student_detail.progress_timeline': 'Progress Timeline',
|
||
'student_detail.assessment_results': 'Assessment Results',
|
||
'student_detail.computed_grades': 'Computed Grades',
|
||
'student_detail.reports': 'Reports',
|
||
'student_detail.no_data': 'No data available',
|
||
'student_detail.no_progress_entries': 'No progress entries yet',
|
||
'student_detail.no_assessments': 'No assessment results',
|
||
'student_detail.no_grades': 'No computed grades',
|
||
'student_detail.no_reports': 'No reports generated',
|
||
'student_detail.no_flower': 'No competence flower available',
|
||
'student_detail.no_flower_hint': 'Select a class & subject in the Competence Flower view',
|
||
'student_detail.view_report': 'View Report',
|
||
'student_detail.view_flower': 'Full Competence Flower',
|
||
'student_detail.score': 'Score',
|
||
'student_detail.mastery': 'Mastery',
|
||
'student_detail.assessment': 'Assessment',
|
||
'student_detail.date': 'Date',
|
||
'student_detail.subject': 'Subject',
|
||
'student_detail.value': 'Value',
|
||
'student_detail.value_hint': 'Values 0–4 (competency level)',
|
||
'student_detail.period': 'Period',
|
||
'student_detail.status': 'Status',
|
||
'student_detail.generated_at': 'Generated at',
|
||
'student_detail.view_progress': 'Go to Progress',
|
||
'student_detail.print_report': 'Print Report',
|
||
'student_detail.select_subject_for_flower': 'Select subject for flower',
|
||
'student_detail.flower_not_assigned': 'No template assigned for this subject in this class',
|
||
'student_detail.created_at': 'Created',
|
||
'student_detail.note': 'Note',
|
||
'student_detail.competency': 'Competency',
|
||
'student_detail.category': 'Category',
|
||
|
||
// ─── Styling polish: shared labels ──────────────────────────────
|
||
'polish.today_date': "Today's Date",
|
||
'polish.last_login': 'Last login',
|
||
'polish.last_login_never': 'First login',
|
||
'polish.class_overview': 'Class overview',
|
||
'polish.total_students': 'Total students',
|
||
'polish.total_entries': 'Total entries',
|
||
'polish.avg_mastery': 'Avg mastery',
|
||
'polish.class_health': 'Class health',
|
||
'polish.health_good': 'Good',
|
||
'polish.health_ok': 'Ok',
|
||
'polish.health_attention': 'Needs attention',
|
||
'polish.last_entry': 'Last entry',
|
||
'polish.never': '—',
|
||
'polish.search_students': 'Search students…',
|
||
'polish.competency_count': 'Competencies',
|
||
'polish.mastered': 'mastered',
|
||
'polish.mastery_distribution': 'Distribution',
|
||
'polish.todays_entries': "Today's entries",
|
||
'polish.filter_today': 'Today',
|
||
'polish.filter_week': 'This Week',
|
||
'polish.filter_month': 'This Month',
|
||
'polish.filter_all': 'All',
|
||
'polish.keyboard_hint': 'Shortcuts: 1–4 to pick mastery',
|
||
'polish.mastery_legend': 'Mastery legend',
|
||
'polish.level_1': 'Beginning',
|
||
'polish.level_2': 'Developing',
|
||
'polish.level_3': 'Secure',
|
||
'polish.level_4': 'Advanced',
|
||
'polish.progress_over_time': 'Progress over time',
|
||
'polish.vs_class_avg': 'vs. Class average',
|
||
'polish.student_value': 'Student',
|
||
'polish.class_average': 'Class average',
|
||
'polish.strengths': 'Strengths',
|
||
'polish.weaknesses': 'Areas to grow',
|
||
'polish.score_distribution': 'Score distribution',
|
||
'polish.class_avg': 'Class avg',
|
||
'polish.best_performer': 'Best performer',
|
||
'polish.needs_support': 'Needs support',
|
||
'polish.grade_stats': 'Grade statistics',
|
||
'polish.median': 'Median',
|
||
'polish.minimum': 'Min',
|
||
'polish.maximum': 'Max',
|
||
'polish.grade_trend': 'Grade trend',
|
||
'polish.grade_legend': 'Grade legend',
|
||
'polish.grade_good': 'good',
|
||
'polish.grade_satisfactory': 'satisfactory',
|
||
'polish.grade_needs_work': 'needs work',
|
||
'polish.report_completion': 'Report completion',
|
||
'polish.last_edited': 'Last edited',
|
||
'polish.workflow_draft': 'Draft',
|
||
'polish.workflow_review': 'In Review',
|
||
'polish.workflow_published': 'Published',
|
||
'polish.report_logo': 'School logo',
|
||
'polish.quick_stats': 'Quick stats',
|
||
'polish.total_users': 'Users',
|
||
'polish.total_subjects': 'Subjects',
|
||
'polish.total_years': 'School years',
|
||
'polish.audit_search': 'Search audit log…',
|
||
'polish.all_actions': 'All actions',
|
||
'polish.create_action': 'Create',
|
||
'polish.update_action': 'Update',
|
||
'polish.delete_action': 'Delete',
|
||
'polish.login_action': 'Login',
|
||
'polish.student_journey': 'Student journey',
|
||
'polish.competency_grid': 'Competency grid',
|
||
'polish.recent_achievements': 'Recent achievements',
|
||
'polish.teacher_notes': 'Teacher notes',
|
||
'polish.no_notes': 'No notes yet',
|
||
'polish.demo_credentials': 'Demo credentials',
|
||
'polish.demo_email': 'demo@competencetrack.org',
|
||
'polish.demo_password': 'Demo2025!',
|
||
'polish.demo_hint': 'Click to auto-fill the demo login',
|
||
'polish.remember_me': 'Remember me',
|
||
'polish.forgot_password': 'Forgot password?',
|
||
'polish.use_demo': 'Use demo credentials',
|
||
'polish.show_password': 'Show password',
|
||
'polish.hide_password': 'Hide password',
|
||
'polish.breadcrumb_home': 'Home',
|
||
'polish.quick_search': 'Quick search',
|
||
'polish.search_placeholder': 'Search students, classes or competencies…',
|
||
'polish.no_results': 'No results',
|
||
'polish.help': 'Help',
|
||
'polish.nav_setup': 'Setup',
|
||
'polish.nav_teaching': 'Teaching',
|
||
'polish.nav_analysis': 'Analysis',
|
||
'polish.students_found': '{count} students found',
|
||
'polish.class_avg_label': 'Class avg',
|
||
'polish.male': 'm',
|
||
'polish.female': 'f',
|
||
'polish.diverse': 'd',
|
||
'polish.print_preview': 'Print preview',
|
||
'polish.report_header': 'School Report',
|
||
|
||
// ─── Analytics view ───────────────────────────────────────────────
|
||
'nav.analytics': 'Analytics',
|
||
'analytics.title': 'Progress Analytics',
|
||
'analytics.subtitle': 'Comprehensive analysis of competency development across time, classes and competencies',
|
||
'analytics.filters': 'Filters',
|
||
'analytics.select_class': 'Select class',
|
||
'analytics.all_classes': 'All classes',
|
||
'analytics.select_subject': 'Select subject',
|
||
'analytics.all_subjects': 'All subjects',
|
||
'analytics.date_range': 'Date range',
|
||
'analytics.range_30': '30 days',
|
||
'analytics.range_90': '90 days',
|
||
'analytics.range_180': '180 days',
|
||
'analytics.range_365': '1 year',
|
||
'analytics.range_all': 'All time',
|
||
'analytics.mastery_trend': 'Mastery Trend Over Time',
|
||
'analytics.mastery_trend_desc': 'Average mastery level per week',
|
||
'analytics.class_comparison': 'Class Comparison',
|
||
'analytics.class_comparison_desc': 'Average mastery per class for the selected subject',
|
||
'analytics.mastery_distribution': 'Mastery Distribution',
|
||
'analytics.mastery_distribution_desc': 'Distribution of recorded mastery levels (1–4)',
|
||
'analytics.top_competencies': 'Top Competencies',
|
||
'analytics.bottom_competencies': 'Competencies Needing Support',
|
||
'analytics.top_bottom_desc': 'Top 5 / Bottom 5 by average mastery',
|
||
'analytics.activity_heatmap': 'Activity Heatmap',
|
||
'analytics.activity_heatmap_desc': 'Number of progress entries per day (last 90 days)',
|
||
'analytics.no_data': 'No data for the selected filters',
|
||
'analytics.no_data_hint': 'Select a class or subject to view analytics',
|
||
'analytics.entry_count': 'Entries',
|
||
'analytics.avg_mastery': 'Avg mastery',
|
||
'analytics.student_count': 'Students',
|
||
'analytics.level': 'Level',
|
||
'analytics.count': 'Count',
|
||
'analytics.share': 'Share',
|
||
'analytics.week': 'Wk',
|
||
'analytics.today': 'Today',
|
||
'analytics.less': 'less',
|
||
'analytics.more': 'more',
|
||
'analytics.refresh': 'Refresh',
|
||
'analytics.no_competencies': 'No competencies with entries found',
|
||
'analytics.no_classes': 'No classes with entries found',
|
||
|
||
// ─── Mastery Matrix view ──────────────────────────────────────────
|
||
'nav.matrix': 'Mastery Matrix',
|
||
'matrix.title': 'Mastery Matrix',
|
||
'matrix.subtitle': 'Students × competencies — color-coded mastery overview',
|
||
'matrix.select_class': 'Select class',
|
||
'matrix.select_subject': 'Select subject',
|
||
'matrix.no_template': 'No competency template assigned for this class / subject',
|
||
'matrix.no_template_hint': 'Assign a template in the Classes view',
|
||
'matrix.no_students': 'No students enrolled in this class',
|
||
'matrix.entry_count_short': 'E',
|
||
'matrix.legend': 'Legend',
|
||
'matrix.legend_unassessed': 'Unassessed',
|
||
'matrix.legend_level_1': 'Level 1',
|
||
'matrix.legend_level_2': 'Level 2',
|
||
'matrix.legend_level_3': 'Level 3',
|
||
'matrix.legend_level_4': 'Level 4',
|
||
'matrix.row_avg': 'Student avg',
|
||
'matrix.col_avg': 'Class avg',
|
||
'matrix.entries_for': 'Entries for',
|
||
'matrix.no_entries_for': 'No entries for this competency',
|
||
'matrix.last_entry': 'Last entry',
|
||
'matrix.export_csv': 'Export CSV',
|
||
'matrix.export_success': 'Matrix exported as CSV',
|
||
'matrix.competency': 'Competency',
|
||
'matrix.student': 'Student',
|
||
'matrix.avg': 'Avg',
|
||
'matrix.entries': 'Entries',
|
||
'matrix.choose_filters': 'Please choose a class and subject',
|
||
'matrix.choose_filters_hint': 'Pick a class and subject above to view the matrix',
|
||
|
||
// ─── Teacher Notes (Student Detail) ───────────────────────────────
|
||
'teacher_notes.title': 'Teacher Notes',
|
||
'teacher_notes.subtitle': 'Private notes for teaching staff',
|
||
'teacher_notes.add': 'Add note',
|
||
'teacher_notes.add_title': 'New note',
|
||
'teacher_notes.edit_title': 'Edit note',
|
||
'teacher_notes.category': 'Category',
|
||
'teacher_notes.content': 'Content',
|
||
'teacher_notes.content_placeholder': 'Enter note…',
|
||
'teacher_notes.private': 'Private (visible to teachers only)',
|
||
'teacher_notes.created': 'Note created',
|
||
'teacher_notes.updated': 'Note updated',
|
||
'teacher_notes.deleted': 'Note deleted',
|
||
'teacher_notes.delete_confirm': 'Really delete this note?',
|
||
'teacher_notes.no_notes': 'No notes yet',
|
||
'teacher_notes.no_notes_hint': 'Notes are visible to teachers only',
|
||
'teacher_notes.count': '{count} notes',
|
||
'teacher_notes.by': 'by',
|
||
'teacher_notes.edit': 'Edit',
|
||
'teacher_notes.delete': 'Delete',
|
||
'teacher_notes.save': 'Save note',
|
||
'teacher_notes.cat_general': 'General',
|
||
'teacher_notes.cat_behavior': 'Behavior',
|
||
'teacher_notes.cat_academic': 'Academic',
|
||
'teacher_notes.cat_intervention': 'Intervention',
|
||
'teacher_notes.cat_parent_contact': 'Parent Contact',
|
||
'teacher_notes.error_min_content': 'Content cannot be empty',
|
||
'teacher_notes.you': 'You',
|
||
'teacher_notes.view_all': 'View all',
|
||
|
||
// ─── Polish round 4: additional UI strings ──────────────────────────
|
||
'polish.insights_title': 'Insights',
|
||
'polish.insight_mastery_up': 'Mastery level improved by {pct}%',
|
||
'polish.insight_mastery_down': 'Mastery level declined by {pct}%',
|
||
'polish.insight_mastery_stable': 'Mastery level is stable',
|
||
'polish.insight_top_class': 'Class {class} leads with avg {avg}',
|
||
'polish.insight_mastered_pct': '{pct}% of entries are at level 3+',
|
||
'polish.insight_peak_day': 'Most active day: {date} ({count} entries)',
|
||
'polish.insight_focus': 'Needs attention: {comp} (avg {avg})',
|
||
'polish.coverage': 'Coverage',
|
||
'polish.matrix_click_hint': 'Click a cell to view entry details',
|
||
'polish.weekly_summary': 'Weekly Summary',
|
||
'polish.this_week_vs_last': 'This week vs. last week',
|
||
'polish.this_week': 'This week',
|
||
'polish.last_week': 'Last week',
|
||
'polish.change': 'Change',
|
||
'polish.mastery_indicator': 'Mastery',
|
||
'polish.template_usage': 'classes',
|
||
'polish.filter_by_category': 'Category',
|
||
|
||
// ─── Empty state polish & shared UI strings ───────────────────────
|
||
'polish.please_choose': 'Please choose…',
|
||
'polish.label_class': 'Class',
|
||
'polish.empty_title_no_class': 'No class selected yet',
|
||
'polish.empty_subtitle_no_class': 'Choose a class above to view and manage content.',
|
||
'polish.empty_title_no_data': 'Nothing here yet',
|
||
'polish.empty_subtitle_no_data': 'Once data is available, it will appear right here.',
|
||
'polish.empty_cta_select_class': 'Select a class',
|
||
'polish.empty_title_competency_grid': 'No competency template selected',
|
||
'polish.empty_subtitle_competency_grid': 'Pick a template from the library on the left to see its structure and details.',
|
||
'polish.empty_title_flower': 'No competence flower available',
|
||
'polish.empty_subtitle_flower': 'Select class, subject and student above to see the visual competency overview.',
|
||
'polish.empty_title_progress': 'No progress entries yet',
|
||
'polish.empty_subtitle_progress': 'Choose a class and subject to record or review learning progress.',
|
||
'polish.empty_title_assessments': 'No assessments created yet',
|
||
'polish.empty_subtitle_assessments': 'Pick a class and subject above, then create your first assessment.',
|
||
'polish.empty_title_grading': 'No grading available',
|
||
'polish.empty_subtitle_grading': 'Choose a class and subject above to set up grading schemes and compute grades.',
|
||
'polish.empty_title_reports': 'No reports generated yet',
|
||
'polish.empty_subtitle_reports': 'Pick a class above to generate and manage student reports.',
|
||
'polish.empty_title_attendance': 'Track attendance',
|
||
'polish.empty_subtitle_attendance': 'Choose a class above to create attendance sessions and review statistics.',
|
||
'polish.empty_title_matrix': 'Matrix not available yet',
|
||
'polish.empty_subtitle_matrix': 'Choose a class and subject above to see the full competency matrix for all students.',
|
||
'polish.trend_up': 'Trending up',
|
||
'polish.trend_down': 'Trending down',
|
||
'polish.trend_flat': 'Stable',
|
||
'polish.this_week_bars': 'This week vs. last week',
|
||
|
||
// ─── Empty state enrichments (Round 7) ───────────────────────────────
|
||
'polish.recent_activity_title': 'Recent Activity',
|
||
'polish.recent_activity_subtitle': 'Latest learning progress across all classes',
|
||
'polish.recent_activity_loading': 'Loading activity…',
|
||
'polish.recent_activity_empty': 'No activity yet.',
|
||
'polish.grading_overview_title': 'Grading Overview',
|
||
'polish.grading_overview_subtitle': 'Grading schemes and computations for your school',
|
||
'polish.grading_total_schemes': 'Grading schemes',
|
||
'polish.grading_subjects_covered': 'Subjects covered',
|
||
'polish.grading_distribution': 'Type distribution',
|
||
'polish.grading_loading': 'Loading grading data…',
|
||
'polish.report_templates_title': 'Report Templates',
|
||
'polish.report_templates_subtitle': 'Three report types for different use cases',
|
||
'polish.report_template_draft_name': 'Draft Report',
|
||
'polish.report_template_draft_desc': 'Collect observations and texts during the semester and expand them step by step.',
|
||
'polish.report_template_final_name': 'Final Report',
|
||
'polish.report_template_final_desc': 'Finished report with narrative texts and optional grades for the report card conference.',
|
||
'polish.report_template_pdf_name': 'PDF Export',
|
||
'polish.report_template_pdf_desc': 'Print-ready version to share with parents and students.',
|
||
'polish.matrix_how_it_works_title': 'How it works',
|
||
'polish.matrix_how_it_works_subtitle': 'Three steps to the competency matrix',
|
||
'polish.matrix_step_1_title': 'Pick a class',
|
||
'polish.matrix_step_1_desc': 'Choose a class from the dropdown above.',
|
||
'polish.matrix_step_2_title': 'Pick a subject',
|
||
'polish.matrix_step_2_desc': 'Pick the subject whose competencies you want to see.',
|
||
'polish.matrix_step_3_title': 'View matrix',
|
||
'polish.matrix_step_3_desc': 'The competency matrix for all students loads automatically.',
|
||
'polish.attendance_quick_stats_title': 'Quick Stats',
|
||
'polish.attendance_quick_stats_subtitle': 'Attendance overview across all your classes',
|
||
'polish.attendance_total_sessions_month': 'Sessions this month',
|
||
'polish.attendance_avg_rate': 'Avg. attendance rate',
|
||
'polish.attendance_common_reason': 'Most common absence reason',
|
||
'polish.attendance_no_absences': 'No absences',
|
||
'polish.attendance_loading': 'Loading quick stats…',
|
||
'polish.attendance_no_classes_hint': 'No classes yet — create a class to start tracking attendance.',
|
||
|
||
// ─── Score distribution histogram (assessments) ────────────────────
|
||
'assessments.score_distribution': 'Score Distribution',
|
||
'assessments.average': 'Average',
|
||
'assessments.median': 'Median',
|
||
'assessments.range': 'Range',
|
||
'assessments.no_scores': 'No scores available',
|
||
|
||
// ─── Student journey timeline ──────────────────────────────────────
|
||
'student.journey': 'Learning Journey',
|
||
'student.journey_milestone': 'Milestone',
|
||
'student.journey_achieved': 'Competency achieved',
|
||
'student.journey_started': 'New area started',
|
||
'student.journey_above_avg': 'Above average performance',
|
||
'student.journey_grade': 'Grading completed',
|
||
'student.journey_last_30': 'Last 30 days',
|
||
'student.journey_last_90': 'Last 90 days',
|
||
'student.journey_all': 'All time',
|
||
|
||
// Student export & print
|
||
'student.export_pdf': 'Export as PDF',
|
||
'student.export_csv': 'Export as CSV',
|
||
'student.print_report': 'Print report',
|
||
'student.export_data': 'Export data',
|
||
|
||
// ─── Attendance ──────────────────────────────────────────────────────
|
||
'nav.attendance': 'Attendance',
|
||
'attendance.title': 'Attendance Tracking',
|
||
'attendance.subtitle': 'Track and analyze attendance per class and period',
|
||
'attendance.new_session': 'New Session',
|
||
'attendance.present': 'Present',
|
||
'attendance.absent': 'Absent',
|
||
'attendance.excused': 'Excused',
|
||
'attendance.late': 'Late',
|
||
'attendance.status': 'Status',
|
||
'attendance.rate': 'Attendance Rate',
|
||
'attendance.date': 'Date',
|
||
'attendance.period': 'Period',
|
||
'attendance.completed': 'Completed',
|
||
'attendance.open': 'Open',
|
||
'attendance.save_all': 'Save All',
|
||
'attendance.no_sessions': 'No attendance data',
|
||
'attendance.stats': 'Statistics',
|
||
'attendance.monthly': 'Monthly Overview',
|
||
'attendance.absences_count': 'Absences',
|
||
'attendance.late_count': 'Late arrivals',
|
||
'attendance.select_class': 'Select class',
|
||
'attendance.comment': 'Comment',
|
||
'attendance.arrival_time': 'Arrival time',
|
||
'attendance.calendar': 'Calendar',
|
||
'attendance.complete_session': 'Complete session',
|
||
'attendance.delete_session': 'Delete session',
|
||
'attendance.reopen_session': 'Reopen session',
|
||
'attendance.no_students': 'No students in this class',
|
||
'attendance.session_for': 'Attendance for',
|
||
'attendance.total_students': 'Total students',
|
||
'attendance.present_count': 'Present',
|
||
'attendance.excused_count': 'Excused',
|
||
'attendance.absent_count': 'Absent',
|
||
'attendance.late_count_short': 'Late',
|
||
'attendance.subject': 'Subject',
|
||
'competencies.select_class': 'Select a competency template from the list',
|
||
'label.teacher': 'Teachers',
|
||
'label.student': 'Student',
|
||
'label.students': 'Students',
|
||
'label.classes': 'Classes',
|
||
'label.subjects': 'Subjects',
|
||
'label.entries': 'Entries',
|
||
'label.assessments': 'Assessments',
|
||
'label.reports': 'Reports',
|
||
|
||
// ─── Lesson Planning ──────────────────────────────────────────────
|
||
'nav.lesson_plans': 'Lesson Planning',
|
||
'nav.lesson-plans': 'Lesson Planning',
|
||
'lesson.title': 'Lesson Planning',
|
||
'lesson.subtitle': 'Plan and document lessons',
|
||
'lesson.new': 'New Lesson',
|
||
'lesson.edit': 'Edit Lesson',
|
||
'lesson.empty': 'No lessons planned yet',
|
||
'lesson.empty_desc': 'Create your first lesson',
|
||
'lesson.this_week': 'This Week',
|
||
'lesson.upcoming': 'Upcoming',
|
||
'lesson.field.title': 'Title',
|
||
'lesson.field.description': 'Description',
|
||
'lesson.field.date': 'Date',
|
||
'lesson_plans.date_hint': 'Format: DD.MM.YYYY',
|
||
'lesson.field.duration': 'Duration (min)',
|
||
'lesson.field.class': 'Class',
|
||
'lesson.field.subject': 'Subject',
|
||
'lesson.field.objectives': 'Learning Objectives',
|
||
'lesson.field.materials': 'Materials',
|
||
'lesson.field.homework': 'Homework',
|
||
'lesson.field.reflection': 'Reflection',
|
||
'lesson.field.competencies': 'Linked Competencies',
|
||
'lesson.field.status': 'Status',
|
||
'lesson.status_draft': 'Draft',
|
||
'lesson.status_scheduled': 'Scheduled',
|
||
'lesson.status_completed': 'Completed',
|
||
'lesson.status_cancelled': 'Cancelled',
|
||
'lesson.filter_all': 'All',
|
||
'lesson.add_objective': 'Add objective',
|
||
'lesson.add_material': 'Add material',
|
||
'lesson.duration_min': 'min',
|
||
'lesson.agenda': 'Agenda',
|
||
'lesson.delete_confirm': 'Really delete this lesson?',
|
||
'lesson.saved': 'Lesson saved',
|
||
'lesson.deleted': 'Lesson deleted',
|
||
'lesson.no_upcoming': 'No upcoming lessons',
|
||
'lesson.no_lessons_this_week': 'No lessons scheduled this week',
|
||
'lesson.select_class_first': 'Please select a class first',
|
||
'lesson.duration_label': '{min} min',
|
||
'lesson.objective_placeholder': 'New objective…',
|
||
'lesson.material_placeholder': 'New material…',
|
||
'lesson.objectives_count': '{count} objectives',
|
||
'lesson.materials_count': '{count} materials',
|
||
|
||
// ─── Unified Calendar ─────────────────────────────────────────────────
|
||
'nav.calendar': 'Calendar',
|
||
'calendar.title': 'Calendar',
|
||
'calendar.subtitle': 'All dates and events at a glance',
|
||
'calendar.today': 'Today',
|
||
'calendar.legend': 'Legend',
|
||
'calendar.upcoming': 'Upcoming',
|
||
'calendar.upcoming_week': 'This week',
|
||
'calendar.no_events': 'No events this month',
|
||
'calendar.no_events_desc': 'Try another month',
|
||
'calendar.event_types.assessment': 'Assessment',
|
||
'calendar.event_types.attendance': 'Attendance',
|
||
'calendar.event_types.progress': 'Progress',
|
||
'calendar.event_types.report': 'Report',
|
||
'calendar.event_types.lesson': 'Lesson',
|
||
'calendar.more_events': '+{count} more',
|
||
'calendar.day_events': 'Events on {date}',
|
||
'calendar.week': 'Week',
|
||
'calendar.loading': 'Loading events…',
|
||
'calendar.error': 'Failed to load events',
|
||
'calendar.no_day_events': 'No events on this day',
|
||
'calendar.close': 'Close',
|
||
'calendar.meta.subject': 'Subject',
|
||
'calendar.meta.class': 'Class',
|
||
'calendar.meta.type': 'Type',
|
||
'calendar.meta.period': 'Period',
|
||
'calendar.meta.status': 'Status',
|
||
'calendar.meta.rate': 'Rate',
|
||
'calendar.meta.present': 'Present',
|
||
'calendar.meta.absent': 'Absent',
|
||
'calendar.meta.excused': 'Excused',
|
||
'calendar.meta.late': 'Late',
|
||
'calendar.meta.count': 'Entries',
|
||
'calendar.meta.student': 'Student',
|
||
'calendar.meta.weight': 'Weight',
|
||
'calendar.meta.max_score': 'Max score',
|
||
'calendar.meta.includes_grades': 'With grades',
|
||
'calendar.no_upcoming': 'No upcoming events this week',
|
||
|
||
// ─── Grade Trend & Risk Analysis (analytics enhancements) ────────
|
||
'analytics.grade_trend': 'Grade Trend Over Time',
|
||
'analytics.grade_trend_desc': 'Average mastery by week',
|
||
'analytics.range_12_weeks': '12 Weeks',
|
||
'analytics.range_24_weeks': '24 Weeks',
|
||
'analytics.min_standard': 'Minimum Standard',
|
||
'analytics.unique_students': 'Students',
|
||
'analytics.school_avg': 'School Avg',
|
||
'analytics.risk_analysis': 'Risk Analysis: Students Needing Support',
|
||
'analytics.risk_analysis_desc': 'Students needing support',
|
||
'analytics.risk_score': 'Risk Score',
|
||
'analytics.risk_level': 'Risk Level',
|
||
'analytics.risk_low': 'Low',
|
||
'analytics.risk_medium': 'Medium',
|
||
'analytics.risk_high': 'High',
|
||
'analytics.risk_critical': 'Critical',
|
||
'analytics.signals': 'Signals',
|
||
'analytics.signal_low_mastery': 'Low Mastery',
|
||
'analytics.signal_no_progress': 'No Recent Progress',
|
||
'analytics.signal_low_attendance': 'Low Attendance',
|
||
'analytics.signal_declining': 'Declining Trend',
|
||
'analytics.latest_mastery': 'Latest Mastery',
|
||
'analytics.last_activity': 'Last Activity',
|
||
'analytics.total_at_risk': 'Total At Risk',
|
||
'analytics.critical_count': 'Critical',
|
||
'analytics.high_count': 'High',
|
||
'analytics.avg_risk_score': 'Avg Risk Score',
|
||
'analytics.all_good': 'All students are on track!',
|
||
'analytics.filter_risk': 'Filter by risk level',
|
||
'analytics.class_avg': 'Class Avg',
|
||
'analytics.details': 'Details',
|
||
'analytics.filter_all': 'All',
|
||
'analytics.no_recent_activity': 'No activity',
|
||
'analytics.risk_distribution_title': 'Risk Level Distribution',
|
||
'analytics.risk_distribution_desc': 'Number of students by risk level',
|
||
|
||
// ─── Parent Communication ──────────────────────────────────────────
|
||
'nav.parents': 'Parent Communication',
|
||
'parents.title': 'Parent Communication',
|
||
'parents.subtitle': 'Manage messages to parents',
|
||
'parents.new_message': 'New Message',
|
||
'parents.new_contact': 'New Contact',
|
||
'parents.conversations': 'Conversations',
|
||
'parents.no_conversations': 'No conversations',
|
||
'parents.no_conversations_desc': 'Start a new message',
|
||
'parents.select_conversation': 'Select a conversation',
|
||
'parents.parent_info': 'Parent Info',
|
||
'parents.student_info': 'Student Info',
|
||
'parents.field.parent': 'Parent/Guardian',
|
||
'parents.field.student': 'Student',
|
||
'parents.field.subject': 'Subject',
|
||
'parents.field.body': 'Message',
|
||
'parents.field.category': 'Category',
|
||
'parents.field.priority': 'Priority',
|
||
'parents.field.relationship': 'Relationship',
|
||
'parents.field.email': 'Email',
|
||
'parents.field.phone': 'Phone',
|
||
'parents.field.preferred_contact': 'Preferred Contact',
|
||
'parents.field.preferred_language': 'Preferred Language',
|
||
'parents.field.notes': 'Notes',
|
||
'parents.category_general': 'General',
|
||
'parents.category_progress': 'Progress',
|
||
'parents.category_assessment': 'Assessment',
|
||
'parents.category_behavior': 'Behavior',
|
||
'parents.category_attendance': 'Attendance',
|
||
'parents.category_event': 'Event',
|
||
'parents.priority_low': 'Low',
|
||
'parents.priority_normal': 'Normal',
|
||
'parents.priority_high': 'High',
|
||
'parents.priority_urgent': 'Urgent',
|
||
'parents.status_draft': 'Draft',
|
||
'parents.status_sent': 'Sent',
|
||
'parents.status_delivered': 'Delivered',
|
||
'parents.status_read': 'Read',
|
||
'parents.status_replied': 'Replied',
|
||
'parents.reply': 'Reply',
|
||
'parents.send': 'Send',
|
||
'parents.save_draft': 'Save Draft',
|
||
'parents.statistics': 'Statistics',
|
||
'parents.messages_sent': 'Messages Sent',
|
||
'parents.response_rate': 'Response Rate',
|
||
'parents.avg_response_time': 'Avg Response Time',
|
||
'parents.by_category': 'By Category',
|
||
'parents.empty_thread': 'No messages yet',
|
||
'parents.empty_thread_desc': 'Start the conversation',
|
||
'parents.templates': 'Templates',
|
||
'parents.template_progress_good': 'Positive Progress',
|
||
'parents.template_assessment_reminder': 'Assessment Reminder',
|
||
'parents.template_behavior_concern': 'Behavior Concern',
|
||
'parents.template_meeting_request': 'Meeting Request',
|
||
'parents.relationship_parent': 'Parent',
|
||
'parents.relationship_guardian': 'Guardian',
|
||
'parents.relationship_emergency': 'Emergency Contact',
|
||
'parents.delete_confirm': 'Delete this message?',
|
||
'parents.deleted': 'Message deleted',
|
||
'parents.sent': 'Message sent',
|
||
'parents.draft_saved': 'Draft saved',
|
||
'parents.reply_sent': 'Reply saved',
|
||
'parents.marked_read': 'Marked as read',
|
||
'parents.contact_created': 'Contact created',
|
||
'parents.contact_updated': 'Contact updated',
|
||
'parents.contact_deleted': 'Contact deleted',
|
||
'parents.filter_all': 'All',
|
||
'parents.filter_by_student': 'By Student',
|
||
'parents.filter_by_category': 'By Category',
|
||
'parents.search_placeholder': 'Search by name…',
|
||
'parents.this_month': 'This month',
|
||
'parents.no_messages_sent': 'No messages sent yet',
|
||
'parents.messages': 'Messages',
|
||
'parents.unread': 'Unread',
|
||
'parents.last_message': 'Last message',
|
||
'parents.create_contact_first': 'Please create a parent contact first',
|
||
'parents.no_contacts': 'No parent contacts',
|
||
'parents.no_contacts_desc': 'Create the first contact',
|
||
'parents.view_thread': 'View thread',
|
||
'parents.reply_placeholder': 'Enter parent reply…',
|
||
'parents.hours': 'h',
|
||
'parents.minutes': 'min',
|
||
'parents.days': 'd',
|
||
'parents.no_response_yet': 'No response',
|
||
|
||
// Behavior Tracking — Verhaltensverfolgung
|
||
'nav.behavior': 'Behavior',
|
||
'behavior.title': 'Behavior Tracking',
|
||
'behavior.subtitle': 'Log and track behavior incidents for your students',
|
||
'behavior.tab_incidents': 'Incidents',
|
||
'behavior.tab_categories': 'Categories',
|
||
'behavior.tab_statistics': 'Statistics',
|
||
'behavior.loading': 'Loading…',
|
||
'behavior.error_load': 'Failed to load',
|
||
'behavior.error_save': 'Failed to save',
|
||
'behavior.error_delete': 'Failed to delete',
|
||
'behavior.empty_incidents': 'No incidents logged',
|
||
'behavior.empty_incidents_desc': 'Log the first incident or adjust the filters.',
|
||
'behavior.empty_incidents_filtered': 'No incidents match the selected filters',
|
||
'behavior.empty_incidents_filtered_desc': 'Adjust the filters to see results.',
|
||
'behavior.empty_categories': 'No categories yet',
|
||
'behavior.empty_categories_desc': 'Create your first behavior category.',
|
||
'behavior.select_class': 'Select class',
|
||
'behavior.all_classes': 'All classes',
|
||
'behavior.all_students': 'All students',
|
||
'behavior.all_categories': 'All categories',
|
||
'behavior.all_severities': 'All severities',
|
||
'behavior.all_resolved': 'All status',
|
||
'behavior.add_incident': 'Log incident',
|
||
'behavior.edit_incident': 'Edit incident',
|
||
'behavior.add_category': 'Add category',
|
||
'behavior.edit_category': 'Edit category',
|
||
'behavior.field.student': 'Student',
|
||
'behavior.field.category': 'Category',
|
||
'behavior.field.date': 'Date',
|
||
'behavior.field.severity': 'Severity',
|
||
'behavior.field.description': 'Description',
|
||
'behavior.field.location': 'Location',
|
||
'behavior.field.follow_up': 'Follow-up action',
|
||
'behavior.field.name': 'Name',
|
||
'behavior.field.color': 'Color',
|
||
'behavior.field.valence': 'Valence',
|
||
'behavior.field.icon': 'Icon (emoji)',
|
||
'behavior.field.class': 'Class',
|
||
'behavior.field.resolved': 'Mark as resolved',
|
||
'behavior.severity.minor': 'Minor',
|
||
'behavior.severity.moderate': 'Moderate',
|
||
'behavior.severity.major': 'Major',
|
||
'behavior.valence.positive': 'Positive',
|
||
'behavior.valence.negative': 'Negative',
|
||
'behavior.valence.neutral': 'Neutral',
|
||
'behavior.resolved': 'Resolved',
|
||
'behavior.unresolved': 'Open',
|
||
'behavior.mark_resolved': 'Mark as resolved',
|
||
'behavior.mark_unresolved': 'Reopen',
|
||
'behavior.resolved_by': 'Resolved by',
|
||
'behavior.resolved_at': 'Resolved at',
|
||
'behavior.created_at': 'Logged at',
|
||
'behavior.by_teacher': 'Logged by',
|
||
'behavior.delete_incident_title': 'Delete incident',
|
||
'behavior.delete_incident_desc': 'Are you sure you want to delete this incident? This action cannot be undone.',
|
||
'behavior.delete_category_title': 'Delete category',
|
||
'behavior.delete_category_desc': 'Are you sure you want to delete this category?',
|
||
'behavior.delete_category_blocked': 'Cannot delete category — incidents are still assigned to it.',
|
||
'behavior.save': 'Save',
|
||
'behavior.cancel': 'Cancel',
|
||
'behavior.delete': 'Delete',
|
||
'behavior.edit': 'Edit',
|
||
'behavior.saved_incident': 'Incident saved',
|
||
'behavior.deleted_incident': 'Incident deleted',
|
||
'behavior.saved_category': 'Category saved',
|
||
'behavior.deleted_category': 'Category deleted',
|
||
'behavior.marked_resolved': 'Incident marked as resolved',
|
||
'behavior.marked_unresolved': 'Incident reopened',
|
||
'behavior.location.classroom': 'Classroom',
|
||
'behavior.location.playground': 'Playground',
|
||
'behavior.location.hallway': 'Hallway',
|
||
'behavior.location.gym': 'Gym',
|
||
'behavior.location.auditorium': 'Auditorium',
|
||
'behavior.location.library': 'Library',
|
||
'behavior.location.cafeteria': 'Cafeteria',
|
||
'behavior.location.other': 'Other location',
|
||
'behavior.followup.parent_talk': 'Parent talk',
|
||
'behavior.followup.detention': 'Detention',
|
||
'behavior.followup.praise_circle': 'Praise in circle',
|
||
'behavior.followup.note_home': 'Note home',
|
||
'behavior.followup.warning': 'Warning',
|
||
'behavior.followup.mediation': 'Mediation',
|
||
'behavior.followup.prize': 'Reward',
|
||
'behavior.followup.none': 'None',
|
||
'behavior.filter_section': 'Filters',
|
||
'behavior.filter.date_from': 'From',
|
||
'behavior.filter.date_to': 'To',
|
||
'behavior.filter.category': 'Category',
|
||
'behavior.filter.severity': 'Severity',
|
||
'behavior.filter.resolved': 'Status',
|
||
'behavior.filter.student': 'Student',
|
||
'behavior.stat.this_month': 'Incidents this month',
|
||
'behavior.stat.positive': 'Positive incidents',
|
||
'behavior.stat.negative': 'Negative incidents',
|
||
'behavior.stat.resolution_rate': 'Resolution rate',
|
||
'behavior.stat.by_category': 'Incidents by category',
|
||
'behavior.stat.by_valence': 'Distribution by valence',
|
||
'behavior.stat.top_students': 'Top 5 students by incidents',
|
||
'behavior.stat.no_data': 'No data available yet',
|
||
'behavior.stat.total': 'Total',
|
||
'behavior.stat.pos_count': 'Positive',
|
||
'behavior.stat.neg_count': 'Negative',
|
||
'behavior.incidents_count': 'incidents',
|
||
'behavior.preview': 'Preview',
|
||
'behavior.no_class_selected': 'Please select a class',
|
||
'behavior.no_class_selected_desc': 'Select a class above to log and view behavior incidents.',
|
||
'behavior.schoolwide': 'School-wide',
|
||
'behavior.color_helper': 'Hex color, e.g. #10b981',
|
||
'behavior.icon_helper': 'An emoji for quick recognition, e.g. 🤝',
|
||
'behavior.name_placeholder': 'e.g. Helpful behavior',
|
||
'behavior.description_placeholder': 'What happened?',
|
||
'behavior.location_placeholder': 'e.g. Classroom',
|
||
'behavior.followup_placeholder': 'e.g. Parent talk',
|
||
'behavior.detail': 'Detail',
|
||
'behavior.required_student': 'Please select a student',
|
||
'behavior.required_category': 'Please select a category',
|
||
'behavior.required_description': 'Please enter a description',
|
||
'behavior.duplicate_category': 'A category with this name already exists',
|
||
'behavior.confirm_close': 'Are you sure you want to close? Unsaved changes will be lost.',
|
||
|
||
// Curriculum Coverage
|
||
'nav.coverage': 'Coverage',
|
||
'coverage.title': 'Curriculum Coverage',
|
||
'coverage.subtitle': 'See which competencies have been assessed and where gaps remain',
|
||
'coverage.loading': 'Loading…',
|
||
'coverage.error': 'Failed to load coverage data',
|
||
'coverage.select_class': 'Please select a class',
|
||
'coverage.select_subject': 'All subjects',
|
||
'coverage.no_assignments': 'No competency template assigned',
|
||
'coverage.no_assignments_desc': 'This class has no competency template yet. Assign one in the Competency Grid section to analyze coverage.',
|
||
'coverage.go_to_grid': 'Go to Competency Grid',
|
||
'coverage.kpi.total': 'Total Competencies',
|
||
'coverage.kpi.assessed': 'Assessed',
|
||
'coverage.kpi.not_assessed': 'Not Assessed',
|
||
'coverage.kpi.students': 'Students',
|
||
'coverage.section.by_category': 'Coverage by Category',
|
||
'coverage.section.by_category_desc': 'Overview of assessment progress per competency category',
|
||
'coverage.section.matrix': 'Competency Matrix',
|
||
'coverage.section.matrix_desc': 'Detailed overview of all competencies',
|
||
'coverage.section.action_needed': 'Action Needed',
|
||
'coverage.section.action_needed_desc': 'These competencies have not yet been assessed or only partially',
|
||
'coverage.section.recent': 'Recently Assessed',
|
||
'coverage.section.recent_desc': 'The 5 most recently assessed competencies',
|
||
'coverage.filter.all': 'All',
|
||
'coverage.filter.covered': 'Covered',
|
||
'coverage.filter.partial': 'Partial',
|
||
'coverage.filter.untouched': 'Not started',
|
||
'coverage.sort.by_category': 'By Category',
|
||
'coverage.sort.by_status': 'By Status',
|
||
'coverage.sort.by_recent': 'Recently Assessed',
|
||
'coverage.search_placeholder': 'Search competency (code or title)…',
|
||
'coverage.status.covered': 'Fully assessed',
|
||
'coverage.status.partial': 'Partially assessed',
|
||
'coverage.status.untouched': 'Not assessed',
|
||
'coverage.assessed_count': 'Assessed students',
|
||
'coverage.last_assessed': 'Last assessed',
|
||
'coverage.never_assessed': 'Never assessed',
|
||
'coverage.assessments_count': 'Assessments',
|
||
'coverage.progress_count': 'Progress entries',
|
||
'coverage.empty_action': 'All competencies assessed!',
|
||
'coverage.empty_action_desc': 'All competencies for this class have been at least partially assessed.',
|
||
'coverage.empty_recent': 'No assessments yet',
|
||
'coverage.empty_recent_desc': 'Once you record progress entries, they will appear here.',
|
||
'coverage.record_progress': 'Record',
|
||
'coverage.guide.title': 'How it works',
|
||
'coverage.guide.subtitle': 'Three steps to coverage analysis',
|
||
'coverage.guide.step1_title': 'Select a class',
|
||
'coverage.guide.step1_desc': 'Choose a class above to load its assigned competency templates.',
|
||
'coverage.guide.step2_title': 'Select a subject (optional)',
|
||
'coverage.guide.step2_desc': 'Filter by a specific subject or view all subjects at once.',
|
||
'coverage.guide.step3_title': 'Analyze coverage',
|
||
'coverage.guide.step3_desc': 'Identify gaps and competencies that need to be assessed.',
|
||
'coverage.no_data': 'No data available',
|
||
'coverage.coverage_percent': 'Covered',
|
||
'coverage.not_covered_percent': 'Open',
|
||
'attendance.empty_action_hint': 'Click "New Session" above to start an attendance session.',
|
||
'student_detail.sparse_chart_hint': 'Competency areas without assessment are displayed as a minimum value.',
|
||
'student_detail.no_assessment': 'N/A',
|
||
'analytics.level_range': '(0–4)',
|
||
'analytics.calendar_week_full': 'Calendar week',
|
||
'flower.empty_tip': 'Select a class and a student to see the competence flower.',
|
||
'grading.empty_description': 'Grading schemes define how different assessments (progress, exams, etc.) are combined into an overall grade. Choose a class and subject to begin.',
|
||
'parents.no_conversation_selected': 'Select a conversation from the list',
|
||
|
||
// ─── Rubric Library ──────────────────────────────────────────────
|
||
'nav.rubrics': 'Rubrics',
|
||
'rubrics.title': 'Rubric Library',
|
||
'rubrics.subtitle': 'Create and manage reusable grading rubrics',
|
||
'rubrics.create': 'Create Rubric',
|
||
'rubrics.edit': 'Edit Rubric',
|
||
'rubrics.duplicate': 'Duplicate',
|
||
'rubrics.delete': 'Delete',
|
||
'rubrics.detail': 'Rubric Details',
|
||
'rubrics.print': 'Print',
|
||
'rubrics.save': 'Save',
|
||
'rubrics.cancel': 'Cancel',
|
||
'rubrics.close': 'Close',
|
||
'rubrics.type_analytic': 'Analytic',
|
||
'rubrics.type_holistic': 'Holistic',
|
||
'rubrics.criteria': 'Criteria',
|
||
'rubrics.levels': 'Performance Levels',
|
||
'rubrics.add_criterion': 'Add Criterion',
|
||
'rubrics.add_level': 'Add Level',
|
||
'rubrics.remove_criterion': 'Remove Criterion',
|
||
'rubrics.remove_level': 'Remove Level',
|
||
'rubrics.criterion_name': 'Criterion Name',
|
||
'rubrics.criterion_description': 'Criterion Description',
|
||
'rubrics.criterion_weight': 'Weight',
|
||
'rubrics.criterion_max_points': 'Max Points',
|
||
'rubrics.level_label': 'Level Label',
|
||
'rubrics.level_description': 'Descriptor',
|
||
'rubrics.level_points': 'Points',
|
||
'rubrics.field.title': 'Title',
|
||
'rubrics.field.description': 'Description',
|
||
'rubrics.field.type': 'Rubric Type',
|
||
'rubrics.field.subject': 'Subject',
|
||
'rubrics.field.max_points': 'Maximum Points',
|
||
'rubrics.field.is_public': 'Share school-wide',
|
||
'rubrics.field.is_public_hint': 'Other teachers can use this rubric',
|
||
'rubrics.no_subject': 'No Subject',
|
||
'rubrics.all_subjects': 'All Subjects',
|
||
'rubrics.public': 'Public',
|
||
'rubrics.private': 'Private',
|
||
'rubrics.version': 'Version',
|
||
'rubrics.by_teacher': 'By',
|
||
'rubrics.max_points': 'Max Points',
|
||
'rubrics.search_placeholder': 'Search rubrics…',
|
||
'rubrics.filter_subject': 'Filter by subject',
|
||
'rubrics.filter_public': 'My rubrics only',
|
||
'rubrics.filter_all': 'All rubrics',
|
||
'rubrics.empty_title': 'No rubrics yet',
|
||
'rubrics.empty_desc': 'Create your first rubric to define standardized grading criteria for your class.',
|
||
'rubrics.empty_create': 'Create First Rubric',
|
||
'rubrics.loading': 'Loading…',
|
||
'rubrics.error': 'Failed to load rubrics',
|
||
'rubrics.saved': 'Rubric saved',
|
||
'rubrics.deleted': 'Rubric deleted',
|
||
'rubrics.duplicated': 'Rubric duplicated',
|
||
'rubrics.delete_title': 'Delete Rubric',
|
||
'rubrics.delete_desc': 'Are you sure you want to delete this rubric? This action cannot be undone.',
|
||
'rubrics.preview': 'Preview',
|
||
'rubrics.edit_form': 'Edit',
|
||
'rubrics.criteria_count': '{count} criteria',
|
||
'rubrics.criterion': 'Criterion',
|
||
'rubrics.level': 'Level',
|
||
'rubrics.weight': 'Weight',
|
||
'rubrics.points': 'Points',
|
||
'rubrics.total_weight': 'Total Weight',
|
||
'rubrics.total_points': 'Total Points',
|
||
'rubrics.title_required': 'Please enter a title',
|
||
'rubrics.criteria_required': 'At least one criterion is required',
|
||
'rubrics.levels_required': 'Each criterion needs at least one level',
|
||
'rubrics.level_header': 'Level {order}',
|
||
'rubrics.table_criterion': 'Criterion',
|
||
'rubrics.table_weight_short': 'Wt.',
|
||
'rubrics.confirm_close': 'Unsaved changes will be lost. Continue?',
|
||
|
||
// ── Comments Bank (Report Card Comments) ──────────────────────────────
|
||
'nav.comments': 'Comments',
|
||
'nav.drawing': 'Drawing',
|
||
'comments.title': 'Report Card Comments',
|
||
'comments.subtitle': 'Library of reusable comment texts for report cards',
|
||
'comments.tab_entries': 'Comments',
|
||
'comments.tab_categories': 'Categories',
|
||
'comments.tab_statistics': 'Statistics',
|
||
'comments.search_placeholder': 'Search comments…',
|
||
'comments.create_entry': 'Create Comment',
|
||
'comments.edit_entry': 'Edit Comment',
|
||
'comments.create_entry_desc': 'Create a new reusable comment for report cards.',
|
||
'comments.edit_entry_desc': 'Edit the comment.',
|
||
'comments.field_title': 'Title',
|
||
'comments.title_placeholder': 'Short comment title',
|
||
'comments.field_category': 'Category',
|
||
'comments.field_subject': 'Subject',
|
||
'comments.no_subject': 'No Subject',
|
||
'comments.field_grade_level': 'Grade Level',
|
||
'comments.field_text': 'Comment Text',
|
||
'comments.text_placeholder': 'Write the comment text here…',
|
||
'comments.field_public': 'Public',
|
||
'comments.field_tags': 'Tags',
|
||
'comments.tags_placeholder': 'e.g. motivation, social, academic',
|
||
'comments.preview': 'Preview',
|
||
'comments.public': 'Public',
|
||
'comments.private': 'Private',
|
||
'comments.usage_count': 'Uses',
|
||
'comments.entries_count': 'Entries',
|
||
'comments.copy_success': 'Copied to clipboard',
|
||
'comments.copy_text': 'Copy Text',
|
||
'comments.saved': 'Comment saved',
|
||
'comments.created': 'Comment created',
|
||
'comments.deleted': 'Comment deleted',
|
||
'comments.error': 'Failed to load',
|
||
'comments.validation_required': 'Please fill in all required fields.',
|
||
'comments.empty_title': 'No comments yet',
|
||
'comments.empty_desc': 'Create your first reusable comment for report cards.',
|
||
'comments.empty_create': 'Create First Comment',
|
||
'comments.filter_category': 'Category',
|
||
'comments.filter_subject': 'Subject',
|
||
'comments.filter_grade': 'Grade Level',
|
||
'comments.filter_visibility': 'Visibility',
|
||
'comments.all_categories': 'All Categories',
|
||
'comments.all_subjects': 'All Subjects',
|
||
'comments.all_grades': 'All Grades',
|
||
'comments.all_visibility': 'All',
|
||
'comments.public_only': 'Public Only',
|
||
'comments.private_only': 'Private Only',
|
||
'comments.categories_title': 'Comment Categories',
|
||
'comments.add_category': 'Add Category',
|
||
'comments.edit_category': 'Edit Category',
|
||
'comments.add_category_desc': 'Create a new category for comments.',
|
||
'comments.edit_category_desc': 'Edit the category.',
|
||
'comments.category_name': 'Name',
|
||
'comments.category_name_placeholder': 'e.g. Social Behavior',
|
||
'comments.category_name_required': 'Please enter a category name.',
|
||
'comments.category_color': 'Color',
|
||
'comments.category_icon': 'Icon',
|
||
'comments.category_icon_placeholder': '🤝',
|
||
'comments.category_saved': 'Category saved',
|
||
'comments.category_created': 'Category created',
|
||
'comments.category_deleted': 'Category deleted',
|
||
'comments.category_empty_title': 'No categories yet',
|
||
'comments.category_empty_desc': 'Create your first category.',
|
||
'comments.delete_entry_title': 'Delete Comment',
|
||
'comments.delete_entry_desc': 'Are you sure you want to delete this comment? This action cannot be undone.',
|
||
'comments.delete_category_title': 'Delete Category',
|
||
'comments.delete_category_desc': 'Are you sure you want to delete this category? Categories with existing comments cannot be deleted.',
|
||
'comments.stat_total': 'Total',
|
||
'comments.stat_public': 'Public',
|
||
'comments.stat_categories': 'Categories',
|
||
'comments.stat_most_used': 'Most Used',
|
||
'comments.chart_by_category': 'Comments by Category',
|
||
'comments.top_used_title': 'Top 5 Most-Used Comments',
|
||
|
||
// Notifications
|
||
'notifications.title': 'Notifications',
|
||
'notifications.empty': 'No notifications',
|
||
'notifications.mark_all_read': 'Mark all as read',
|
||
'notifications.upcoming_assessments': 'Upcoming Assessments',
|
||
'notifications.missing_observations': 'Missing Observations',
|
||
'notifications.assessment_deadline': 'Assessment in {days} days',
|
||
'notifications.no_progress_for': 'No progress for {days} days for {student}',
|
||
'notifications.record_now': 'Record now',
|
||
'notifications.to_assessment': 'To assessment',
|
||
'notifications.to_report': 'To report',
|
||
'notifications.in_days': 'in {days} days',
|
||
'notifications.days_ago': '{days} days ago',
|
||
|
||
// Onboarding
|
||
'onboarding.welcome_title': 'Welcome to CompetenceTrack!',
|
||
'onboarding.welcome_desc': 'Your free competency & grading platform for schools. Let\'s take a quick tour.',
|
||
'onboarding.dashboard_title': 'Dashboard',
|
||
'onboarding.dashboard_desc': 'Here you see an overview of all classes, students and current activities. Use quick actions for common tasks.',
|
||
'onboarding.progress_title': 'Learning Progress',
|
||
'onboarding.progress_desc': 'Record observations and progress for individual students. Select a class and subject to log entries.',
|
||
'onboarding.flower_title': 'Competence Flower',
|
||
'onboarding.flower_desc': 'Visualize competency development as a radar chart. Compare students and track trends over time.',
|
||
'onboarding.reports_title': 'Reports',
|
||
'onboarding.reports_desc': 'Create report cards and development reports. Export as PDF or print directly.',
|
||
'onboarding.done_title': 'Done!',
|
||
'onboarding.done_desc': 'You\'re ready to use CompetenceTrack. For questions, click the help icon in the header.',
|
||
'onboarding.skip': 'Skip',
|
||
'onboarding.next': 'Next',
|
||
'onboarding.back': 'Back',
|
||
'onboarding.start': 'Get started',
|
||
'onboarding.step': 'Step {current} of {total}',
|
||
'onboarding.classes_title': 'Classes & Students',
|
||
'onboarding.classes_desc': 'Manage your classes and students. Create new classes, add students, and assign competency grids.',
|
||
'onboarding.assessments_title': 'Assessments',
|
||
'onboarding.assessments_desc': 'Create and manage assessments. Grade students and track their progress over time.',
|
||
'onboarding.grading_title': 'Grading',
|
||
'onboarding.grading_desc': 'Configure grading schemes and calculate grades based on competency levels and assessments.',
|
||
'onboarding.notebooks_title': 'Digital Notebooks',
|
||
'onboarding.notebooks_desc': 'Create digital notebooks for your subjects. Saves paper and protects the environment — each notebook saves ~50 pages.',
|
||
'onboarding.drawing_title': 'Drawing',
|
||
'onboarding.drawing_desc': 'Use the digital drawing canvas for sketches and illustrations. Stylus-optimized with pressure sensitivity.',
|
||
'onboarding.calendar_title': 'Calendar & Attendance',
|
||
'onboarding.calendar_desc': 'Manage your schedule and student attendance. Keep track of absences and upcoming events.',
|
||
'onboarding.parents_title': 'Parent Communication',
|
||
'onboarding.parents_desc': 'Communicate with parents about learning progress. Send reports and maintain an ongoing dialogue.',
|
||
'onboarding.environmental_title': 'Environmental Protection',
|
||
'onboarding.environmental_desc': 'CompetenceTrack saves paper: Each digital entry replaces ~50 pages of paper. Thank you for contributing to environmental protection!',
|
||
|
||
// Batch deletion (progress entries)
|
||
'progress.batch_select': 'Select',
|
||
'progress.batch_select_all': 'Select all',
|
||
'progress.batch_deselect_all': 'Deselect all',
|
||
'progress.batch_selected': '{count} entries selected',
|
||
'progress.batch_delete': 'Delete selected',
|
||
'progress.batch_cancel': 'Cancel',
|
||
'progress.batch_delete_confirm': 'Really delete {count} entries?',
|
||
'progress.batch_mode': 'Selection mode',
|
||
|
||
// Drag-and-drop (classes)
|
||
'classes.seating_order': 'Seating Order',
|
||
'classes.reorder_mode': 'Reorder',
|
||
'classes.position': 'Position',
|
||
'classes.drag_hint': 'Drag to reorder',
|
||
|
||
// Color palette (flower)
|
||
'flower.color_scheme': 'Color Scheme',
|
||
'flower.color_emerald': 'Emerald',
|
||
'flower.color_sapphire': 'Sapphire',
|
||
'flower.color_amethyst': 'Amethyst',
|
||
'flower.color_amber': 'Amber',
|
||
'flower.color_ruby': 'Ruby',
|
||
'flower.color_turquoise': 'Turquoise',
|
||
'flower.color_custom': 'Custom',
|
||
|
||
// ─── Demo accounts ──────────────────────────────────────────────────
|
||
'auth.demo_section_title': 'Demo Access',
|
||
'auth.demo_section_subtitle': 'Quick try with different roles',
|
||
'auth.demo_admin': 'Demo Admin',
|
||
'auth.demo_teacher': 'Demo Teacher',
|
||
'auth.demo_student': 'Demo Student',
|
||
'auth.demo_parent': 'Demo Parent',
|
||
'auth.demo_logging_in': 'Logging in as demo...',
|
||
'settings.demo_accounts': 'Demo Accounts',
|
||
'settings.demo_accounts_desc': 'Manage demo accounts',
|
||
'settings.demo_enable': 'Enable',
|
||
'settings.demo_disable': 'Disable',
|
||
'settings.demo_disable_all': 'Disable all demo accounts',
|
||
'settings.demo_delete_all': 'Delete all demo accounts',
|
||
'settings.demo_toggle_hint': 'Disabled demo accounts cannot log in',
|
||
'settings.demo_delete_confirm': 'Really delete all demo accounts?',
|
||
'settings.demo_no_accounts': 'No demo accounts found',
|
||
'badge.demo': 'Demo',
|
||
'settings.demo_active': 'Active',
|
||
'settings.demo_inactive': 'Inactive',
|
||
'settings.demo_delete_one_confirm': 'Really delete this demo account?',
|
||
'settings.demo_disabled': 'Demo accounts disabled',
|
||
'settings.demo_enabled': 'Demo accounts enabled',
|
||
'settings.demo_deleted': 'Demo accounts deleted',
|
||
'settings.demo_account_deleted': 'Demo account deleted',
|
||
'settings.demo_account_toggled': 'Demo account status changed',
|
||
|
||
// Keyboard shortcuts
|
||
'shortcuts.title': 'Keyboard Shortcuts',
|
||
'shortcuts.description': 'Available keyboard shortcuts',
|
||
'shortcuts.navigation': 'Navigation',
|
||
'shortcuts.actions': 'Actions',
|
||
'shortcuts.switch_view': 'Switch view',
|
||
'shortcuts.quick_search': 'Quick search',
|
||
'shortcuts.new_entry': 'Create new entry',
|
||
'shortcuts.show_shortcuts': 'Show shortcuts',
|
||
'shortcuts.close_dialog': 'Close dialog',
|
||
'shortcuts.command_palette': 'Command Palette',
|
||
'shortcuts.recent_actions': 'Recent Actions',
|
||
'shortcuts.views': 'Views',
|
||
'shortcuts.quick_actions': 'Quick Actions',
|
||
'shortcuts.new_notebook': 'New Notebook',
|
||
'shortcuts.drawing': 'Drawing',
|
||
'shortcuts.new_page': 'New Page',
|
||
'shortcuts.export_pdf': 'Export PDF',
|
||
'shortcuts.archive_toggle': 'Toggle Archive',
|
||
'shortcuts.close_notebook': 'Close Notebook',
|
||
'shortcuts.notebooks_drawing': 'Notebooks & Drawing',
|
||
|
||
// Drawing
|
||
'drawing.title': 'Drawings',
|
||
'drawing.subtitle': 'Draw digitally instead of wasting paper',
|
||
'drawing.new': 'New Drawing',
|
||
'drawing.gallery': 'Gallery',
|
||
'drawing.edit': 'Edit',
|
||
'drawing.delete': 'Delete',
|
||
'drawing.delete_confirm': 'Really delete this drawing?',
|
||
'drawing.delete_desc': 'This action cannot be undone.',
|
||
'drawing.save': 'Save',
|
||
'drawing.save_success': 'Drawing saved',
|
||
'drawing.export_png': 'Export as PNG',
|
||
'drawing.auto_save': 'Auto-saved',
|
||
'drawing.no_drawings': 'No drawings yet',
|
||
'drawing.no_drawings_desc': 'Create your first digital drawing.',
|
||
'drawing.title_label': 'Title',
|
||
'drawing.description_label': 'Description',
|
||
'drawing.subject_label': 'Subject',
|
||
'drawing.class_label': 'Class',
|
||
'drawing.public': 'Share publicly',
|
||
'drawing.public_desc': 'Share with class',
|
||
'drawing.private': 'Private',
|
||
'drawing.canvas': 'Canvas',
|
||
'drawing.exit': 'Exit drawing',
|
||
'drawing.clear': 'Clear',
|
||
'drawing.clear_confirm': 'Really clear the canvas?',
|
||
'drawing.undo': 'Undo',
|
||
'drawing.redo': 'Redo',
|
||
'drawing.tool_pencil': 'Pencil',
|
||
'drawing.tool_pen': 'Pen',
|
||
'drawing.tool_line': 'Line',
|
||
'drawing.tool_rectangle': 'Rectangle',
|
||
'drawing.tool_circle': 'Circle',
|
||
'drawing.tool_eraser': 'Eraser',
|
||
'drawing.color': 'Color',
|
||
'drawing.stroke_width': 'Stroke Width',
|
||
'drawing.background': 'Background',
|
||
'drawing.bg_blank': 'Blank',
|
||
'drawing.bg_lined': 'Lined',
|
||
'drawing.bg_grid': 'Grid',
|
||
'drawing.bg_dotted': 'Dotted',
|
||
'drawing.guide_mode': 'Guide Mode',
|
||
'drawing.guide_shapes': 'Shape Templates',
|
||
'drawing.guide_off': 'Off',
|
||
'drawing.guide_basic': 'Basic Shapes',
|
||
'drawing.guide_circles': 'Circles',
|
||
'drawing.guide_perspective': 'Perspective',
|
||
'drawing.pressure': 'Pressure Sensitivity',
|
||
'drawing.loading': 'Loading...',
|
||
'drawing.saving': 'Saving...',
|
||
'drawing.filter_subject': 'Filter by subject',
|
||
'drawing.all_subjects': 'All subjects',
|
||
'drawing.created_at': 'Created',
|
||
'drawing.updated_at': 'Updated',
|
||
'drawing.untitled': 'Untitled Drawing',
|
||
'drawing.eco_message': 'Draw digitally instead of wasting paper',
|
||
'drawing.eco_tip': 'Every digital drawing saves paper and protects the environment',
|
||
|
||
// ─── Digital Notebooks ──────────────────────────────────────────────
|
||
'nav.notebooks': 'Notebooks',
|
||
'notebooks.title': 'Digital Notebooks',
|
||
'notebooks.subtitle': 'Save paper, protect the environment — digital notebooks instead of paper',
|
||
'notebooks.create': 'Create New Notebook',
|
||
'notebooks.create_title': 'Create New Digital Notebook',
|
||
'notebooks.create_desc': 'Create a digital notebook and save paper.',
|
||
'notebooks.edit_title': 'Edit Notebook',
|
||
'notebooks.library': 'Notebook Library',
|
||
'notebooks.archived': 'Archived Notebooks',
|
||
'notebooks.show_archived': 'Show Archived',
|
||
'notebooks.hide_archived': 'Hide Archived',
|
||
'notebooks.archive': 'Archive',
|
||
'notebooks.unarchive': 'Restore',
|
||
'notebooks.delete': 'Delete',
|
||
'notebooks.delete_confirm': 'Really delete this notebook? All pages will be lost.',
|
||
'notebooks.no_notebooks': 'No notebooks yet',
|
||
'notebooks.no_notebooks_desc': 'Create your first digital notebook.',
|
||
'notebooks.no_notebooks_create': 'Create First Notebook',
|
||
'notebooks.no_archived': 'No archived notebooks',
|
||
'notebooks.field_title': 'Title',
|
||
'notebooks.field_title_placeholder': 'Enter notebook title',
|
||
'notebooks.field_description': 'Description',
|
||
'notebooks.field_description_placeholder': 'Optional notebook description',
|
||
'notebooks.field_type': 'Notebook Type',
|
||
'notebooks.field_subject': 'Subject',
|
||
'notebooks.field_class': 'Class',
|
||
'notebooks.field_color': 'Color',
|
||
'notebooks.field_icon': 'Icon',
|
||
'notebooks.field_public': 'Share with class',
|
||
'notebooks.field_public_hint': 'Others can view this notebook',
|
||
'notebooks.type_lined': 'Lined',
|
||
'notebooks.type_grid': 'Grid/Checkered',
|
||
'notebooks.type_blank': 'Blank',
|
||
'notebooks.type_dotted': 'Dotted',
|
||
'notebooks.type_music': 'Music',
|
||
'notebooks.type_calligraphy': 'Calligraphy',
|
||
'notebooks.type_lined_desc': 'Lined notebook for text',
|
||
'notebooks.type_grid_desc': 'Checkered notebook for math',
|
||
'notebooks.type_blank_desc': 'Blank notebook for free design',
|
||
'notebooks.type_dotted_desc': 'Dotted notebook for notes',
|
||
'notebooks.type_music_desc': 'Music notebook with staff lines',
|
||
'notebooks.type_calligraphy_desc': 'Calligraphy notebook for writing practice',
|
||
'notebooks.no_subject': 'No Subject',
|
||
'notebooks.no_class': 'No Class',
|
||
'notebooks.all_subjects': 'All Subjects',
|
||
'notebooks.page_count': '{count} pages',
|
||
'notebooks.page': 'Page',
|
||
'notebooks.pages': 'Pages',
|
||
'notebooks.new_page': 'New Page',
|
||
'notebooks.add_page': 'Add Page',
|
||
'notebooks.delete_page': 'Delete Page',
|
||
'notebooks.delete_page_confirm': 'Really delete this page?',
|
||
'notebooks.page_title': 'Page Title',
|
||
'notebooks.page_title_placeholder': 'Enter page name',
|
||
'notebooks.page_content': 'Page Content',
|
||
'notebooks.bookmark': 'Bookmark',
|
||
'notebooks.bookmark_add': 'Add Bookmark',
|
||
'notebooks.bookmark_remove': 'Remove Bookmark',
|
||
'notebooks.drawing_mode': 'Drawing Mode',
|
||
'notebooks.drawing_mode_toggle': 'Draw',
|
||
'notebooks.drawing_mode_exit': 'Back to Text',
|
||
'notebooks.drawing_placeholder': 'Drawing area — will be integrated in a separate component',
|
||
'notebooks.back_to_library': 'Back to Library',
|
||
'notebooks.open_notebook': 'Open Notebook',
|
||
'notebooks.created': 'Notebook created',
|
||
'notebooks.updated': 'Notebook updated',
|
||
'notebooks.archived_toast': 'Notebook archived',
|
||
'notebooks.unarchived_toast': 'Notebook restored',
|
||
'notebooks.deleted_toast': 'Notebook deleted',
|
||
'notebooks.page_saved': 'Page saved',
|
||
'notebooks.page_added': 'Page added',
|
||
'notebooks.page_deleted': 'Page deleted',
|
||
'notebooks.error_load': 'Error loading notebooks',
|
||
'notebooks.error_save': 'Error saving',
|
||
'notebooks.error_create': 'Error creating notebook',
|
||
'notebooks.loading': 'Loading notebooks…',
|
||
'notebooks.public': 'Shared',
|
||
'notebooks.private': 'Private',
|
||
'notebooks.filter_all': 'All',
|
||
'notebooks.filter_subject': 'Filter by subject',
|
||
'notebooks.eco_message': 'Save paper, protect the environment',
|
||
'notebooks.eco_tip': '1 notebook = ~50 pages of paper saved',
|
||
'notebooks.eco_total': '{count} digital notebooks = ~{pages} pages of paper saved',
|
||
'notebooks.search_placeholder': 'Search notebooks…',
|
||
'notebooks.detail_title': 'Notebook Details',
|
||
'notebooks.page_nav': 'Page Navigation',
|
||
'notebooks.content_area': 'Content Area',
|
||
'notebooks.save_page': 'Save Page',
|
||
'notebooks.color_emerald': 'Emerald',
|
||
'notebooks.color_blue': 'Blue',
|
||
'notebooks.color_red': 'Red',
|
||
'notebooks.color_yellow': 'Yellow',
|
||
'notebooks.color_purple': 'Purple',
|
||
'notebooks.color_orange': 'Orange',
|
||
'notebooks.color_teal': 'Teal',
|
||
'notebooks.color_pink': 'Pink',
|
||
'notebooks.title_required': 'Please enter a title',
|
||
'notebooks.total_notebooks': 'Total Notebooks',
|
||
'notebooks.total_pages': 'Total Pages',
|
||
'notebooks.paper_saved': 'Paper Saved',
|
||
'notebooks.pages_unit': 'Pages',
|
||
|
||
// Notebook toolbar
|
||
'notebooks.toolbar_bold': 'Bold',
|
||
'notebooks.toolbar_italic': 'Italic',
|
||
'notebooks.toolbar_underline': 'Underline',
|
||
'notebooks.toolbar_heading1': 'Heading 1',
|
||
'notebooks.toolbar_heading2': 'Heading 2',
|
||
'notebooks.toolbar_heading3': 'Heading 3',
|
||
'notebooks.toolbar_bullet_list': 'Bullet List',
|
||
'notebooks.toolbar_numbered_list': 'Numbered List',
|
||
'notebooks.toolbar_align_left': 'Align Left',
|
||
'notebooks.toolbar_align_center': 'Align Center',
|
||
'notebooks.toolbar_align_right': 'Align Right',
|
||
'notebooks.auto_saving': 'Auto-saving...',
|
||
'notebooks.auto_saved': 'Auto-saved',
|
||
'notebooks.page_thumbnail': 'Page Thumbnail',
|
||
|
||
// Drawing integration
|
||
'notebooks.drawing_saved': 'Drawing saved',
|
||
'notebooks.drawing_page_label': 'This page contains a drawing',
|
||
'notebooks.edit_drawing': 'Edit drawing',
|
||
'notebooks.switch_to_text': 'Switch to text page',
|
||
'notebooks.drawing_section_label': 'Drawing section',
|
||
'notebooks.open_drawing': 'Open drawing',
|
||
'notebooks.switch_to_mixed': 'Text + Drawing',
|
||
|
||
// PDF Export
|
||
'notebooks.export_pdf': 'Export PDF',
|
||
'notebooks.export_error': 'Export error. Please allow popups.',
|
||
'notebooks.export_drawing_note': 'This page contains a drawing (not included in PDF)',
|
||
'notebooks.export_empty_page': 'Empty page',
|
||
'notebooks.export_eco_message': 'This notebook was created digitally — paper saved!',
|
||
|
||
// Student notebook access
|
||
'notebooks.shared_with_me': 'Shared with me',
|
||
'notebooks.my_notebooks': 'My Notebooks',
|
||
'notebooks.shared_notebook': 'Shared Notebook',
|
||
|
||
// Sharing & Collaboration
|
||
'notebooks.share': 'Share',
|
||
'notebooks.duplicate': 'Duplicate',
|
||
'notebooks.shared': 'Shared',
|
||
'notebooks.copy_suffix': ' (Copy)',
|
||
'notebooks.templates': 'Templates',
|
||
'notebooks.template_desc': 'Pre-built notebooks for common subjects',
|
||
'notebooks.tab_shared': 'Shared',
|
||
'notebooks.tab_templates': 'Templates',
|
||
'notebooks.share_confirm': 'Share this notebook with the class?',
|
||
'notebooks.share_confirm_desc': 'If you share this notebook, all students in the class can view it (read-only).',
|
||
'notebooks.unshare_confirm': 'Unshare this notebook?',
|
||
'notebooks.unshare_confirm_desc': 'If you unshare this notebook, students in the class will no longer be able to view it.',
|
||
'notebooks.duplicated': 'Notebook duplicated',
|
||
'notebooks.duplicate_error': 'Error duplicating notebook',
|
||
'notebooks.shared_notebooks': 'Shared Notebooks',
|
||
'notebooks.shared_empty': 'No shared notebooks available',
|
||
'notebooks.shared_empty_desc': 'Notebooks shared by other teachers will appear here.',
|
||
'notebooks.read_only': 'Read-only',
|
||
'notebooks.create_from_template': 'Create from template',
|
||
'notebooks.template_math': 'Mathematics',
|
||
'notebooks.template_german': 'German',
|
||
'notebooks.template_english': 'English',
|
||
'notebooks.template_art': 'Art',
|
||
'notebooks.template_music': 'Music',
|
||
'notebooks.template_science': 'Science',
|
||
'notebooks.template_math_desc': 'Grid notebook with math sections',
|
||
'notebooks.template_german_desc': 'Lined notebook with writing sections',
|
||
'notebooks.template_english_desc': 'Lined notebook with vocabulary sections',
|
||
'notebooks.template_art_desc': 'Blank notebook for drawing',
|
||
'notebooks.template_music_desc': 'Music notebook for composition',
|
||
'notebooks.template_science_desc': 'Grid notebook for experiments',
|
||
'notebooks.tab_all': 'My Notebooks',
|
||
'notebooks.owner': 'By',
|
||
};
|
||
|
||
const translations: Record<string, TranslationDict> = { de, en };
|
||
|
||
let currentLocale: string = 'de';
|
||
|
||
export function setLocale(locale: string): void {
|
||
currentLocale = locale;
|
||
}
|
||
|
||
export function getLocale(): string {
|
||
return currentLocale;
|
||
}
|
||
|
||
export function t(key: string, params?: Record<string, string | number>): string {
|
||
const dict = translations[currentLocale] ?? translations['de'];
|
||
let text = dict[key] ?? key;
|
||
if (params) {
|
||
for (const [k, v] of Object.entries(params)) {
|
||
text = text.replace(new RegExp(`\\{${k}\\}`, 'g'), String(v));
|
||
}
|
||
}
|
||
return text;
|
||
}
|
||
|
||
export function tDe(key: string, params?: Record<string, string | number>): string {
|
||
const dict = translations['de'];
|
||
let text = dict[key] ?? key;
|
||
if (params) {
|
||
for (const [k, v] of Object.entries(params)) {
|
||
text = text.replace(new RegExp(`\\{${k}\\}`, 'g'), String(v));
|
||
}
|
||
}
|
||
return text;
|
||
}
|