- Stufe
- A
- Seit
- WCAG 2.0
- Einträge
- 26 / 193
3.1.1 Sprache der Seite
Die Seite muss ihre Sprache angeben, sonst liest ein Screenreader deutschen Text mit englischer Stimme vor.
/ Was es verlangt
Jede Seite muss im Code angeben, in welcher natürlichen Sprache sie geschrieben ist. In HTML ist das das lang-Attribut am html-Element. Ein Screenreader wählt danach Stimme und Ausspracheregeln, deshalb wird eine deutsche Seite, die als englisch ausgezeichnet ist oder gar keine Angabe hat, mit englischen Lauten vorgelesen und ist kaum zu verstehen. Dasselbe Attribut steuert die Braille-Ausgabe, die automatische Silbentrennung und die Wahl der Anführungszeichen.
Die Seite besteht, wenn das html-Element ein gültiges Sprachkürzel trägt, das zur Hauptsprache des Inhalts passt, zum Beispiel lang="de" oder lang="en-GB". Ein fehlendes oder leeres Attribut fällt durch, ebenso ein Wert, der kein echtes Sprachkürzel ist. Ausnahmen nennt das Kriterium nicht. Mischt eine Seite Sprachen, geben Sie die am meisten verwendete an und zeichnen die übrigen Passagen gesondert aus, das regelt 3.1.2. Ein Kürzel für die falsche Sprache verfehlt den Zweck, auch wenn es formal korrekt ist.
/ Woran Seiten scheitern
- Das html-Element hat überhaupt kein lang-Attribut.
- Eine deutsche oder polnische Website behält lang="en" aus der Vorlage, auf der sie aufgebaut wurde.
- Der Wert ist kein Sprachkürzel, etwa lang="german" oder lang="de_DE" mit Unterstrich.
- Das Attribut ist vorhanden und leer, geschrieben als lang="".
- Alle Sprachversionen einer mehrsprachigen Website tragen denselben Wert, sodass die deutschen Seiten als englisch angesagt werden.
/ So prüfen Sie es selbst
- Öffnen Sie den Seitenquelltext und sehen Sie sich das öffnende html-Tag ganz oben an, das ein lang-Attribut tragen sollte.
- Sie können auch document.documentElement.lang in die Browserkonsole eingeben. Ein leeres Ergebnis heißt, dass das Attribut fehlt.
- Prüfen Sie, ob der Wert ein echtes Sprachkürzel ist: ein kurzer Code wie de, pl oder en, gegebenenfalls mit Bindestrich und Region wie in en-GB.
- Vergleichen Sie den Wert mit der Sprache, die Sie auf der Seite tatsächlich lesen, und wiederholen Sie das für jede Sprachversion der Website.
- Hören Sie sich einen Absatz mit einem kostenlosen Screenreader wie NVDA an. Eine falsche Stimme hört man sofort.
/ So beheben Sie es
- Ergänzen Sie das Attribut am Wurzelelement, zum Beispiel lang="de" am html-Element einer deutschen Seite.
- Füllen Sie den Wert auf einer mehrsprachigen Website aus der Sprachumgebung jeder Seite im Template oder aus der Spracheinstellung des CMS, niemals als feste Zeichenkette.
- Schreiben Sie regionale Varianten mit Bindestrich, wie en-GB oder de-AT, und nicht mit Unterstrich.
- Ergänzen Sie in XHTML, das als XML ausgeliefert wird, neben lang auch xml:lang mit demselben Wert.
- Verlassen Sie sich nicht auf ein meta-Tag mit http-equiv="content-language", denn assistive Technologie entnimmt ihm die Seitensprache nicht.
/ Was unser Scanner prüft
Vier Prüfungen suchen einen Fehler, nämlich ein html-Element ohne Sprache. Die Prüfung html_lang_missing liest das rohe HTML, während lang-missing, die axe-Regel html-has-lang und H57.2 aus HTML_CodeSniffer die gerenderte Seite lesen. Keine davon vergleicht die angegebene Sprache mit den Wörtern auf der Seite. Eine fünfte hier einsortierte Prüfung, charset_missing, meldet eine fehlende Zeichenkodierung, die dieses Kriterium nicht verlangt.
/ Wer es verletzt, nach unseren eigenen Messungen
| Stelle | Sektor | Vorkommen | Wert |
|---|---|---|---|
| HealthCare.gov | health · US | 3 | 57 |
| Medicare | health · US | 3 | 51 |
| Łódź | city · PL | 3 | 3 |
| Federal Aviation Administration | transport · US | 2 | 14 |
| Kielce | city · PL | 2 | 71 |
| Miami-Dade County | government · US | 2 | 20 |
| Narodowy Bank Polski | government · PL | 2 | 23 |
| National Weather Service | government · US | 2 | 34 |
| New York Public Library | culture · US | 2 | 23 |
| Social Security Administration | government · US | 2 | - |
| Sąd Najwyższy | government · PL | 2 | 14 |
| Dallas | city · US | 1 | 23 |
| Gorzów Wielkopolski | city · PL | 1 | 66 |
| Humboldt-Universität zu Berlin | education · DE | 1 | 35 |
| Instytut Pamięci Narodowej | government · PL | 1 | 43 |
| Kraków | city · PL | 1 | 12 |
| Las Vegas | city · US | 1 | 8 |
| Najwyższa Izba Kontroli | government · PL | 1 | 41 |
| Narodowy Instytut Zdrowia Publicznego | health · PL | 1 | 25 |
| New York City | city · US | 1 | 37 |
| Rzeszów | city · PL | 1 | 8 |
| Seattle | city · US | 1 | 12 |
| Sejm RP | government · PL | 1 | 9 |
| Universität Heidelberg | education · DE | 1 | 21 |
| Uniwersytet Łódzki | education · PL | 1 | 9 |
| Zarząd Transportu Miejskiego Warszawa | transport · PL | 1 | 77 |
Eine Seite je Stelle, automatisch im Wochenrhythmus gemessen. Behebungen seit dem letzten Durchlauf erscheinen beim nächsten, und jede Eintragsseite bietet ein Recht auf Gegendarstellung.
/ Fragen zu diesem Kriterium
Welches lang-Attribut braucht eine deutsche oder polnische Seite?
Setzen Sie den zweibuchstabigen Code der Sprache an das html-Element: lang="de" für Deutsch, lang="pl" für Polnisch, lang="en" für Englisch. Nach einem Bindestrich kann eine Region folgen, wo sie eine Rolle spielt, wie in de-AT oder en-GB. Die Codes stammen aus dem Sprachkürzel-Register der IANA, also aus der Liste, die Browser und Screenreader verstehen.
Was passiert, wenn das lang-Attribut fehlt?
Ein Screenreader fällt auf seine Standardstimme zurück, meist die Sprache des Betriebssystems oder die zuletzt verwendete. Text in einer anderen Sprache wird dann nach den falschen Regeln ausgesprochen und kann unverständlich sein. Browserfunktionen, die von der Sprache abhängen, etwa die automatische Silbentrennung, funktionieren auf einer solchen Seite unter Umständen ebenfalls nicht mehr.
Ist lang="en" auf einer nicht englischen Seite ein WCAG-Fehler?
In der Praxis ja. Das Kriterium verlangt, dass Software die Standardsprache der Seite bestimmen kann, und ein Kürzel für eine andere Sprache gibt ihr die falsche Antwort. Viele automatische Prüfwerkzeuge stellen nur fest, ob das Attribut vorhanden und formal korrekt ist, deshalb rutscht dieser Fehler unbemerkt durch. Erst ein Mensch, der die Seite liest, oder ein Screenreader bemerkt ihn.
