Sobre este problema HTML
O atributo lang no elemento <html> declara o idioma principal do conteúdo do documento. Quando este atributo é deixado vazio (lang=""), efetivamente indica aos navegadores e tecnologias assistivas que o idioma é desconhecido ou intencionalmente não especificado — o que quase nunca é o que você pretende.
Isto é importante por várias razões importantes:
-
Acessibilidade: Os leitores de ecrã dependem do atributo
langpara selecionar o motor de pronúncia correto. Um valor vazio pode fazer com que um leitor de ecrã recorra a um idioma predefinido, potencialmente lendo texto em inglês com regras de pronúncia incorretas. -
Motores de busca: Os motores de busca usam o atributo
langpara compreender em que idioma está o seu conteúdo, o que ajuda a servir as suas páginas ao público certo. - Funcionalidades do navegador: Os navegadores usam a declaração de idioma para hifenização, verificação ortográfica, seleção de tipos de letra e outras decisões de renderização sensíveis ao idioma.
-
Conformidade com padrões: O padrão WHATWG HTML living standard especifica que se o atributo
langestiver presente, o seu valor deve ser uma tag de idioma BCP 47 válida. Uma string vazia não é uma tag de idioma válida.
A correção é direta: defina o atributo lang para uma tag de idioma BCP 47 válida que corresponda ao seu conteúdo. Para inglês, valores comuns incluem en (inglês geral), en-US (inglês americano), ou en-GB (inglês britânico). Se o seu conteúdo estiver noutro idioma, use a tag apropriada (p.ex., fr para francês, de para alemão, ja para japonês).
Exemplos
❌ Atributo lang vazio (desencadeia o aviso)
<!DOCTYPE html>
<html lang="">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
</body>
</html>
❌ Atributo lang completamente em falta
Embora um atributo lang em falta desencadeie um aviso diferente, causa o mesmo problema subjacente — nenhum idioma é declarado:
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
</body>
</html>
✅ Correto: especificar o idioma
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
</body>
</html>
✅ Correto: usar uma variante regional
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>My Page</title>
</head>
<body>
<h1>Welcome to my website</h1>
</body>
</html>
Usar lang para conteúdo multilingue
Se o seu documento está principalmente em inglês mas contém seções noutros idiomas, defina lang="en" no elemento <html> e substitua-o em elementos específicos:
<!DOCTYPE html>
<html lang="en">
<head>
<title>Multilingual Page</title>
</head>
<body>
<h1>Welcome</h1>
<p>This page contains a quote in French:</p>
<blockquote lang="fr">
<p>La vie est belle.</p>
</blockquote>
</body>
</html>
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: