Sobre este problema HTML
O atributo lang no elemento <html> informa os navegadores, motores de busca e tecnologias assistivas sobre o idioma em que o conteúdo da página está escrito. O validador usa análise heurística do texto atual na página para detetar o idioma provável e, quando há uma discrepância, assinala a diferença.
Por que isto é importante
Um atributo lang incorreto causa problemas reais para utilizadores e sistemas que dependem dele:
-
Leitores de ecrã usam o atributo
langpara selecionar o motor de pronúncia correto. Um documento francês marcado como inglês será lido em voz alta com regras de pronúncia inglesas, tornando-o incompreensível. - Motores de busca usam a declaração de idioma para indexação e para servir resultados a utilizadores que pesquisam num idioma específico.
- Funcionalidades do navegador como avisos de tradução automática e verificação ortográfica dependem do idioma declarado.
- Regras de hifenização e tipográficas em CSS também dependem da declaração correta do idioma.
Causas comuns
-
Copiar-colar um modelo base — Começar a partir de um modelo em inglês mas escrever conteúdo noutro idioma sem atualizar o
lang. -
Sites multilingues — Usar o mesmo modelo base para todas as versões de idioma sem definir dinamicamente o valor de
lang. -
Subtag de idioma incorreta — Usar a tag de idioma BCP 47 errada (ex:
lang="en"em vez delang="de"para conteúdo alemão).
Quando pode ignorar este aviso em segurança
Este é um aviso, não um erro. A deteção de idioma do validador é heurística e nem sempre precisa. Pode ignorá-la em segurança se:
- A sua página contém muito pouco texto, tornando a deteção pouco confiável.
-
A página tem quantidades significativas de conteúdo em múltiplos idiomas, mas o atributo
langreflete corretamente o idioma principal. - O idioma detetado está simplesmente errado (ex: trechos curtos de texto podem confundir o detetor).
Se tem confiança de que o atributo lang está correto, pode ignorar o aviso.
Como corrigir
Identifique o idioma principal do conteúdo do seu documento e defina o atributo lang para a tag de idioma BCP 47 apropriada. Tags comuns incluem en (inglês), fr (francês), de (alemão), es (espanhol), pt (português), ja (japonês) e zh (chinês).
Exemplos
Incorreto: conteúdo em francês, mas lang definido para inglês
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Mon site</title>
</head>
<body>
<h1>Bienvenue sur notre site</h1>
<p>Nous sommes ravis de vous accueillir sur notre plateforme.</p>
</body>
</html>
Isto desencadeia o aviso porque o validador deteta conteúdo francês mas vê lang="en".
Corrigido: o atributo lang corresponde ao idioma do conteúdo
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Mon site</title>
</head>
<body>
<h1>Bienvenue sur notre site</h1>
<p>Nous sommes ravis de vous accueillir sur notre plateforme.</p>
</body>
</html>
Lidar com conteúdo multilingue
Se a sua página é principalmente num idioma mas contém secções noutro, defina o atributo lang no elemento <html> para o idioma principal e use lang em elementos específicos para o outro idioma:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Our Global Site</title>
</head>
<body>
<h1>Welcome to our site</h1>
<p>We are glad you are here.</p>
<blockquote lang="fr">
<p>La vie est belle.</p>
</blockquote>
</body>
</html>
Isto informa as tecnologias assistivas de que a página está em inglês, mas a citação deve ser lida usando regras de pronúncia francesas. O validador não deve assinalar isto como uma discrepância porque a maioria do conteúdo está em inglês.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.