Sobre este problema HTML
O atributo lang no elemento <html> declara o idioma principal do documento. O validador W3C usa heurísticas para analisar o conteúdo de texto da sua página, e quando deteta uma incompatibilidade entre o idioma declarado e o idioma aparente, emite este aviso. Por exemplo, se o conteúdo da sua página está escrito em inglês mas lang="fr" (francês) está definido, o validador sinalizará esta inconsistência.
Porque isto é importante
O atributo lang desempenha um papel crítico em várias áreas:
-
Acessibilidade: Os leitores de ecrã usam o atributo
langpara selecionar as regras de pronúncia corretas e o perfil de voz. Se uma página está escrita em inglês mas declara francês, um leitor de ecrã pode tentar ler o conteúdo com pronúncia francesa, tornando-o ininteligível para o utilizador. -
Motores de busca: Os motores de busca usam o atributo
langpara entender em que idioma está uma página, o que afeta como a página é indexada e servida nos resultados de pesquisa para diferentes regiões. -
Funcionalidades do browser: Os browsers dependem do atributo
langpara prompts de tradução incorporados, verificação ortográfica, hifenização e seleção de fontes. Um valor incorreto pode causar comportamento inesperado em todas estas áreas.
Como corrigir
- Identifique o idioma principal do seu conteúdo. Observe o texto real na sua página — em que idioma está escrita a maioria dele?
-
Atualize o atributo
langpara a etiqueta de idioma BCP 47 correta para esse idioma (ex:enpara inglês,frpara francês,espara espanhol). -
Se o atributo
langjá estiver correto e a heurística do validador estiver errada (ex: a sua página genuinamente está noutro idioma mas contém algum texto em inglês ou código), pode ignorar este aviso com segurança.
Para páginas com conteúdo em idiomas mistos, defina o atributo lang no <html> para o idioma principal, depois use atributos lang em elementos específicos para marcar seções noutros idiomas.
Exemplos
❌ Incorreto: O conteúdo está em inglês mas lang declara francês
<!DOCTYPE html>
<html lang="fr">
<head>
<title>My Website</title>
</head>
<body>
<h1>Welcome to my website</h1>
<p>This is an English paragraph about web development.</p>
</body>
</html>
O validador deteta que o conteúdo está em inglês, mas lang="fr" diz que está em francês.
✅ Corrigido: O atributo lang corresponde ao idioma do conteúdo
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Website</title>
</head>
<body>
<h1>Welcome to my website</h1>
<p>This is an English paragraph about web development.</p>
</body>
</html>
✅ Conteúdo em idiomas mistos com atributos lang adequados
Se a sua página é principalmente em inglês mas contém seções noutro idioma, defina o idioma do documento como en e anote as seções em idioma estrangeiro individualmente:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Language Examples</title>
</head>
<body>
<h1>Welcome</h1>
<p>This page is mostly in English.</p>
<blockquote lang="fr">
<p>Ceci est une citation en français.</p>
</blockquote>
</body>
</html>
Esta abordagem garante que os leitores de ecrã mudam a pronúncia apenas para o <blockquote> francês, enquanto o resto da página é lido corretamente como 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.
Saiba mais: