Também disponível em: English · Español · Français · العربية
Gerador e verificador de hreflang
Gere as tags link de um conjunto de páginas traduzidas e confira o conjunto que você já tem contra as regras que os buscadores aplicam de fato.
O que é uma tag hreflang
Quando uma página existe em vários idiomas, cada versão precisa conseguir dizer isso. É essa a tag hreflang: um elemento link que nomeia um idioma e a URL da versão escrita nele. Com o conjunto inteiro em todas as versões, um buscador consegue mostrar a página em português a quem lê português, em vez de adivinhar pelo texto.
O valor é um código de idioma e, opcionalmente, uma região depois. O Google diz sem rodeios: o primeiro código é o idioma no formato ISO 639-1, seguido de um segundo código opcional para a região no formato ISO 3166-1 Alpha 2. Então pt é português em qualquer lugar, pt-BR é português para quem está no Brasil e pt-PT é português para quem está em Portugal. Existe ainda um valor reservado, x-default, para a versão exibida quando nenhuma outra serve.
A regra que quase todo mundo perde é a frase seguinte da mesma documentação: não dá para usar o código de país sozinho. A primeira posição é sempre um idioma. Isso parece formalidade e é o erro mais caro do SEO internacional, por um motivo que dá para medir.
Como usar
- Cole o que você tem, ou digite. Tags link funcionam do jeito que estão, em qualquer ordem de atributos. Uma lista simples com uma linha por versão, código e URL, também funciona, na ordem que preferir.
- Leia a coluna do meio. Ela diz o que cada código significa, não se deu para interpretar. É ali que um código escrito como país aparece sendo o idioma de outra gente.
- Copie o bloco gerado para todas as páginas do conjunto. O mesmo bloco, sem mexer, em todas. Ele lista todas as URLs inclusive a dela mesma, que é justamente o que a autorreferência e os links recíprocos pedem.
O erro que nunca chega aos seus relatórios
Colocar um código de país onde vai um idioma é o erro clássico de hreflang, e quase todo texto trata isso como um erro só. São dois, e só um deles alguém te avisa.
Pegue os 249 códigos de país da ISO 3166-1 e pergunte quais também são códigos de idioma ISO 639-1 válidos. Para 140 a resposta é não: hreflang com jp, cn ou us não é idioma nenhum, então é descartado e o Search Console vai dizer que a tag é inválida. Essa é a metade barulhenta, e acaba sendo corrigida.
Os outros 109 são códigos de idioma. Eles são interpretados. Nada os rejeita, nada os denuncia, e em 75 desses casos o idioma nomeado não tem nada a ver com o país que o autor tinha em mente. Uma página marcada br não é brasileira, é bretã, uma língua do oeste da França. Marcada ca não é canadense, é catalã. Marcada se não é sueca e sim sami setentrional; marcada sv é sueca de verdade, o que é uma pena se você queria El Salvador. Taiwan fica com tw, que é twi, falado em Gana. Chipre fica com cy, que é galês.
Cada uma dessas é uma anotação válida para um público real, então as tags funcionam perfeitamente. Só que descrevem um conjunto de páginas que ninguém pretendia alcançar, e não existe estado de erro para você notar. A metade desse erro que dá para achar é a metade inofensiva.
É para isso que serve a coluna do meio da tabela acima. Esta ferramenta não acusa você de nada quando vê um código sozinho, porque não tem como saber o que você quis dizer: ar é árabe mesmo, e este site publica nesse idioma. Ela apenas diz qual idioma você escreveu, ao lado da URL em que escreveu, e deixa a percepção para a única parte que sabe a resposta.
Limites honestos e como isto foi conferido
Isto roda no seu navegador, então não consegue buscar as outras páginas do seu conjunto para confirmar que elas carregam tags equivalentes. Isso é uma leitura entre origens diferentes e nenhuma ferramenta de cliente pode prometer isso com honestidade. O que ela faz é tirar a necessidade: como o bloco gerado lista todas as URLs inclusive a da própria página, colá-lo sem alterações em todas cumpre as duas regras em que mais se tropeça. O Google é categórico sobre o que acontece quando elas falham. Cada versão precisa listar a si mesma além de todas as outras, e se duas páginas não apontarem uma para a outra as tags são ignoradas.
Duas coisas de propósito não são tratadas como erro. Uma são as maiúsculas: o BCP 47 faz a caixa das subtags não significar nada, então en-us funciona igualzinho a en-US, e ferramentas que marcam isso estão inventando uma regra. Aqui aparece como uma nota sobre a grafia usual, nada além. A outra é uma subtag de escrita de quatro letras como Hant, aceita pelo formato e não conferida contra registro nenhum, porque o formato documentado pelo Google é um idioma e uma região opcional.
As tabelas de idiomas e países não foram digitadas aqui. Elas são geradas a partir dos mesmos dois conjuntos de dados por trás das páginas de códigos ISO 639 e ISO 3166 deste site, então o que este verificador aceita e o que aquelas páginas mostram não têm como divergir. O 75 é uma medição sobre eles: para cada coincidência o CLDR é consultado tanto sobre se aquele país fala aquele idioma quanto sobre se aquele idioma pertence àquele país, e só conta quando as duas respostas são não. Com um teste só sobram três a mais, porque o fijiano é falado mesmo em Fiji, o marshalês nas Ilhas Marshall e o norueguês na Noruega. O motor carrega 761 verificações, entre elas uma varredura confirmando que nenhuma das 109 coincidências levanta erro nem aviso.
Por que é grátis?
Nada aqui precisa de servidor. É uma consulta a duas tabelas e um punhado de regras, tudo rodando na aba que você já tem aberta, então não há custo para repassar nem conta para criar.
O que você colar não é enviado, guardado nem registrado. URLs ainda não publicadas entram numa ferramenta dessas o tempo todo, e isso merece ser dito em vez de presumido.