- Poziom
- AA
- Od wersji
- WCAG 2.0
- Pozycje
- 3 / 193
3.1.2 Język części
Fragment w innym języku musi to zaznaczać, z tego samego powodu.
/ Czego wymaga
Gdy strona napisana w jednym języku zawiera fragment lub wyrażenie w innym, kod musi wskazywać, gdzie język się zmienia. W HTML atrybut lang umieszcza się na elemencie, który zawiera obcojęzyczny tekst. Czytnik ekranu zmienia wtedy głos na czas tego fragmentu, a potem wraca do poprzedniego. Bez takiego oznaczenia angielski cytat na polskiej stronie zostaje odczytany z polską wymową, której słuchacz często nie potrafi rozszyfrować. Z tej samej informacji korzystają monitory brajlowskie.
Kryterium wymienia cztery wyjątki: nazwy własne, terminy techniczne, słowa o nieokreślonym języku oraz słowa lub wyrażenia, które weszły do języka potocznego otaczającego tekstu. Nazwa marki albo słowo „weekend” w polskim zdaniu nie wymagają więc żadnego oznaczenia. Pełne zdanie, cytat, blok tekstu prawnego czy link do innej wersji językowej już go wymagają. Atrybut z niepoprawną wartością albo wskazujący niewłaściwy język również oznacza niespełnienie kryterium.
/ Jak strony go nie spełniają
- Angielski cytat lub abstrakt znajduje się na polskiej stronie, a jego element nie ma atrybutu lang.
- Przełącznik języków zawiera linki „Deutsch” i „English”, a żaden z nich nie ma własnego atrybutu lang.
- Akapit wklejony z innego dokumentu zachował lang="en", chociaż tekst w środku został już przetłumaczony.
- Element span ma wartość, która nie jest znacznikiem języka, na przykład lang="english".
- Strona podaje ten sam komunikat w dwóch językach jeden po drugim, a zadeklarowany jest tylko język strony.
/ Jak sprawdzić samodzielnie
- Przeczytaj stronę i wypisz każdy fragment, który nie jest w języku głównym: cytaty, obcojęzyczne tytuły, klauzule prawne oraz linki przełącznika języków.
- Zbadaj każdy z nich w narzędziach deweloperskich i poszukaj atrybutu lang na samym elemencie albo na jego przodku poniżej elementu html.
- Wyszukaj w źródle ciąg lang= i sprawdź każdą znalezioną wartość. Musi być poprawnym znacznikiem i musi zgadzać się z tekstem w środku.
- Odsłuchaj te fragmenty w darmowym czytniku ekranu, na przykład NVDA, i sprawdź, czy głos się zmienia.
/ Jak to naprawić
- Obejmij obcojęzyczne wyrażenie elementem span z właściwą wartością, na przykład lang="en" wokół angielskiego wyrażenia.
- Gdy cały blok jest w innym języku, umieść lang na elemencie blokowym: blockquote, p, li lub section.
- W przełączniku języków nadaj każdemu linkowi lang jego własnej etykiety, na przykład lang="de" na linku z napisem „Deutsch”.
- Usuń atrybuty lang, które zostały po wklejonej treści, albo popraw je na język tekstu, który teraz zawierają.
- Jeśli treść powstaje w edytorze CMS, używaj jego narzędzia do oznaczania języka obcych fragmentów, żeby oznaczenie było zapisane razem z tekstem.
/ Co sprawdza nasz skaner
Dwa testy patrzą na wartości, a nie na tekst. H58.1.Lang z HTML_CodeSniffer przechodzi przez każdy element poniżej html, który ma atrybut lang, i zgłasza wartość niezbudowaną jak znacznik języka, a reguła axe valid-lang zgłasza niepoprawne wartości lang. Żaden z nich nie znajdzie obcojęzycznego fragmentu, który w ogóle nie ma atrybutu lang, a to błąd najczęstszy, ani nie oceni, czy poprawny znacznik pasuje do tekstu.
/ Kto je łamie, według naszych pomiarów
| Podmiot | Sektor | Wystąpienia | Wynik |
|---|---|---|---|
| Uniwersytet Jagielloński | education · PL | 12 | 1 |
| Seattle | city · US | 1 | 12 |
| Warszawa | city · PL | 1 | 20 |
Jedna strona na podmiot, mierzona automatycznie w tygodniowym cyklu. Jeśli podmiot coś naprawił od ostatniego pomiaru, zmiana będzie widoczna przy następnym, a każdy podmiot może odpowiedzieć na swojej stronie.
/ Pytania o to kryterium
Czy każde obce słowo trzeba oznaczać atrybutem lang?
Nie. Zwolnione są nazwy własne, terminy techniczne, słowa, których języka nie da się ustalić, oraz słowa, które weszły do codziennego użycia w otaczającym języku. Nazwa firmy albo zapożyczenie takie jak „weekend” zostają bez zmian. Oznaczaj wyrażenia, zdania i dłuższe fragmenty, które czytelnik języka głównego rozpozna jako napisane w innym języku.
Jak oznaczyć zmianę języka w HTML?
Dodaj atrybut lang z właściwym znacznikiem języka do elementu, który zawiera tekst. Dla kilku słów wewnątrz zdania użyj elementu span z lang="en" lub innym kodem. Dla całego cytatu albo akapitu umieść atrybut na elemencie blockquote lub p. Wszystko, co jest w środku, dziedziczy tę wartość, dopóki zagnieżdżony element nie ustawi innej.
Czy kryterium Język części jest wymagane na poziomie AA?
Tak. 3.1.2 to kryterium poziomu AA i jest częścią WCAG od wersji 2.0, więc wchodzi w zakres każdego audytu AA. Towarzyszące mu 3.1.1 Język strony ma poziom A. Narzędzia automatyczne słabo je pokrywają, bo oprogramowanie umie zweryfikować wartość lang, a nie ma pewnego sposobu, żeby zauważyć nieoznaczone zdanie w innym języku.
