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.
This commit is contained in:
Torsten Schulz (local)
2026-01-19 11:24:46 +01:00
parent b6a4607e60
commit e1b3dfb00a
3 changed files with 29 additions and 12 deletions

View File

@@ -50,11 +50,20 @@ const menuStructure = {
visible: ["all"],
path: "/socialnetwork/gallery"
},
sprachenlernen: {
visible: ["all"],
children: {
vocabtrainer: {
visible: ["all"],
path: "/socialnetwork/vocab",
children: {}
},
sprachkurse: {
visible: ["all"],
path: "/socialnetwork/vocab/courses"
}
}
},
blockedUsers: {
visible: ["all"],
path: "/socialnetwork/blocked"
@@ -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);

View File

@@ -20,7 +20,7 @@
"usersearch": "Benutzersuche",
"forum": "Forum",
"gallery": "Galerie",
"vocabtrainer": "Vokabeltrainer",
"sprachenlernen": "Sprachen lernen",
"blockedUsers": "Blockierte Benutzer",
"oneTimeInvitation": "Einmal-Einladungen",
"diary": "Tagebuch",
@@ -29,9 +29,13 @@
"pictures": "Bilder",
"videos": "Videos"
},
"m-sprachenlernen": {
"vocabtrainer": "Vokabeltrainer",
"sprachkurse": "Sprachkurse",
"m-vocabtrainer": {
"newLanguage": "Neue Sprache"
}
}
},
"m-minigames": {
"match3": "Match 3 - Juwelen",

View File

@@ -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,9 +29,13 @@
"pictures": "Pictures",
"videos": "Videos"
},
"m-sprachenlernen": {
"vocabtrainer": "Vocabulary trainer",
"sprachkurse": "Language courses",
"m-vocabtrainer": {
"newLanguage": "New language"
}
}
},
"m-minigames": {
"match3": "Match 3 - Jewels",