Evidence type: [evidence]
Time horizon: Before launch
Files: frontend/src/components/LanguageSwitcher.tsx:33-43
What's happening: The control shows the current language rather than the target inside an unlabeled <button>; its only description is a title template literal that bypasses TranslatedText, so a Spanish user hovering sees "Switch to English" in English.
Why it matters: A user who cannot read the current language is exactly the user who needs this control and gets no affordance from it.
Recommendation: Render both states explicitly (an EN | ES segmented control); add a translated aria-label.
Expected impact: Unambiguous language switching for the users who most need it.
Effort estimate: S
Finding ID: UX-M7
Source: docs/agents/pre-launch-report.md
Evidence type: [evidence]
Time horizon: Before launch
Files: frontend/src/components/LanguageSwitcher.tsx:33-43
What's happening: The control shows the current language rather than the target inside an unlabeled
<button>; its only description is atitletemplate literal that bypassesTranslatedText, so a Spanish user hovering sees "Switch to English" in English.Why it matters: A user who cannot read the current language is exactly the user who needs this control and gets no affordance from it.
Recommendation: Render both states explicitly (an
EN | ESsegmented control); add a translatedaria-label.Expected impact: Unambiguous language switching for the users who most need it.
Effort estimate: S
Finding ID: UX-M7
Source: docs/agents/pre-launch-report.md