From f2d127cc981a452761009c2337adf44f15db5666 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 22 Sep 2026 01:42:23 +0000 Subject: [PATCH] refactor(settings): Einstellungen thematisch clustern (#336) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Neu gruppiert nach Vorgabe aus Issue #336: - Erscheinungsbild: Design, Sound-Effekte, Jubelmoment (vorher über zwei Sektionen verstreut) - Personalisieren: Sprache, Altersstufe (vorher Sprache unter Erscheinungsbild) - Elternbereich (neu, ersetzt "Über & Support"): Eltern-Bereich, Trophäen, Feedback, Support, Teilen, Über, Fortschritt zurücksetzen Neuer i18n-Key `settings.parentArea` in allen 7 Sprachen ergänzt. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01MKKsCtexSeDGBEmdXrCttP --- components/SettingsModal.tsx | 84 ++++++++++++++++++------------------ locales/de/translations.json | 1 + locales/en/translations.json | 1 + locales/es/translations.json | 1 + locales/fr/translations.json | 1 + locales/it/translations.json | 1 + locales/nl/translations.json | 1 + locales/pl/translations.json | 1 + 8 files changed, 49 insertions(+), 42 deletions(-) diff --git a/components/SettingsModal.tsx b/components/SettingsModal.tsx index 1625158..563d0cc 100644 --- a/components/SettingsModal.tsx +++ b/components/SettingsModal.tsx @@ -261,7 +261,7 @@ export default function SettingsModal({ visible, onClose, embedded = false }: Se const renderContent = () => ( - {/* DARSTELLUNG */} + {/* DARSTELLUNG: Design, Sound, Jubelmoment (Issue #336) */} {t('settings.appearance')} @@ -278,24 +278,6 @@ export default function SettingsModal({ visible, onClose, embedded = false }: Se v => handleThemeChange(v as 'light' | 'dark' | 'system'), ), )} - - - {t('settings.language')} - - {renderSegment( - [ - { label: 'DE', value: 'de' }, - { label: 'EN', value: 'en' }, - { label: 'ES', value: 'es' }, - { label: 'FR', value: 'fr' }, - { label: 'IT', value: 'it' }, - { label: 'NL', value: 'nl' }, - { label: 'PL', value: 'pl' }, - ], - currentLang, - v => handleLanguageChange(v as Language), - )} - {renderRow( t('settings.sound'), renderSegment( @@ -312,13 +294,46 @@ export default function SettingsModal({ visible, onClose, embedded = false }: Se }, ), )} + {renderRow( + t('settings.celebration'), + renderSegment( + [ + { label: t('settings.soundOn'), value: 'on' }, + { label: t('settings.soundOff'), value: 'off' }, + ], + celebrationEnabled ? 'on' : 'off', + async v => { + const enabled = v === 'on'; + setCelebrationEnabled(enabled); + await storageManager.setSetting('celebrationEnabled', enabled); + }, + ), + )} - {/* PERSONALISIEREN */} + {/* PERSONALISIEREN: Sprache, Altersstufe (Issue #336) */} {t('settings.personalize')} + + + {t('settings.language')} + + {renderSegment( + [ + { label: 'DE', value: 'de' }, + { label: 'EN', value: 'en' }, + { label: 'ES', value: 'es' }, + { label: 'FR', value: 'fr' }, + { label: 'IT', value: 'it' }, + { label: 'NL', value: 'nl' }, + { label: 'PL', value: 'pl' }, + ], + currentLang, + v => handleLanguageChange(v as Language), + )} + {renderRow( t('ageGroup.settingsLabel'), renderSegment( @@ -331,41 +346,26 @@ export default function SettingsModal({ visible, onClose, embedded = false }: Se v => handleAgeGroupChange(v as AgeGroup), ), )} - {renderRow( - t('settings.celebration'), - renderSegment( - [ - { label: t('settings.soundOn'), value: 'on' }, - { label: t('settings.soundOff'), value: 'off' }, - ], - celebrationEnabled ? 'on' : 'off', - async v => { - const enabled = v === 'on'; - setCelebrationEnabled(enabled); - await storageManager.setSetting('celebrationEnabled', enabled); - }, - ), - )} - {/* INFO & SUPPORT + DATEN */} + {/* ELTERNBEREICH: Eltern-Bereich, Trophäen, Feedback, Support, Teilen, Über, Zurücksetzen (Issue #336) */} - {t('settings.aboutSupport')} + {t('settings.parentArea')} {( [ - { - id: 'trophies', - label: t('achievements.menuLabel'), - onPress: () => setShowBadgesModal(true), - }, { id: 'parents', label: t('parentDashboard.menuLabel'), onPress: openParentDashboard, }, + { + id: 'trophies', + label: t('achievements.menuLabel'), + onPress: () => setShowBadgesModal(true), + }, { id: 'feedback', label: t('settings.feedback'), diff --git a/locales/de/translations.json b/locales/de/translations.json index e270d4d..2cdce87 100644 --- a/locales/de/translations.json +++ b/locales/de/translations.json @@ -136,6 +136,7 @@ "browserErrorGeneric": "Browser konnte nicht geöffnet werden.", "shareMessage": "Schau dir diese coole Gedächtnistraining-App an: Merke und Male! https://github.com/S540d/DrawFromMemory", "aboutSupport": "Über & Support", + "parentArea": "Elternbereich", "feedback": "Feedback", "support": "Support", "share": "Teilen", diff --git a/locales/en/translations.json b/locales/en/translations.json index bca46fd..c86f697 100644 --- a/locales/en/translations.json +++ b/locales/en/translations.json @@ -136,6 +136,7 @@ "browserErrorGeneric": "Could not open browser.", "shareMessage": "Check out this cool memory training app: Remember & Draw! https://github.com/S540d/DrawFromMemory", "aboutSupport": "About & Support", + "parentArea": "Parent Area", "feedback": "Feedback", "support": "Support", "share": "Share", diff --git a/locales/es/translations.json b/locales/es/translations.json index 9a54fcd..8f8c141 100644 --- a/locales/es/translations.json +++ b/locales/es/translations.json @@ -136,6 +136,7 @@ "browserErrorGeneric": "No se pudo abrir el navegador.", "shareMessage": "Prueba esta genial app de entrenamiento de memoria: ¡Recuerda y Dibuja! https://github.com/S540d/DrawFromMemory", "aboutSupport": "Acerca de y soporte", + "parentArea": "Área de padres", "feedback": "Comentarios", "support": "Soporte", "share": "Compartir", diff --git a/locales/fr/translations.json b/locales/fr/translations.json index d438906..168f28c 100644 --- a/locales/fr/translations.json +++ b/locales/fr/translations.json @@ -136,6 +136,7 @@ "browserErrorGeneric": "Impossible d'ouvrir le navigateur.", "shareMessage": "Découvre cette super appli d'entraînement de la mémoire : Mémorise et Dessine ! https://github.com/S540d/DrawFromMemory", "aboutSupport": "À propos et support", + "parentArea": "Espace parents", "feedback": "Retour", "support": "Soutien", "share": "Partager", diff --git a/locales/it/translations.json b/locales/it/translations.json index dd2b7cb..e42bc0e 100644 --- a/locales/it/translations.json +++ b/locales/it/translations.json @@ -136,6 +136,7 @@ "browserErrorGeneric": "Impossibile aprire il browser.", "shareMessage": "Prova questa fantastica app per allenare la memoria: Ricorda e Disegna! https://github.com/S540d/DrawFromMemory", "aboutSupport": "Informazioni e supporto", + "parentArea": "Area genitori", "feedback": "Feedback", "support": "Supporto", "share": "Condividi", diff --git a/locales/nl/translations.json b/locales/nl/translations.json index c2417b3..afa1a4b 100644 --- a/locales/nl/translations.json +++ b/locales/nl/translations.json @@ -136,6 +136,7 @@ "browserErrorGeneric": "Kon browser niet openen.", "shareMessage": "Bekijk deze leuke geheugentraining-app: Onthoud en Teken! https://github.com/S540d/DrawFromMemory", "aboutSupport": "Over & ondersteuning", + "parentArea": "Ouderomgeving", "feedback": "Feedback", "support": "Ondersteuning", "share": "Delen", diff --git a/locales/pl/translations.json b/locales/pl/translations.json index d3de15d..584d145 100644 --- a/locales/pl/translations.json +++ b/locales/pl/translations.json @@ -136,6 +136,7 @@ "browserErrorGeneric": "Nie można otworzyć przeglądarki.", "shareMessage": "Sprawdź tę świetną aplikację do trenowania pamięci: Zapamiętaj i Rysuj! https://github.com/S540d/DrawFromMemory", "aboutSupport": "O aplikacji i wsparcie", + "parentArea": "Strefa rodzica", "feedback": "Opinia", "support": "Wsparcie", "share": "Udostępnij",