Sprachen und Barrierefreiheit¶
Wo Evey bei der Internationalisierung (i18n) und der Barrierefreiheit (a11y)
steht: was übersetzt ist und wie der Katalog zu jedem Client kommt, dann was
für Hilfstechnologien vorhanden ist und was nicht. Der Katalog liegt in
i18n/<locale>/*.yaml im Wurzelverzeichnis des Repositorys, wird von
internal/pkg/i18n ausgeliefert und vom i18n-Modul jeder App geladen. Dies
ist ein selbst gehostetes Projekt, das eine einzelne Person pflegt: Sehen Sie
die Barrierefreiheit besonders als Bemühen nach bestem Können, nicht als
zertifiziert.
Internationalisierung (i18n)¶
Was übersetzt ist und was nicht¶
| Von Evey übersetzt | Nicht von Evey übersetzt |
|---|---|
| die Oberfläche selbst: Schaltflächen, Menüs, Einstellungen, Fehlermeldungen, Texte der Push-Benachrichtigungen, Benachrichtigungs-E-Mails (in der Sprache des Empfängers) | Metadaten der Medien (Titel, Inhaltsangaben, Genres). Sie kommen vom Metadatenanbieter, in der Metadatensprache, die im Einrichtungsassistenten oder unter Verwaltung → Serverkonfiguration → Sprache & Region eingestellt ist (EVEY_METADATA_LANGUAGE ist nur der Standardwert) |
| Ihre eigenen Bibliotheken, Dateinamen und alles, was Sie eintippen; es wird so gespeichert, wie es ist |
E-Mails zum Zurücksetzen des Passworts werden auf Englisch verschickt. Die Sprache der Oberfläche und die Sprache der Metadaten sind zwei getrennte Einstellungen: Die Oberfläche kann auf Französisch sein und die Inhaltsangabe eines Films auf Englisch, oder umgekehrt.
Unterstützte Sprachen der Oberfläche¶
Sechs: Englisch (en), Französisch (fr), Deutsch (de), Spanisch (es), Chinesisch (zh), Hindi (hi). Englisch ist die Ausgangssprache und die Ersatzsprache: Fehlt ein Text in einer anderen Sprache, erscheint er auf Englisch statt als leeres Feld oder als Schlüssel.
Wie ein Text auf den Bildschirm kommt¶
- Eine einzige Quelle:
/i18n/<locale>/*.yamlim Wurzelverzeichnis des Repositorys, aufgeteilt in Namensräume (common,auth,media,player,admin,errors,notifications,mobile,downloads,requests). Derselbe Katalog speist jede Oberfläche. - Der Server lädt ihn, liefert ihn unter
GET /api/v1/i18n/{locale}aus und nutzt ihn direkt für übersetzte Fehlermeldungen der API und für die Texte der Benachrichtigungen. - Die Web-App lädt die Übersetzungen von diesem Endpunkt (i18next mit dem
HTTP-Backend), behält eine Kopie im lokalen Speicher des Browsers für den
nächsten Start und hält
<html lang>mit der aktiven Sprache synchron, damit Hilfstechnologien die richtige Sprache ansagen. Die Mobil- und TV-Apps laden vom selben Endpunkt über das gemeinsame native i18n-Modul und bringen einen eingebauten englischen Grundbestand an Texten mit (fallback.en.json,offlineStrings.ts) für die Bildschirme, die vor der ersten Antwort eines Servers erscheinen. - Die Sprache kommt aus Ihrer Kontoeinstellung. Fehlt sie, gilt die Sprache
des Browsers oder Geräts (
Accept-Languagewird ausgewertet, die Region entfernt:fr-FRwird zufr), dann die Serversprache unter Verwaltung → Serverkonfiguration → Sprache & Region (die auch die Sprache neuer Konten festlegt), dann Englisch. - Platzhalter und Pluralformen laufen über i18next (
{{count}}usw.).
Was noch fehlt¶
- Die Vollständigkeit schwankt. Englisch ist maßgeblich und immer
vollständig. Die anderen fünf werden von Hand auf demselben Stand gehalten,
mit einem Test (
internal/pkg/i18n/parity_test.go), der fehlschlägt, wenn die Schlüssel auseinanderlaufen. Eine ganz neue Funktion kann aber zuerst auf Englisch kommen und bis zur Übersetzung auf Englisch zurückfallen. - Keine Sprachen mit Schreibrichtung von rechts nach links. Es gibt kein
Arabisch, Hebräisch oder Persisch, und das Layout ist nicht für RTL gebaut
oder getestet: Eine solche Sprache hinzuzufügen ist echte Arbeit (logische
CSS-Eigenschaften, Umgang mit
dir), nicht nur eine Übersetzungsdatei. - Die Übersetzungen sind nicht professionell geprüft. Sie haben die Qualität, die der Betreuer liefern kann. Korrekturen sind willkommen.
- Formatierung nach Region nur teilweise. Datum und Zahlen hängen an
Intlder Plattform bzw. an der Spracheinstellung des Browsers und sind nicht auf jedem Bildschirm einheitlich angebunden.
Eine Sprache hinzufügen oder korrigieren¶
- Kopieren Sie
i18n/en/nachi18n/<your-locale>/und übersetzen Sie die YAML-Werte (die Schlüssel bleiben). - Tragen Sie die Sprache in die Liste der erlaubten Sprachen in
internal/pkg/i18n/i18n.goein (supportedLocales). - Halten Sie die Schlüssel in allen Sprachen identisch: Sonst schlägt der
Paritätstest fehl, und
TestI18nPlaceholdersAgreeAcrossLocalesprüft, dass auch die{{placeholders}}jedes Textes übereinstimmen.
Barrierefreiheit (a11y)¶
Wo das steht¶
Evey ist mit semantischem HTML, ARIA-Beschriftungen und den Barrierefreiheits-Eigenschaften von React Native gebaut, und einiges unten ist bewusst so gemacht. Es wurde aber nicht formal nach WCAG geprüft, es gibt keine automatischen Barrierefreiheitstests in der Testsuite, und es wurde nicht systematisch mit Screenreadern getestet. Teile davon sind mit Hilfstechnologien wahrscheinlich nutzbar, andere wahrscheinlich nicht. Wenn Sie auf Hilfstechnologien angewiesen sind, rechnen Sie mit Mängeln und melden Sie bitte Einzelheiten.
Was vorhanden ist¶
| Bereich | Was umgesetzt ist |
|---|---|
| Weniger Bewegung | prefers-reduced-motion: reduce wird überall beachtet (frontend/apps/web/src/styles/main.css): Animationen und Übergänge sind praktisch abgeschaltet, wenn Ihr Betriebssystem das verlangt |
| Sprache für Hilfstechnologien | <html lang> folgt der aktiven Sprache der Oberfläche |
| Tastatur (Player) | volle Tastatursteuerung mit einer Übersicht der Tastenkürzel auf dem Bildschirm (?, KeyboardShortcutsOverlay.tsx); die Kürzel sind ausgeschaltet, solange Sie in ein Feld tippen |
| Beschriftete Bedienelemente | Schaltflächen nur mit Symbol und Schieberegler tragen im Web aria-label und auf dem Handy accessibilityLabel/accessibilityRole (der größere Teil der Bedienelemente, nicht alle) |
| Designs | fünf Designs sind dabei (Standard dunkel, AMOLED, dunkelrot, Standard hell, hellblau); weitere über Theme-Plugins |
| Android TV | Fokusführung mit dem Steuerkreuz für die Bedienung per Fernbedienung |
Was noch fehlt¶
- Kein Durchgang mit Screenreadern. Abläufe mit NVDA, VoiceOver und TalkBack sind ungeprüft. Manche eigenen Bedienelemente (Menüs, Dialoge, die Zeitleiste, die Spurauswahl) sagen ihren Zustand oder ihre Rolle vielleicht nicht richtig an.
- Die Fokusführung ist nicht geprüft. Die Sichtbarkeit des Fokus und die Fokusreihenfolge in Dialogen und Überlagerungen sind stellenweise uneinheitlich.
- Der Kontrast wird nur für die eingebauten Designs gemessen. Ein
Unit-Test (
frontend/packages/theme/src/contrast.test.ts) verlangt von jedem mitgelieferten Design WCAG AA 4.5:1 für die Akzentfarbe, die drei Textabstufungen und die Warnfarben, gegen den Hintergrund und beide Flächen. Die TV-App prüft ihre abgeleiteten Werte noch einmal (ThemeProvider.contrast.test.ts). Theme-Plugins und die Farben, die ein Plugin zur Laufzeit einfügt, werden nicht geprüft: Ein eigenes Theme kann die Anforderung stellenweise nicht erfüllen. AAA ist nicht das Ziel. - Keine Textvergrößerung in der App über den Zoom von Browser oder Betriebssystem hinaus, und kein eigener Modus mit hohem Kontrast.
- Die Gestaltung von Untertiteln auf dem Handy ist begrenzt (eine
Einschränkung des zugrunde liegenden Players
expo-video). Untertitel und Untertitel für Hörgeschädigte selbst werden aber abgespielt.
Ein Problem melden¶
Nennen Sie uns die Seite oder den Bildschirm, das genaue Bedienelement, was Sie erwartet haben und welche Hilfstechnologie Sie in welcher Version benutzt haben. Konkrete Meldungen werden behoben; mit „es ist nicht barrierefrei“ lässt sich nichts anfangen. Korrekturen zur Barrierefreiheit werden nach bestem Können bearbeitet.