Fix #21: Onboarding-Fragebogen lokalisiert + Skip-Button besser sichtbar

- PersonalityModels: Alle 30 QuizQuestion-Strings in String(localized:) gewrappt
  → Quiz nutzt jetzt korrekt die Lokaliserungsstrings (vorher: stale in xcstrings)
- PersonalityQuizView: "Überspringen"-Button in allen 3 Screens vereinheitlicht
  → .subheadline.weight(.medium) + .secondary statt caption/tertiary

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-22 18:48:01 +02:00
parent 9ca54e6a82
commit 55991808cf
3 changed files with 37 additions and 63 deletions
+3 -29
View File
@@ -894,7 +894,6 @@
}
},
"Auf einer Nachbarschaftsparty kennst du kaum jemanden." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1588,7 +1587,6 @@
}
},
"Du bist enttäuscht und brauchst Zeit, um dich neu zu sortieren." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1599,7 +1597,6 @@
}
},
"Du erklärst ehrlich, dass es dir gerade nicht passt." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1610,7 +1607,6 @@
}
},
"Du erscheinst wie abgemacht dein Wort gilt." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1621,7 +1617,6 @@
}
},
"Du fragst dich, ob du etwas falsch gemacht hast, und das lässt dich nicht los." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1632,7 +1627,6 @@
}
},
"Du fragst kurz nach, ob es sich verschieben lässt." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1643,7 +1637,6 @@
}
},
"Du gehst aktiv auf Fremde zu und fängst Gespräche an." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1654,7 +1647,6 @@
}
},
"Du gehst einfach hin Neugier auf fremde Menschen treibt dich." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1665,7 +1657,6 @@
}
},
"Du genießt die Ruhe und tankst alleine auf." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1676,7 +1667,6 @@
}
},
"Du hast einem Freund versprochen zu helfen. Am Morgen bist du müde." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1687,7 +1677,6 @@
}
},
"Du hast es dir sofort notiert und planst etwas Besonderes." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1698,7 +1687,6 @@
}
},
"Du hilfst trotzdem anderen etwas Gutes tun liegt dir." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1719,7 +1707,6 @@
}
},
"Du meldest dich locker er ist wahrscheinlich einfach beschäftigt." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1730,7 +1717,6 @@
}
},
"Du reagierst spontan, wenn der Tag kommt." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1741,7 +1727,6 @@
}
},
"Du rufst spontan Freunde an und organisierst ein Treffen." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1752,7 +1737,6 @@
}
},
"Du sagst sofort zu neue Erfahrungen reizen dich." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1761,6 +1745,9 @@
}
}
}
},
"Du schlägst lieber etwas vor, das ihr beide gut kennt." : {
},
"Du schlägt lieber etwas vor, das ihr beide gut kennt." : {
"extractionState" : "stale",
@@ -1774,7 +1761,6 @@
}
},
"Du sprichst deine Sorgen an, auch wenn es Spannung erzeugt." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1785,7 +1771,6 @@
}
},
"Du unterstützt ihn und behältst deine Bedenken für dich." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1796,7 +1781,6 @@
}
},
"Du wartest, bis ein Bekannter mitkommt." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1807,7 +1791,6 @@
}
},
"Du wartest, bis jemand dich anspricht." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1818,7 +1801,6 @@
}
},
"Du zuckst die Schultern und findest schnell etwas anderes." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1920,7 +1902,6 @@
}
},
"Ein Freund erzählt von einem Plan, den du für einen Fehler hältst." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1931,7 +1912,6 @@
}
},
"Ein Freund schlägt spontan eine Aktivität vor, die du noch nie gemacht hast." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -1942,7 +1922,6 @@
}
},
"Ein Nachbar bittet um einen Gefallen, der dir gerade ungelegen kommt." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -2899,7 +2878,6 @@
}
},
"In deinem Viertel gibt es ein neues Treffen niemand, den du kennst, ist dabei." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -3677,7 +3655,6 @@
}
},
"Nach einer anstrengenden Woche hast du einen freien Samstag." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -3745,7 +3722,6 @@
}
},
"Nächste Woche hat eine Freundin Geburtstag." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -5253,7 +5229,6 @@
}
},
"Verabredungen mit Freunden fallen kurzfristig aus." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
@@ -5397,7 +5372,6 @@
}
},
"Von einem guten Freund hast du zwei Wochen nichts gehört." : {
"extractionState" : "stale",
"localizations" : {
"en" : {
"stringUnit" : {
+30 -30
View File
@@ -97,90 +97,90 @@ struct QuizQuestion: Identifiable {
QuizQuestion(
id: "O1",
dimension: .openness,
situation: "Ein Freund schlägt spontan eine Aktivität vor, die du noch nie gemacht hast.",
optionA: "Du sagst sofort zu neue Erfahrungen reizen dich.",
optionB: "Du schlägst lieber etwas vor, das ihr beide gut kennt.",
situation: String(localized: "Ein Freund schlägt spontan eine Aktivität vor, die du noch nie gemacht hast."),
optionA: String(localized: "Du sagst sofort zu neue Erfahrungen reizen dich."),
optionB: String(localized: "Du schlägst lieber etwas vor, das ihr beide gut kennt."),
optionAScore: 1
),
// Offenheit O2
QuizQuestion(
id: "O2",
dimension: .openness,
situation: "In deinem Viertel gibt es ein neues Treffen niemand, den du kennst, ist dabei.",
optionA: "Du gehst einfach hin Neugier auf fremde Menschen treibt dich.",
optionB: "Du wartest, bis ein Bekannter mitkommt.",
situation: String(localized: "In deinem Viertel gibt es ein neues Treffen niemand, den du kennst, ist dabei."),
optionA: String(localized: "Du gehst einfach hin Neugier auf fremde Menschen treibt dich."),
optionB: String(localized: "Du wartest, bis ein Bekannter mitkommt."),
optionAScore: 1
),
// Verlässlichkeit C1
QuizQuestion(
id: "C1",
dimension: .conscientiousness,
situation: "Du hast einem Freund versprochen zu helfen. Am Morgen bist du müde.",
optionA: "Du erscheinst wie abgemacht dein Wort gilt.",
optionB: "Du fragst kurz nach, ob es sich verschieben lässt.",
situation: String(localized: "Du hast einem Freund versprochen zu helfen. Am Morgen bist du müde."),
optionA: String(localized: "Du erscheinst wie abgemacht dein Wort gilt."),
optionB: String(localized: "Du fragst kurz nach, ob es sich verschieben lässt."),
optionAScore: 1
),
// Verlässlichkeit C2
QuizQuestion(
id: "C2",
dimension: .conscientiousness,
situation: "Nächste Woche hat eine Freundin Geburtstag.",
optionA: "Du hast es dir sofort notiert und planst etwas Besonderes.",
optionB: "Du reagierst spontan, wenn der Tag kommt.",
situation: String(localized: "Nächste Woche hat eine Freundin Geburtstag."),
optionA: String(localized: "Du hast es dir sofort notiert und planst etwas Besonderes."),
optionB: String(localized: "Du reagierst spontan, wenn der Tag kommt."),
optionAScore: 1
),
// Geselligkeit E1
QuizQuestion(
id: "E1",
dimension: .extraversion,
situation: "Nach einer anstrengenden Woche hast du einen freien Samstag.",
optionA: "Du rufst spontan Freunde an und organisierst ein Treffen.",
optionB: "Du genießt die Ruhe und tankst alleine auf.",
situation: String(localized: "Nach einer anstrengenden Woche hast du einen freien Samstag."),
optionA: String(localized: "Du rufst spontan Freunde an und organisierst ein Treffen."),
optionB: String(localized: "Du genießt die Ruhe und tankst alleine auf."),
optionAScore: 1
),
// Geselligkeit E2
QuizQuestion(
id: "E2",
dimension: .extraversion,
situation: "Auf einer Nachbarschaftsparty kennst du kaum jemanden.",
optionA: "Du gehst aktiv auf Fremde zu und fängst Gespräche an.",
optionB: "Du wartest, bis jemand dich anspricht.",
situation: String(localized: "Auf einer Nachbarschaftsparty kennst du kaum jemanden."),
optionA: String(localized: "Du gehst aktiv auf Fremde zu und fängst Gespräche an."),
optionB: String(localized: "Du wartest, bis jemand dich anspricht."),
optionAScore: 1
),
// Verträglichkeit A1
QuizQuestion(
id: "A1",
dimension: .agreeableness,
situation: "Ein Nachbar bittet um einen Gefallen, der dir gerade ungelegen kommt.",
optionA: "Du hilfst trotzdem anderen etwas Gutes tun liegt dir.",
optionB: "Du erklärst ehrlich, dass es dir gerade nicht passt.",
situation: String(localized: "Ein Nachbar bittet um einen Gefallen, der dir gerade ungelegen kommt."),
optionA: String(localized: "Du hilfst trotzdem anderen etwas Gutes tun liegt dir."),
optionB: String(localized: "Du erklärst ehrlich, dass es dir gerade nicht passt."),
optionAScore: 1
),
// Verträglichkeit A2
QuizQuestion(
id: "A2",
dimension: .agreeableness,
situation: "Ein Freund erzählt von einem Plan, den du für einen Fehler hältst.",
optionA: "Du unterstützt ihn und behältst deine Bedenken für dich.",
optionB: "Du sprichst deine Sorgen an, auch wenn es Spannung erzeugt.",
situation: String(localized: "Ein Freund erzählt von einem Plan, den du für einen Fehler hältst."),
optionA: String(localized: "Du unterstützt ihn und behältst deine Bedenken für dich."),
optionB: String(localized: "Du sprichst deine Sorgen an, auch wenn es Spannung erzeugt."),
optionAScore: 1
),
// Ausgeglichenheit N1 (invertiert: A = stabil = hohes N-inverted)
QuizQuestion(
id: "N1",
dimension: .neuroticism,
situation: "Von einem guten Freund hast du zwei Wochen nichts gehört.",
optionA: "Du meldest dich locker er ist wahrscheinlich einfach beschäftigt.",
optionB: "Du fragst dich, ob du etwas falsch gemacht hast, und das lässt dich nicht los.",
situation: String(localized: "Von einem guten Freund hast du zwei Wochen nichts gehört."),
optionA: String(localized: "Du meldest dich locker er ist wahrscheinlich einfach beschäftigt."),
optionB: String(localized: "Du fragst dich, ob du etwas falsch gemacht hast, und das lässt dich nicht los."),
optionAScore: 0 // A = emotional stabil = 0 Neurotizismus-Punkte
),
// Ausgeglichenheit N2 (invertiert)
QuizQuestion(
id: "N2",
dimension: .neuroticism,
situation: "Verabredungen mit Freunden fallen kurzfristig aus.",
optionA: "Du zuckst die Schultern und findest schnell etwas anderes.",
optionB: "Du bist enttäuscht und brauchst Zeit, um dich neu zu sortieren.",
situation: String(localized: "Verabredungen mit Freunden fallen kurzfristig aus."),
optionA: String(localized: "Du zuckst die Schultern und findest schnell etwas anderes."),
optionB: String(localized: "Du bist enttäuscht und brauchst Zeit, um dich neu zu sortieren."),
optionAScore: 0 // A = emotional stabil = 0 Neurotizismus-Punkte
),
]
+4 -4
View File
@@ -125,7 +125,7 @@ struct QuizIntroScreen: View {
Button(action: onSkip) {
Text("Überspringen")
.font(.subheadline)
.font(.subheadline.weight(.medium))
.foregroundStyle(.secondary)
}
.accessibilityLabel("Quiz überspringen")
@@ -222,7 +222,7 @@ private struct GenderSelectionScreen: View {
Button(action: onSkip) {
Text("Überspringen")
.font(.subheadline)
.font(.subheadline.weight(.medium))
.foregroundStyle(.secondary)
}
.accessibilityLabel("Quiz überspringen")
@@ -273,8 +273,8 @@ private struct QuizQuestionsScreen: View {
Button(action: skipCurrentQuestion) {
Text("Überspringen")
.font(NahbarInsightStyle.captionFont)
.foregroundStyle(.tertiary)
.font(.subheadline.weight(.medium))
.foregroundStyle(.secondary)
}
.padding(.bottom, 32)
}