diff --git a/frontend/src/i18n/locales/de/socialnetwork.json b/frontend/src/i18n/locales/de/socialnetwork.json
index e1a47db..609ecfe 100644
--- a/frontend/src/i18n/locales/de/socialnetwork.json
+++ b/frontend/src/i18n/locales/de/socialnetwork.json
@@ -355,6 +355,7 @@
"targetLanguage": "Zielsprache",
"nativeLanguage": "Muttersprache",
"allNativeLanguages": "Alle Muttersprachen",
+ "myNativeLanguage": "Meine Muttersprache",
"forAllLanguages": "Für alle Sprachen",
"optional": "Optional",
"invalidCode": "Ungültiger Code",
diff --git a/frontend/src/i18n/locales/en/socialnetwork.json b/frontend/src/i18n/locales/en/socialnetwork.json
index d581063..0e2a70f 100644
--- a/frontend/src/i18n/locales/en/socialnetwork.json
+++ b/frontend/src/i18n/locales/en/socialnetwork.json
@@ -355,6 +355,7 @@
"targetLanguage": "Target Language",
"nativeLanguage": "Native Language",
"allNativeLanguages": "All Native Languages",
+ "myNativeLanguage": "My Native Language",
"forAllLanguages": "For All Languages",
"optional": "Optional",
"invalidCode": "Invalid code",
diff --git a/frontend/src/views/social/VocabCourseListView.vue b/frontend/src/views/social/VocabCourseListView.vue
index 463134f..5bfd0a4 100644
--- a/frontend/src/views/social/VocabCourseListView.vue
+++ b/frontend/src/views/social/VocabCourseListView.vue
@@ -30,6 +30,7 @@
@@ -140,6 +141,7 @@ export default {
loading: false,
courses: [],
languages: [],
+ myNativeLanguageId: null,
showCreateDialog: false,
showShareCodeDialog: false,
searchTerm: '',
@@ -158,17 +160,44 @@ export default {
};
},
computed: {
- ...mapGetters(['user']),
+ ...mapGetters(['user', 'language']),
},
methods: {
async loadLanguages() {
try {
const res = await apiClient.get('/api/vocab/languages');
this.languages = res.data?.languages || [];
+
+ // Lade die Muttersprache des Benutzers
+ await this.loadMyNativeLanguage();
} catch (e) {
console.error('Konnte Sprachen nicht laden:', e);
}
},
+ async loadMyNativeLanguage() {
+ try {
+ // Mappe UI-Sprache zu vocab_language Name
+ const languageMap = {
+ 'de': 'Deutsch',
+ 'en': 'Englisch',
+ 'es': 'Spanisch',
+ 'fr': 'Französisch',
+ 'it': 'Italienisch',
+ 'pt': 'Portugiesisch'
+ };
+
+ const uiLanguage = this.language || 'de';
+ const nativeLanguageName = languageMap[uiLanguage] || 'Deutsch';
+
+ // Finde die entsprechende vocab_language ID
+ const nativeLang = this.languages.find(lang => lang.name === nativeLanguageName);
+ if (nativeLang) {
+ this.myNativeLanguageId = nativeLang.id;
+ }
+ } catch (e) {
+ console.error('Konnte Muttersprache nicht laden:', e);
+ }
+ },
async loadAllCourses() {
this.loading = true;
try {
@@ -182,11 +211,15 @@ export default {
// Nur nativeLanguageId senden, wenn explizit eine Sprache ausgewählt wurde
// Leer bedeutet: zeige alle Kurse
// "null" bedeutet: zeige nur Kurse ohne Muttersprache
+ // "my" bedeutet: verwende die Muttersprache des Benutzers
// Eine ID bedeutet: zeige nur Kurse für diese Muttersprache
if (this.selectedNativeLanguageId !== '') {
if (this.selectedNativeLanguageId === 'null') {
// Explizit Kurse ohne Muttersprache anfordern
params.nativeLanguageId = null;
+ } else if (this.selectedNativeLanguageId === 'my') {
+ // Verwende die Muttersprache des Benutzers
+ params.nativeLanguageId = this.myNativeLanguageId;
} else {
// Spezifische Muttersprache
params.nativeLanguageId = this.selectedNativeLanguageId;