Round 17: QR Codes, Gamification Badges, Auto-Award, Badge Management

This commit is contained in:
Mustafa Cetin committed 2026-07-29 12:19:50 +00:00
1 parent 6174f127f9
commit cba8a8e724
23 files changed
+4028 -1

No files matched your search

+290
View File
@@ -3084,6 +3084,151 @@ const de: TranslationDict = {
'onboarding.previous': 'Zurück',
'onboarding.dont_show_again': 'Nicht mehr anzeigen',
'onboarding.restart_tour': 'Tour erneut starten',
// Student Transportation
'transport.title': 'Verkehrsmittel',
'transport.type': 'Verkehrsmitteltyp',
'transport.bus': 'Bus',
'transport.tram': 'Straßenbahn',
'transport.walk': 'Zu Fuß',
'transport.car': 'Auto',
'transport.bike': 'Fahrrad',
'transport.other': 'Sonstiges',
'transport.route': 'Linie',
'transport.stop': 'Haltestelle',
'transport.pickup': 'Abholung',
'transport.dropoff': 'Rückfahrt',
'transport.driver': 'Fahrer',
'transport.distance': 'Entfernung',
'transport.distance_km': '{count} km',
'transport.notes': 'Hinweise',
'transport.add': 'Verkehrsmittel hinzufügen',
'transport.edit': 'Verkehrsmittel bearbeiten',
'transport.no_transport': 'Keine Verkehrsmittel gespeichert',
'transport.route_number': 'Liniennummer',
'transport.stop_name': 'Haltestellenname',
'transport.pickup_time': 'Abholzeit',
'transport.dropoff_time': 'Rückfahrtzeit',
'transport.driver_name': 'Fahrername',
'transport.driver_phone': 'Fahrertelefon',
'transport.distance_km_field': 'Entfernung (km)',
'transport.class_overview': 'Klassenübersicht Verkehrsmittel',
'transport.quick_call': 'Anrufen',
// Health Records
'health.title': 'Gesundheitsdaten',
'health.blood_type': 'Blutgruppe',
'health.allergies': 'Allergien',
'health.medications': 'Medikamente',
'health.conditions': 'Erkrankungen',
'health.doctor': 'Arzt',
'health.insurance': 'Versicherung',
'health.confidential': 'Vertraulich',
'health.last_checkup': 'Letzte Untersuchung',
'health.warning': 'Gesundheitshinweis',
'health.add': 'Gesundheitsdaten hinzufügen',
'health.edit': 'Gesundheitsdaten bearbeiten',
'health.no_record': 'Keine Gesundheitsdaten vorhanden',
'health.doctor_name': 'Arztname',
'health.doctor_phone': 'Arzttelefon',
'health.insurance_number': 'Versicherungsnummer',
'health.insurance_provider': 'Versicherungsträger',
'health.last_checkup_date': 'Datum letzte Untersuchung',
'health.notes': 'Gesundheitshinweise',
'health.confidential_toggle': 'Vertraulichkeitsstatus',
'health.dosage': 'Dosierung',
'health.frequency': 'Häufigkeit',
'health.medication_name': 'Medikamentenname',
'health.add_allergy': 'Allergie hinzufügen',
'health.add_medication': 'Medikament hinzufügen',
'health.add_condition': 'Erkrankung hinzufügen',
// Interactive Seating Chart
'seating.title': 'Sitzplan',
'seating.chart': 'Sitzordnung',
'seating.row': 'Reihe',
'seating.column': 'Spalte',
'seating.save': 'Sitzplan speichern',
'seating.randomize': 'Mischen',
'seating.clear': 'Zurücksetzen',
'seating.print': 'Sitzplan drucken',
'seating.drag_to_rearrange': 'Ziehen zum Verschieben',
'seating.empty_seat': 'Freier Platz',
'seating.rows': 'Reihen',
'seating.columns': 'Spalten',
'seating.grid_size': 'Rastergröße',
'seating.student_initials': 'Initialen',
'seating.no_students': 'Keine Schüler für Sitzplan',
'seating.visual': 'Visueller Sitzplan',
'seating.list': 'Listenansicht',
// QR Code System
'qr.title': 'QR-Code',
'qr.student': 'Schüler-QR-Code',
'qr.class': 'Klassen-QR-Code',
'qr.attendance': 'Anwesenheits-QR-Code',
'qr.event': 'Veranstaltungs-QR-Code',
'qr.download': 'QR-Code herunterladen',
'qr.scan': 'QR-Code scannen',
'qr.refresh': 'QR-Code aktualisieren',
'qr.generate': 'QR-Code erzeugen',
'qr.scan_to_checkin': 'Scannen zum Einchecken',
'qr.session_active': 'QR-Sitzung aktiv',
'qr.refreshes_in': 'Aktualisierung in {seconds}s',
'qr.checked_in': 'Eingecheckt',
'qr.pending': 'Ausstehend',
'qr.absent': 'Abwesend',
'qr.show_qr': 'QR-Code anzeigen',
'qr.print_report': 'QR im Bericht',
'qr.student_card': 'Schülerausweis',
// Badge / Gamification System
'badges.title': 'Abzeichen',
'badges.earned': 'Verdient',
'badges.unearned': 'Noch nicht verdient',
'badges.progress': 'Fortschritt',
'badges.collection': 'Abzeichen-Sammlung',
'badges.award': 'Abzeichen verleihen',
'badges.auto': 'Automatisch vergeben',
'badges.manual': 'Manuell vergeben',
'badges.leaderboard': 'Abzeichen-Rangliste',
'badges.recent': 'Kürzlich verdient',
'badges.details': 'Abzeichen-Details',
'badges.earned_count': '{earned} von {total} Abzeichen verdient',
'badges.category': 'Kategorie',
'badges.competency': 'Kompetenz',
'badges.attendance': 'Anwesenheit',
'badges.behavior': 'Verhalten',
'badges.achievement': 'Leistung',
'badges.milestone': 'Meilenstein',
'badges.requirement': 'Voraussetzung',
'badges.create': 'Abzeichen erstellen',
'badges.edit': 'Abzeichen bearbeiten',
'badges.delete': 'Abzeichen löschen',
'badges.manage': 'Abzeichen verwalten',
'badges.statistics': 'Abzeichen-Statistik',
'badges.award_manually': 'Manuell verleihen',
'badges.awarded_by': 'Verliehen von',
'badges.awarded_at': 'Verliehen am',
'badges.no_badges': 'Keine Abzeichen vorhanden',
'badges.celebration': 'Neues Abzeichen verdient!',
'badges.icon': 'Icon',
'badges.color': 'Farbe',
'badges.threshold': 'Schwellenwert',
'badges.type': 'Typ',
'badges.is_auto': 'Automatisch vergeben',
// Badge Names
'badges.perfect_attendance': 'Perfekte Anwesenheit',
'badges.competency_master': 'Kompetenz-Meister',
'badges.progress_pioneer': 'Fortschritts-Pionier',
'badges.behavior_star': 'Verhaltensstern',
'badges.notebook_champion': 'Heft-Champion',
'badges.drawing_artist': 'Zeichen-Künstler',
'badges.homework_hero': 'Hausaufgaben-Held',
'badges.team_player': 'Teamplayer',
'badges.goal_achiever': 'Zielerreicher',
'badges.eco_warrior': 'Umweltkrieger',
};
const en: TranslationDict = {
@@ -6167,6 +6312,151 @@ const en: TranslationDict = {
'onboarding.previous': 'Previous',
'onboarding.dont_show_again': 'Don\'t show again',
'onboarding.restart_tour': 'Restart tour',
// Student Transportation
'transport.title': 'Transportation',
'transport.type': 'Transport Type',
'transport.bus': 'Bus',
'transport.tram': 'Tram',
'transport.walk': 'Walk',
'transport.car': 'Car',
'transport.bike': 'Bike',
'transport.other': 'Other',
'transport.route': 'Route',
'transport.stop': 'Stop',
'transport.pickup': 'Pickup',
'transport.dropoff': 'Drop-off',
'transport.driver': 'Driver',
'transport.distance': 'Distance',
'transport.distance_km': '{count} km',
'transport.notes': 'Notes',
'transport.add': 'Add Transportation',
'transport.edit': 'Edit Transportation',
'transport.no_transport': 'No transportation saved',
'transport.route_number': 'Route Number',
'transport.stop_name': 'Stop Name',
'transport.pickup_time': 'Pickup Time',
'transport.dropoff_time': 'Drop-off Time',
'transport.driver_name': 'Driver Name',
'transport.driver_phone': 'Driver Phone',
'transport.distance_km_field': 'Distance (km)',
'transport.class_overview': 'Class Transport Overview',
'transport.quick_call': 'Quick Call',
// Health Records
'health.title': 'Health Records',
'health.blood_type': 'Blood Type',
'health.allergies': 'Allergies',
'health.medications': 'Medications',
'health.conditions': 'Conditions',
'health.doctor': 'Doctor',
'health.insurance': 'Insurance',
'health.confidential': 'Confidential',
'health.last_checkup': 'Last Checkup',
'health.warning': 'Health Warning',
'health.add': 'Add Health Record',
'health.edit': 'Edit Health Record',
'health.no_record': 'No health records available',
'health.doctor_name': 'Doctor Name',
'health.doctor_phone': 'Doctor Phone',
'health.insurance_number': 'Insurance Number',
'health.insurance_provider': 'Insurance Provider',
'health.last_checkup_date': 'Last Checkup Date',
'health.notes': 'Health Notes',
'health.confidential_toggle': 'Confidentiality Status',
'health.dosage': 'Dosage',
'health.frequency': 'Frequency',
'health.medication_name': 'Medication Name',
'health.add_allergy': 'Add Allergy',
'health.add_medication': 'Add Medication',
'health.add_condition': 'Add Condition',
// Interactive Seating Chart
'seating.title': 'Seating Chart',
'seating.chart': 'Seating Order',
'seating.row': 'Row',
'seating.column': 'Column',
'seating.save': 'Save Seating',
'seating.randomize': 'Randomize',
'seating.clear': 'Clear',
'seating.print': 'Print Seating',
'seating.drag_to_rearrange': 'Drag to rearrange',
'seating.empty_seat': 'Empty Seat',
'seating.rows': 'Rows',
'seating.columns': 'Columns',
'seating.grid_size': 'Grid Size',
'seating.student_initials': 'Initials',
'seating.no_students': 'No students for seating chart',
'seating.visual': 'Visual Seating',
'seating.list': 'List View',
// QR Code System
'qr.title': 'QR Code',
'qr.student': 'Student QR Code',
'qr.class': 'Class QR Code',
'qr.attendance': 'Attendance QR Code',
'qr.event': 'Event QR Code',
'qr.download': 'Download QR Code',
'qr.scan': 'Scan QR Code',
'qr.refresh': 'Refresh QR Code',
'qr.generate': 'Generate QR Code',
'qr.scan_to_checkin': 'Scan to check in',
'qr.session_active': 'QR session active',
'qr.refreshes_in': 'Refreshes in {seconds}s',
'qr.checked_in': 'Checked in',
'qr.pending': 'Pending',
'qr.absent': 'Absent',
'qr.show_qr': 'Show QR Code',
'qr.print_report': 'QR on Report',
'qr.student_card': 'Student Card',
// Badge / Gamification System
'badges.title': 'Badges',
'badges.earned': 'Earned',
'badges.unearned': 'Not yet earned',
'badges.progress': 'Progress',
'badges.collection': 'Badge Collection',
'badges.award': 'Award Badge',
'badges.auto': 'Auto-awarded',
'badges.manual': 'Manually awarded',
'badges.leaderboard': 'Badge Leaderboard',
'badges.recent': 'Recently earned',
'badges.details': 'Badge Details',
'badges.earned_count': '{earned} of {total} badges earned',
'badges.category': 'Category',
'badges.competency': 'Competency',
'badges.attendance': 'Attendance',
'badges.behavior': 'Behavior',
'badges.achievement': 'Achievement',
'badges.milestone': 'Milestone',
'badges.requirement': 'Requirement',
'badges.create': 'Create Badge',
'badges.edit': 'Edit Badge',
'badges.delete': 'Delete Badge',
'badges.manage': 'Manage Badges',
'badges.statistics': 'Badge Statistics',
'badges.award_manually': 'Award Manually',
'badges.awarded_by': 'Awarded by',
'badges.awarded_at': 'Awarded on',
'badges.no_badges': 'No badges available',
'badges.celebration': 'New badge earned!',
'badges.icon': 'Icon',
'badges.color': 'Color',
'badges.threshold': 'Threshold',
'badges.type': 'Type',
'badges.is_auto': 'Auto-awarded',
// Badge Names
'badges.perfect_attendance': 'Perfect Attendance',
'badges.competency_master': 'Competency Master',
'badges.progress_pioneer': 'Progress Pioneer',
'badges.behavior_star': 'Behavior Star',
'badges.notebook_champion': 'Notebook Champion',
'badges.drawing_artist': 'Drawing Artist',
'badges.homework_hero': 'Homework Hero',
'badges.team_player': 'Team Player',
'badges.goal_achiever': 'Goal Achiever',
'badges.eco_warrior': 'Eco Warrior',
};
const translations: Record<string, TranslationDict> = { de, en };