feat(vocab): add dashboard learning summary and related endpoints
All checks were successful
Deploy to production / deploy (push) Successful in 2m52s

- Introduced `getDashboardLearningSummary` method in `VocabService` to provide a compact overview of enrolled courses and current lessons for users.
- Updated `vocabController` to include a new route for the dashboard widget, allowing users to access their learning summary.
- Enhanced `vocabRouter` to route requests for the new dashboard widget endpoint.
- Added localization support for the new dashboard features across multiple languages, improving user engagement and accessibility.
- Updated UI components to integrate the new dashboard widget, ensuring a seamless user experience.
This commit is contained in:
Torsten Schulz (local)
2026-04-02 15:06:50 +02:00
parent 77e6f8d3e8
commit 5fcd55be43
28 changed files with 1095 additions and 39 deletions

View File

@@ -1353,6 +1353,20 @@
"voteError": "Fehler beim Abgeben der Stimme",
"voteAllError": "Fehler beim Abgeben der Stimmen",
"applyError": "Bewerbung konnte nicht eingereicht werden.",
"benefits": {
"daily_salary": "Tagesamtshonorar (einmal pro Tag): ca. {amount}",
"tax_exemption": "Steuerbefreiung: {regions}",
"tax_exemption_all": "Steuerbefreiung: alle Regionsebenen",
"generic": "Vorteil ({code})"
},
"regionLevels": {
"city": "Stadt",
"county": "Landkreis",
"shire": "Grafschaft",
"markgrave": "Markgrafschaft",
"duchy": "Herzogtum",
"country": "Land"
},
"current": {
"office": "Amt",
"region": "Region",

View File

@@ -92,6 +92,16 @@
},
"falukant": {
"emptyValue": "—"
},
"vocabCourses": {
"empty": "Du bist derzeit in keinem Vokabelkurs eingeschrieben.",
"browseCourses": "Kurse entdecken",
"unnamedCourse": "Kurs ohne Titel",
"lessonLine": "Lektion #{number}: {title}",
"noLessons": "Noch keine Lektionen in diesem Kurs.",
"allDone": "Alle Lektionen absolviert",
"openLesson": "Zur Lektion",
"openCourse": "Zum Kurs"
}
},
"gender": {

View File

@@ -23,7 +23,8 @@
"news": "News",
"birthdays": "Geburtstage",
"upcoming": "Nächste Termine",
"calendar": "Kalender"
"calendar": "Kalender",
"vocabCourses": "Sprachkurse"
},
"overview": {
"activeWidgetsLabel": "Aktive Widgets",