From e1b3dfb00a5293109f2c71695ef0fef05a93704b Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Mon, 19 Jan 2026 11:24:46 +0100 Subject: [PATCH] Refactor navigation structure to enhance language learning features - Renamed 'vocabtrainer' to 'sprachenlernen' in the navigation structure for better clarity. - Introduced a nested structure under 'sprachenlernen' for 'vocabtrainer' and 'sprachkurse', improving organization of language-related resources. - Updated internationalization files for both German and English to reflect the new naming and structure, ensuring consistency across the application. --- backend/controllers/navigationController.js | 21 ++++++++++++++------ frontend/src/i18n/locales/de/navigation.json | 10 +++++++--- frontend/src/i18n/locales/en/navigation.json | 10 +++++++--- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/backend/controllers/navigationController.js b/backend/controllers/navigationController.js index 772da0b..3a4d2d4 100644 --- a/backend/controllers/navigationController.js +++ b/backend/controllers/navigationController.js @@ -50,10 +50,19 @@ const menuStructure = { visible: ["all"], path: "/socialnetwork/gallery" }, - vocabtrainer: { + sprachenlernen: { visible: ["all"], - path: "/socialnetwork/vocab", - children: {} + children: { + vocabtrainer: { + visible: ["all"], + path: "/socialnetwork/vocab", + children: {} + }, + sprachkurse: { + visible: ["all"], + path: "/socialnetwork/vocab/courses" + } + } }, blockedUsers: { visible: ["all"], @@ -377,9 +386,9 @@ class NavigationController { const rights = userRights.map(ur => ur.rightType?.title).filter(Boolean); const filteredMenu = await this.filterMenu(menuStructure, rights, age, user.id); - // Dynamisches Submenü: Treffpunkt → Vokabeltrainer → (Neue Sprache + abonnierte/angelegte) + // Dynamisches Submenü: Treffpunkt → Sprachen lernen → Vokabeltrainer → (Neue Sprache + abonnierte/angelegte) // Wichtig: "Neue Sprache" soll IMMER sichtbar sein – auch wenn die DB-Abfrage (noch) fehlschlägt. - if (filteredMenu?.socialnetwork?.children?.vocabtrainer) { + if (filteredMenu?.socialnetwork?.children?.sprachenlernen?.children?.vocabtrainer) { const children = { newLanguage: { path: '/socialnetwork/vocab/new' }, }; @@ -391,7 +400,7 @@ class NavigationController { } catch (e) { console.warn('[menu] Konnte Vokabeltrainer-Sprachen nicht laden:', e?.message || e); } - filteredMenu.socialnetwork.children.vocabtrainer.children = children; + filteredMenu.socialnetwork.children.sprachenlernen.children.vocabtrainer.children = children; } res.status(200).json(filteredMenu); diff --git a/frontend/src/i18n/locales/de/navigation.json b/frontend/src/i18n/locales/de/navigation.json index e5a0591..7efc329 100644 --- a/frontend/src/i18n/locales/de/navigation.json +++ b/frontend/src/i18n/locales/de/navigation.json @@ -20,7 +20,7 @@ "usersearch": "Benutzersuche", "forum": "Forum", "gallery": "Galerie", - "vocabtrainer": "Vokabeltrainer", + "sprachenlernen": "Sprachen lernen", "blockedUsers": "Blockierte Benutzer", "oneTimeInvitation": "Einmal-Einladungen", "diary": "Tagebuch", @@ -29,8 +29,12 @@ "pictures": "Bilder", "videos": "Videos" }, - "m-vocabtrainer": { - "newLanguage": "Neue Sprache" + "m-sprachenlernen": { + "vocabtrainer": "Vokabeltrainer", + "sprachkurse": "Sprachkurse", + "m-vocabtrainer": { + "newLanguage": "Neue Sprache" + } } }, "m-minigames": { diff --git a/frontend/src/i18n/locales/en/navigation.json b/frontend/src/i18n/locales/en/navigation.json index 63a1a6e..ce80407 100644 --- a/frontend/src/i18n/locales/en/navigation.json +++ b/frontend/src/i18n/locales/en/navigation.json @@ -20,7 +20,7 @@ "usersearch": "User search", "forum": "Forum", "gallery": "Gallery", - "vocabtrainer": "Vocabulary trainer", + "sprachenlernen": "Learn Languages", "blockedUsers": "Blocked users", "oneTimeInvitation": "One-time invitations", "diary": "Diary", @@ -29,8 +29,12 @@ "pictures": "Pictures", "videos": "Videos" }, - "m-vocabtrainer": { - "newLanguage": "New language" + "m-sprachenlernen": { + "vocabtrainer": "Vocabulary trainer", + "sprachkurse": "Language courses", + "m-vocabtrainer": { + "newLanguage": "New language" + } } }, "m-minigames": {