Configurando SEO de Site Multilíngue com Hugo

O que fazer com `canonical`, `lang` e `hreflang`

Conteúdo da página

Traduzir seu site Hugo pode melhorar seu ranqueamento no Google e no Bing - mas apenas se o conteúdo traduzido for de alta qualidade, localizado e estruturado corretamente para SEO multilíngue.

Páginas localizadas (não apenas traduzidas, mas adaptadas culturalmente) frequentemente reduzem as taxas de saída, aumentam o tempo no site e melhoram as conversões. Esses são sinais de comportamento dos usuários que podem positivamente afetar seus ranqueamentos de SEO.

muitas bandeiras de diferentes países em frente a um prédio administrativo

Hugo é um gerador de sites estáticos. Essencialmente, ele converte os arquivos Markdown em páginas HTML de uma maneira muito configurável e é bastante rápido. Para mais detalhes, veja aqui Hugo Cheat Sheet, você também é bem-vindo a explorar a lista de artigos relacionados a Hugo no final desta página.

Pergunta principal: Devo traduzir para SEO?

Cenário Tradução ajuda o SEO? Notas
Tradução humana + localizada + estruturada para SEO ✅ Sim, benefício forte Melhor opção
Tradução de alta qualidade com IA + edição + hreflang ✅ Potencialmente Pode ranquear se a qualidade for boa
Tradução automática apenas + canonical ❌ Não Não vai ranquear — usado apenas para UX
Tradução automática + nenhum canonical ou hreflang ⚠️ Risco Pode desencadear penalidades por duplicidade

HTML necessário para sites com traduções literais (automatizadas)

  1. Cada página deve ter o atributo lang na tag html, por exemplo:
<html lang="de">
  1. Cada página deve ter uma lista de links alternativos para esta página em outros idiomas, por exemplo, o HTML abaixo descreve URLs alternativas para a mesma ou uma página semelhante em três idiomas:
<link rel="alternate" hreflang="en" href="https://www.glukhov.org/post/2025/10/multi-language-website-seo-with-hugo/">
<link rel="alternate" hreflang="de" href="https://www.glukhov.org/de/post/2025/10/multi-language-website-seo-with-hugo/">
<link rel="alternate" hreflang="ru" href="https://www.glukhov.org/ru/post/2025/10/multi-language-website-seo-with-hugo/">
  1. Cada página do site traduzida deve especificar a URL canonical para esta página (a do primeiro idioma ou da página original), como:
<link rel="canonical" href="https://www.glukhov.org/post/2025/10/multi-language-website-seo-with-hugo/">

Isso informará aos motores de busca para ignorar o indexação de páginas não canônicas. Alguns motores de busca, claro, podem ignorar isso e indexar todas as páginas.

Para páginas da web traduzidas profissionalmente / manualmente

Não especificar <link rel="canonical" pode causar aos motores de busca impor penalidades por duplicidade. Mas, se você fizer a tradução manual de suas páginas do site ou encomendar uma profissional, você pode esperar que os motores de busca aceitem sua página não canônica como original.

Modelos Hugo para sites localizados

Devemos ter em mente que o tema do site Hugo pode estar suportando tudo isso já.

<html lang=…

Abra o arquivo layouts/_default/baseof.html no seu diretório do site Hugo ou no diretório do tema e certifique-se de que há algo como:

<!DOCTYPE html>
<html class="no-js" lang="{{ .Site.Language.Lang }}">
<head>
...
	{{ partial "seo-localise.html" . }}	
</head>
...

Agora abra o arquivo layouts/partials/seo-localise.html e coloque este código de modelo HTML:

{{ $defaultLang := .Site.Params.defaultContentLanguage | default "en" }}
{{ $canonical := .Permalink }}

{{ if .IsTranslated }}
  {{ $original := .Translations.GetByLang $defaultLang }}
  {{ if $original }}
    {{ $canonical = $original.Permalink }}
  {{ end }}

{{ end }}

<!-- URL Canônica -->
<link rel="canonical" href="{{ $canonical }}">

<!-- Tags de Alternativas hreflang -->
{{ range .AllTranslations }}
    <link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
{{ end }}

Se você traduzir seu site manualmente, esse código pode parecer com:

{{ $canonical := .Permalink }}

<!-- URL Canônica -->
<link rel="canonical" href="{{ $canonical }}">

<!-- Tags de Alternativas hreflang -->
{{ range .AllTranslations }}
    <link rel="alternate" hreflang="{{ .Lang }}" href="{{ .Permalink }}">
{{ end }}

config.toml

No seu config.toml, certifique-se de definir:

# configure languages on your website

defaultContentLanguage = "en"

[languages]
  [languages.en]
    weight = 1
    languageName = "Inglês"

  [languages.es]
    weight = 2
    languageName = "Espanhol"

  [languages.fr]
    weight = 3
    languageName = "Francês"

Ajuste o acima com base nos idiomas do seu site.

Agora execute o comando hugo para gerar um site, depois hugo serve para executar o servidor de desenvolvimento, abra o site e veja o código-fonte da página. Certifique-se de que todos esses tags <html> e <link> tenham atributos apropriados.