Wymóg WCAG
Kryterium 3.1.1 „Język strony” (poziom A) wymaga, żeby domyślny język każdej strony był zadeklarowany programowo. Kryterium 3.1.2 „Język części” (poziom AA) wymaga oznaczenia fragmentów w innym języku niż język strony. WCAG 3.1.2 ma wyjątki dla nazw własnych, terminów technicznych, wyrazów o nieokreślonym języku i zwrotów przyjętych w języku otoczenia.
Brak atrybutu lang na znaczniku <html> to naruszenie na poziomie A — najniższym progu zgodności. Jest to jednocześnie jedna z najprostszych poprawek: jeden atrybut w szablonie.
<html lang="pl">
<body>
<p>Gość napisał: <span lang="en">Please send the report tomorrow.</span></p>
</body>
</html>Lang a hreflang
Atrybut lang opisuje jeden dokument: „ta strona jest po polsku”. Hreflang opisuje relacje między osobnymi adresami: „polska wersja tej treści jest tutaj, angielska tam”. Te sygnały działają na innych poziomach i nie zastępują się nawzajem.
Każda wersja potrzebuje poprawnej deklaracji języka dla dostępności. Hreflang może pomóc wyszukiwarce powiązać wersje, ale nie jest wymogiem WCAG i nie zastępuje lang.
Meta content-language jest przestarzałe
Znacznik <meta http-equiv="content-language"> został usunięty ze standardu HTML i nie należy go stosować. Google nie używa go do rozpoznawania języka. Jeśli nadal jest w szablonie, można go bezpiecznie usunąć — atrybut lang na <html> jest jedyną obowiązującą deklaracją.
<meta http-equiv="content-language" content="pl">Czy lang wpływa na SEO
Google rozpoznaje język strony na podstawie widocznej treści, a nie deklaracji w kodzie — atrybut lang nie jest w tym celu wykorzystywany. Nie oznacza to jednak, że jest bez znaczenia dla wyników: dostępność jest częścią jakości strony, a błędna wymowa w czytniku ekranu realnie wyklucza część odbiorców.
Praktyczny wniosek: traktuj lang jako wymóg dostępności, który wykonujesz bez wyjątków, a nie jako dźwignię rankingową.
Najczęstsze błędy
- Brak atrybutu lang na znaczniku <html> — naruszenie WCAG 3.1.1 poziom A.
- Ten sam lang na wszystkich wersjach językowych, bo szablon jest współdzielony i nie odczytuje lokalizacji z adresu.
- Sam region zamiast języka: lang="gb" zamiast lang="en-GB".
- Nieoznaczony dłuższy cytat w innym języku, o ile nie zachodzi wyjątek WCAG 3.1.2.
- Pozostawione <meta http-equiv="content-language"> obok poprawnego atrybutu lang.
Sprawdzenie po zmianie języka
Otwórz każdą wersję językową i sprawdź lang na html oraz wymowę cytatu czytnikiem ekranu. Testuj także nawigację w aplikacji bez pełnego przeładowania: szablon musi zaktualizować język dokumentu.
Tak, jeśli strona ma spełniać WCAG. Kryterium 3.1.1 na poziomie A wymaga programowej deklaracji domyślnego języka strony, a atrybut lang na znaczniku <html> jest sposobem, w jaki się to robi w HTML.
Nie bezpośrednio. Google ustala język strony na podstawie widocznej treści, nie deklaracji w kodzie. Atrybut lang pozostaje jednak wymogiem dostępności i wpływa na to, jak treść odczytuje czytnik ekranu.
Każda wersja potrzebuje poprawnej deklaracji języka dla dostępności. Hreflang może pomóc wyszukiwarce powiązać wersje, ale nie jest wymogiem WCAG i nie zastępuje lang.
Nie. Znacznik <meta http-equiv="content-language"> został usunięty ze standardu HTML i Google go nie używa. Wystarczy atrybut lang na znaczniku <html>.
Dodaj lang na elemencie obejmującym zdanie, np. <span lang="en">Please send the report tomorrow.</span>. WCAG 3.1.2 ma wyjątki dla nazw własnych, terminów technicznych, wyrazów o nieokreślonym języku i zwrotów przyjętych w języku otoczenia.
Źródła i dalsza lektura
- WCAG 2.2 — 3.1.1 Language of Page standard
- HTML Living Standard — the lang attribute standard
- MDN — HTML lang global attribute dokumentacja
- W3C — Understanding Language of Parts dokumentacja