3.1.1 Język strony (ang.) Language of Page
Spis treści
Istota i cel kryterium
Kryterium sukcesu 3.1.1 nakłada obowiązek programowego określenia domyślnego języka naturalnego dla każdej tworzonej strony internetowej. Głównym celem tej wytycznej jest zapewnienie, że oprogramowanie użytkownika oraz technologie asystujące otrzymają precyzyjną informację, w jakim języku sformatowano zasadniczą część witryny.
Gwarantuje to, że syntezatory mowy automatycznie dopasują właściwy zestaw reguł fonetycznych, a przeglądarki bezbłędnie wyrenderują znaki i litery specyficzne dla danego alfabetu. Wdrożenie tej reguły eliminuje sytuacje, w których systemy informatyczne muszą zgadywać przeznaczenie językowe tekstu, co drastycznie podnosi czytelność i eliminuje błędy w interpretacji.
Pamiętaj, że kryterium 3.1.1 odnosi się do domyślnego języka strony. Jeśli na stronie występują fragmenty tekstu w innym języku, należy je oznaczyć osobno, co jest wymaganiem kryterium WCAG 3.1.2 Język części.
Definicja w j. angielskim
Definicja dostępna pod adresem (link otworzy się w nowej karcie):
https://www.w3.org/WAI/WCAG22/quickref/#language-of-page
Definicja w j. polskim
Definicja dostępna pod adresem (link otworzy się w nowej karcie):
https://www.w3.org/Translations/WCAG21-pl/#jezyk-strony
Słownik pojęć
- Język naturalny
-
–
język służący do tradycyjnej komunikacji ludzkiej (np. język polski czy niemiecki), odróżniający się od sztucznych języków programowania.
- Określenie programowe
-
–
metoda zapisu danych w kodzie źródłowym dokumentu, która umożliwia programom komputerowym oraz technologiom wspomagającym automatyczne odczytanie i przetworzenie konkretnych właściwości bez interwencji człowieka.
Wpływ na dostępność (Kogo wspierasz?)
- Osoby niewidome i słabowidzące korzystające z czytników ekranu ((ang.) Screen Readers): Urządzenie automatycznie ładuje odpowiedni słownik, zasady wymowy oraz intonację. Gdy pominiesz ten element, polski tekst przeczytany z angielską syntezą stanie się całkowicie losową i chaotyczną zniekształconą mową, wywołującą u odbiorcy ogromną frustrację.
- Osoby z dysleksją oraz trudnościami poznawczymi: Specjalistyczne narzędzia powiększające lub formatujące tekst potrzebują informacji o języku naturalnym, aby poprawnie dzielić wyrazy, dobierać odpowiednie kroje pisma i ułatwiać płynne czytanie, co drastycznie zmniejsza zmęczenie psychiczne użytkownika.
- Użytkowników korzystających z automatycznych translatorów: Narzędzia takie jak Google Translate opierają się na deklaracji źródłowej. Błędny znacznik sprawia, że system gubi się, generując bezużyteczne i wadliwe tłumaczenie, które uniemożliwia zrozumienie oferty.
- Odbiorców poszukujących treści w sieci oraz specjalistów od SEO: Roboty wyszukiwarek używają tych danych do prawidłowego indeksowania i serwowania wyników w konkretnych regionach, co bezpośrednio przekłada się na widoczność Twojego serwisu.
Zasady wdrażania i wymagania techniczne
- Umieść atrybut
langbezpośrednio w znaczniku otwierającym<html>na samym początku dokumentu HTML. To ustawienie zdefiniuje domyślny język dla całej zawartości witryny. - Wykorzystaj poprawny, dwuliterowy kod języka zgodny z międzynarodowym standardem ISO 639-1 (np.
pldla języka polskiego,endla angielskiego,dedla niemieckiego). - Zastosuj rozszerzony format krajów (np.
pl-PLluben-US), jeśli specyfika projektu wymaga wskazania konkretnego dialektu lub regionu geograficznego, choć do spełnienia poziomu A wystarczy kod dwuliterowy. - Zadbaj o dynamiczną aktualizację atrybutu
langza pomocą (ang.) JavaScript, jeżeli Twoja strona jest aplikacją typu (ang.) Single Page Aplication lub pozwala użytkownikowi na zmianę wersji językowej w locie. Kod musi zawsze wiernie odzwierciedlać aktualny stan prezentowanej treści. - Unikaj mylenia atrybutu języka z deklaracją kodowania znaków. Znacznik
<meta charset="UTF-8">odpowiada wyłącznie za poprawne wyświetlanie liter, natomiast atrybutlangokreśla język naturalny. Są to dwa odrębne parametry techniczne w drzewie DOM. - Pamiętaj o różnicach między standardami. Atrybut
xml:langstosuj wyłącznie w dokumentach XML oraz XHTML. Przy tworzeniu nowoczesnych stron w standardzie HTML5 jedynym wyborem powinien być klasyczny atrybutlang.
Wyjątki i sytuacje szczególne
Kryterium sukcesu 3.1.1 odnosi się bezwzględnie do domyślnego, głównego języka całej strony internetowej. W ramach tego kryterium nie przewidziano żadnych wyjątków zwalniających z tego obowiązku.
Przykłady implementacji
Najczęstsze błędy
- Całkowite pominięcie atrybutu
lang(lubxml:langw dokumentach cyfrowych) w głównym znaczniku<html>. To krytyczne uchybienie, które skazuje użytkowników technologii wspomagających na całkowicie chaotyczną interpretację tekstu. - Brak spójności między zadeklarowanym atrybutem a faktyczną zawartością, czyli sytuacja, w której kod wskazuje np.
lang="es", podczas gdy cała strona została napisana po polsku. - Stosowanie nieprawidłowych lub nieoficjalnych kodów językowych (np.
lang="polski",lang="plk"), które nie są zgodne z oficjalną klasyfikacją standardu ISO 639-1. - Próba zastąpienia atrybutu języka deklaracją kodowania znaków
charsetlub nagłówkami odpowiedzi serwera HTTP, które nie są poprawnie interpretowane przez czytniki ekranu jako domyślny język dokumentu.
Najlepsze praktyki
- Zawsze łącz atrybut podstawowy z dokładnym podziałem regionalnym (np.
lang="pl-PL"), co ułatwia pracę zaawansowanym systemom syntezy mowy i precyzyjnie wskazuje lokalizację. - Zweryfikuj automatycznie generowany kod w systemach zarządzania treścią – upewnij się, że instalacja wtyczek wielojęzycznych prawidłowo podmienia atrybut w elemencie nadrzędnym przy przełączaniu flag.
- Dbaj o czystość kodu i usuwaj puste atrybuty
lang=""z szablonów elementów, które mogą dezorientować technologie asystujące.
Metody testowania
- Narzędzie deweloperskie (ang.) Developer Tools: Przeanalizuj strukturę drzewa DOM i podpięte zdarzenia JavaScript. Upewnij się, że elementy obsługujące zaawansowane gesty mają zdublowane alternatywne kontrolki (np. przyciski) reagujące na standardowe kliknięcia, a elementy te posiadają poprawne etykiety dostępności.
- NVDA: Uruchom czytnik ekranu i manualnie spróbuj wywołać funkcję przypisaną pierwotnie do gestu (np. powiększenie mapy), nawigując wyłącznie do alternatywnych przycisków, aby upewnić się, że operacja jest w pełni dostępna bez patrzenia na ekran.
- Narzędzie deweloperskie (ang.) Developer Tools: Otwórz podgląd drzewa (ang.) DOM strony w przeglądarce, zlokalizuj element główny
<html>i zweryfikuj, czy posiada poprawno skonfigurowany atrybutlang. - NVDA: Uruchom czytnik ekranu, przejdź do przeglądanej witryny i odsłuchaj próbkę tekstu. Sprawdź, czy syntezator mowy posługuje się właściwym akcentem i prawidłową intonacją, co potwierdzi poprawne zaczytanie metadanych.
- (ang.) W3C Markup Validation Service: Prześlij kod źródłowy do oficjalnego walidatora konsorcjum. Narzędzie zweryfikuje poprawność semantyczną i upewni Cię, że zastosowany znacznik językowy odpowiada oficjalnym normom międzynarodowym.
Sprawdź swoją wiedzę
W linku poniżej znajduje się 6 miniaturowych okienek przeglądarki (ramki iframe) ładujących różne strony internetowe. Twoim zadaniem jest sprawdzenie, czy każda z nich ma prawidłowo zdefiniowany domyślny język naturalny.
Jak to sprawdzić?
- Zbadaj zawartość każdej ramki za pomocą narzędzi deweloperskich (Zbadaj element).
- Odszukaj główny znacznik
<html>wewnątrz dokumentu ramki. - Sprawdź obecność i wartość atrybutu
lang. - Zwróć uwagę na zgodność zadeklarowanego języka z faktyczną treścią strony oraz poprawność kodu (ISO 639-1).
Notatka: Zanim zajrzysz do rozwiązania, przetestuj i zapisz swoje wnioski na kartce.
Proponowane narzędzia: Narzędzie deweloperskie (ang.) Developer Tools, NVDA
Link: https://pdc.ambiscale.com/training/wcag-3-1-1/
#1 BŁĄD
Problem: Całkowite pominięcie atrybutu lang w głównym znaczniku <html>.
Dlaczego: To krytyczne uchybienie. Bez tej deklaracji oprogramowanie użytkownika (np. czytnik ekranu) musi zgadywać język strony, co często kończy się użyciem domyślnego języka systemu operacyjnego.
Naprawa: Dodaj atrybut: <html lang="pl">.
#2 BŁĄD
Problem: Użyto nieoficjalnego kodu języka: lang="polski".
Dlaczego: Kod języka musi być zgodny ze standardem BCP 47, który opiera się m.in. na kodach dwuliterowych (ISO 639-1, np. „pl”, „en”) z opcjonalnymi rozszerzeniami regionu (np. „en-US”) lub rzadziej kodach trzyliterowych. Przeglądarki i czytniki nie zrozumieją pełnego słowa „polski”.
Naprawa: Zmień wartość na poprawny kod: <html lang="pl">.
#3 BŁĄD
Problem: Brak spójności między zadeklarowanym atrybutem a faktyczną zawartością. Kod wskazuje lang="en", podczas gdy treść strony jest w języku polskim.
Dlaczego: Chociaż technicznie język „da się programowo odczytać” (jest to „en”), to odczytywany jest błędnie względem treści. Standardowa interpretacja audytowa traktuje to jako niepowodzenie kryterium 3.1.1. Czytnik ekranu spróbuje przeczytać polski tekst używając angielskich reguł wymowy, co stworzy niezrozumiały bełkot.
Naprawa: Dostosuj atrybut do treści: <html lang="pl">.
#4 DOBRZE
Dlaczego: Zastosowano poprawny, dwuliterowy kod języka pl zgodny ze standardem ISO 639-1 w znaczniku <html>. Treść strony jest w języku polskim, więc wszystko się zgadza.
#5 DOBRZE
Dlaczego: Zastosowano rozszerzony format z kodem kraju lang="en-US". Jest to dobra praktyka, ułatwiająca pracę zaawansowanym systemom syntezy mowy i precyzyjnie wskazująca lokalizację (amerykańska odmiana języka angielskiego).
#6 BŁĄD
Problem: Zamiast atrybutu lang w znaczniku <html>, użyto tagu <meta name="language" content="pl">.
Dlaczego: Tagi meta (w tym deklaracja kodowania znaków charset) nie są poprawnie interpretowane przez czytniki ekranu jako domyślny język dokumentu. Jedynym poprawnym sposobem zadeklarowania języka naturalnego w HTML5 jest atrybut lang w elemencie nadrzędnym.
Naprawa: Usuń meta tag i dodaj atrybut do HTML: <html lang="pl">.
Źródła
- Abou-Zahra S., Eggert E., Vanderheiden G. [i in.] (red.), „3.1.1 Language of Page Level A”, [w:] Web Content Accessibility Guidelines (WCAG) 2.2 Quick Reference, 2025, https://www.w3.org/WAI/WCAG22/quickref/#language-of-page [dostęp: 28.05.2026].
- Accessibility Guidelines Working Group Participants, „Understanding SC 3.1.1 Language of Page (Level A)”, [w:] WCAG 2.2 Understanding Docs, 2026, https://www.w3.org/WAI/WCAG22/Understanding/language-of-page.html [dostęp: 28.05.2026].
- World Wide Web Consortium (W3C), „Kryterium sukcesu 3.1.1 Język strony”, [w:] Web Content Accessibility Guidelines (WCAG) 2.1, tłum. Fundacja Instytut Rozwoju Regionalnego, 2021, https://www.w3.org/Translations/WCAG21-pl/#jezyk-strony [dostęp: 28.05.2026].
- DOCK sp. z o.o., WCAG 3.1.1: Język strony, https://wcag.dock.codes/pl/dokumentacja/kryteria-sukcesu-wcag/wcag-311/ [dostęp: 28.05.2026].
- Międzynarodowa Organizacja Normalizacyjna (ISO), ISO 639 language codes, 2026, https://www.iso.org/iso-639-language-code [dostęp: 28.05.2026].
- Międzynarodowa Organizacja Normalizacyjna (ISO), ISO 3166 country codes, 2026, https://www.iso.org/iso-3166-country-codes.html [dostęp: 28.05.2026].
Dodatkowe linki
- W3C WCAG:
- Dokładna definicja: https://www.w3.org/WAI/WCAG22/quickref/#language-of-page
- Zrozumienie podpunktu: https://www.w3.org/WAI/WCAG22/Understanding/language-of-page.html