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;