Sobre este problema HTML
Nas práticas antigas de HTML, os programadores por vezes usavam <meta http-equiv="Content-Language" content="en"> dentro do <head> para declarar o idioma principal do documento. O HTML living standard agora marca isto como obsoleto porque era uma forma não confiável e indireta de comunicar informação de idioma. Tentava espelhar um cabeçalho HTTP em vez de ser uma verdadeira parte da estrutura do documento, e o seu comportamento foi implementado de forma inconsistente nos browsers.
O atributo lang no elemento <html> é a abordagem moderna correta. Associa diretamente o idioma com a árvore DOM do documento, o que tem vários benefícios importantes:
-
Acessibilidade: Os leitores de ecrã dependem do atributo
langpara selecionar as regras de pronúncia corretas e o perfil de voz. Sem ele, a tecnologia assistiva pode pronunciar incorretamente o conteúdo ou recorrer a um idioma padrão que não corresponde ao texto. -
Comportamento do browser: Os browsers usam o atributo
langpara tomar decisões sobre hifenização, seleção de fontes, estilo de aspas, verificação ortográfica e outras renderizações sensíveis ao idioma. - Motores de busca: Declarar o idioma ajuda os motores de busca a indexar e servir conteúdo ao público apropriado.
-
Direcionamento CSS: O seletor pseudo-classe
:lang()funciona baseado no atributolang, permitindo estilização específica por idioma.
O atributo lang também suporta declarações de idioma granulares ao nível do elemento. Se a sua página está principalmente em inglês mas contém uma citação em francês, pode definir lang="fr" nesse elemento específico — algo que a abordagem <meta> nunca conseguiu fazer.
Exemplos
Incorreto: usar a meta tag obsoleta
Isto dispara o aviso de validação do W3C porque <meta http-equiv="Content-Language"> está obsoleto para especificar o idioma do documento.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Language" content="en">
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Correto: usar o atributo lang no <html>
Remova a tag <meta http-equiv="Content-Language"> e adicione o atributo lang ao elemento <html> em vez disso.
<!DOCTYPE html>
<html lang="en">
<head>
<title>My Page</title>
</head>
<body>
<p>Hello, world!</p>
</body>
</html>
Correto: conteúdo multilingue
Use o atributo lang no elemento raiz para o idioma principal, depois substitua-o em elementos específicos conforme necessário.
<!DOCTYPE html>
<html lang="en">
<head>
<title>Multilingual Page</title>
</head>
<body>
<p>The French word for hello is <span lang="fr">bonjour</span>.</p>
<blockquote lang="de">
<p>Die Grenzen meiner Sprache bedeuten die Grenzen meiner Welt.</p>
</blockquote>
</body>
</html>
Códigos de idioma comuns
Use uma tag de idioma BCP 47 válida como valor do atributo lang. Aqui estão alguns códigos frequentemente usados:
| Código | Idioma |
|---|---|
en |
Inglês |
fr |
Francês |
de |
Alemão |
es |
Espanhol |
pt-BR |
Português Brasileiro |
zh-Hans |
Chinês Simplificado |
ja |
Japonês |
A correção é direta: remova quaisquer tags <meta http-equiv="Content-Language"> do seu <head> e certifique-se de que o seu elemento <html> inclui um atributo lang com o código de idioma apropriado. Esta única alteração resolve o aviso de validação enquanto melhora a acessibilidade, renderização e conformidade com padrões do seu documento.
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.