Przejdź do treści
Dostępność

Atrybut lang

Opublikowano:
Aktualizacja:

Atrybut lang to globalny atrybut HTML, który deklaruje język treści. Na znaczniku <html> opisuje język całego dokumentu (html lang), a na dowolnym elemencie — język fragmentu. Wartością jest tag języka według BCP 47: pl, en, en-GB, pt-BR.

To przede wszystkim wymóg dostępności, a nie sygnał SEO. Czytnik ekranu wybiera na jego podstawie profil wymowy: tekst polski przeczytany angielskim głosem jest w praktyce niezrozumiały. Z atrybutu korzystają też mechanizmy dzielenia wyrazów, sprawdzanie pisowni i propozycja tłumaczenia w przeglądarce.

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.

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.

Deklaracja języka dokumentu i fragmentu
HTML
<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ą.

Nie stosuj
HTML
<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.

Źródła i dalsza lektura

Sprawdź dostępność swojej strony

Insight analizuje publiczne sygnały dostępności, w tym deklarację języka dokumentu, i układa znaleziska według priorytetu.