LanguageSwitcher Barrierefreiheit
Implementierte Verbesserungen
Die LanguageSwitcher-Komponente wurde mit folgenden Barrierefreiheitsverbesserungen aktualisiert:
ARIA-Attribute
role="combobox"
- Definiert den Dropdown-Sprachumschalter als Comboboxrole="listbox"
- Definiert die Liste der Sprachoptionen als Listboxrole="option"
- Definiert jede Sprachoption als Optionrole="radiogroup"
- Definiert die Buttons/Flags-Variante als Radiogrupperole="radio"
- Definiert jede Sprachoption in der Radiogruppe als Radioaria-label
- Bietet eine Beschreibung des Sprachumschaltersaria-labelledby
- Verknüpft ein Label mit dem Sprachumschalteraria-describedby
- Verknüpft eine ausführliche Beschreibung mit dem Sprachumschalteraria-haspopup
- Zeigt an, dass der Sprachumschalter ein Popup hataria-expanded
- Zeigt an, ob das Dropdown geöffnet istaria-controls
- Verknüpft den Sprachumschalter mit der Optionslistearia-selected
- Zeigt an, welche Sprachoption ausgewählt istaria-checked
- Zeigt an, welche Sprachoption in der Radiogruppe ausgewählt istaria-disabled
- Zeigt an, ob der Sprachumschalter deaktiviert istaria-busy
- Zeigt an, ob der Sprachumschalter im Ladezustand istaria-keyshortcuts
- Definiert Tastaturkürzel für den Sprachumschalter
Tastaturunterstützung
- Öffnen des Dropdowns mit Enter oder Leertaste
- Schließen des Dropdowns mit Escape
- Navigation zwischen den Sprachoptionen mit Pfeiltasten
- Sprung zur ersten/letzten Sprachoption mit Home/End
- Auswahl einer Sprachoption mit Enter oder Leertaste
- Fokus-Management für alle interaktiven Elemente
- Visuelle Fokus-Indikatoren
Screenreader-Unterstützung
- Versteckte Labels für Screenreader
- Versteckte Beschreibungen für zusätzliche Informationen
- Live-Regionen für Statusänderungen
- Ankündigung von Sprachänderungen
- Versteckte Texte für Flaggen-Variante
- Korrekte Ankündigung der ausgewählten Sprache
Beispiel-Implementierung
// Dropdown-Variante
<LanguageSwitcherA11y
variant="dropdown"
locales={['de', 'en', 'fr']}
showName
showFlag
ariaLabel="Sprache auswählen"
description="Wählen Sie Ihre bevorzugte Sprache"
/>
// Select-Variante
<LanguageSwitcherA11y
variant="select"
locales={['de', 'en', 'fr']}
showName
showCode
ariaLabel="Sprache auswählen"
/>
// Buttons-Variante
<LanguageSwitcherA11y
variant="buttons"
locales={['de', 'en', 'fr']}
showName
ariaLabel="Sprache auswählen"
/>
// Flags-Variante
<LanguageSwitcherA11y
variant="flags"
locales={['de', 'en', 'fr']}
ariaLabel="Sprache auswählen"
/>
// Minimal-Variante
<LanguageSwitcherA11y
variant="minimal"
locales={['de', 'en', 'fr']}
ariaLabel="Sprache auswählen"
/>
// Mit Tastaturkürzel
<LanguageSwitcherA11y
variant="dropdown"
locales={['de', 'en', 'fr']}
ariaLabel="Sprache auswählen"
ariaKeyshortcuts="Alt+L"
/>
// Deaktivierter Zustand
<LanguageSwitcherA11y
variant="dropdown"
locales={['de', 'en', 'fr']}
ariaLabel="Sprache auswählen"
disabled
/>
Barrierefreiheitstests
Die LanguageSwitcher-Komponente wurde mit folgenden Tests auf Barrierefreiheit geprüft:
- Automatisierte Tests mit jest-axe zur Überprüfung der ARIA-Attribute
- Tastatur-Tests zur Überprüfung der Tastaturnavigation und -bedienung
- Screenreader-Tests zur Überprüfung der korrekten Ankündigungen
- Visuelle Tests zur Überprüfung der Farbkontraste und Fokus-Indikatoren
Bekannte Einschränkungen
- Die Komponente unterstützt derzeit keine automatische Anpassung der Sprache basierend auf den Browsereinstellungen
- Die Komponente unterstützt derzeit keine automatische Übersetzung der Sprachnamen in die aktuelle Sprache
- Die Komponente unterstützt derzeit keine automatische Anpassung der Leserichtung basierend auf der ausgewählten Sprache
- Die Komponente unterstützt derzeit keine automatische Anpassung der Flaggen basierend auf der ausgewählten Sprache