Files
schulos/src/lib/i18n.ts
T
Mustafa Cetin 62f4a150e0 CompetenceTrack v9 - Rich text editor, Drawing integration, PDF export, Notebook sharing, Templates, Keyboard shortcuts
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
2026-07-29 08:02:04 +00:00

3951 lines
183 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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': 'Jahrgangs­stufe {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': 'Noten­aufschlü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;
}