Konfiguracja SEO wielojęzycznej strony internetowej z użyciem Hugo

Co zrobić z `canonical`, `lang` i `hreflang`

Page content

Przekładanie Twojej strony Hugo może poprawić Twoją pozycję w Google i Bing – ale tylko wtedy, gdy przekładany treść jest wysokiej jakości, lokalizowana i poprawnie zbudowana w celu optymalizacji SEO wielojęzycznej.

Lokalizowane strony (nie tylko przetłumaczone, ale także dopasowane kulturowo) często zmniejszają współczynnik odchodu, zwiększają czas przebywania na stronie i poprawiają konwersje. To są sygnały zachowania użytkownika, które mogą pozytywnie wpłynąć na pozycję w wynikach wyszukiwania.

wiele różnych flag krajowych przed budynkiem administracyjnym

Hugo to generator statycznych stron internetowych. Zasadniczo konwertuje pliki Markdown na strony HTML w bardzo konfigurowalny sposób i jest dość szybki. Szczegóły znajdziesz tutaj Hugo Cheat Sheet, a także zapraszamy do zapoznania się z listą artykułów związanych z Hugiem na dole tej strony.

Główny pytanie: Czy warto przetłumaczyć dla SEO?

Scenariusz Przekład pomaga w SEO? Uwagi
Przekład ręczny + lokalizacja + struktura SEO ✅ Tak, silny korzyść Najlepszy wybór
Wysokiej jakości tłumaczenie AI + edycja + hreflang ✅ Potencjalnie Może uzyskać wysokie pozycje, jeśli jakość jest dobra
Tylko automatyczne tłumaczenie + canonical ❌ Nie Nie będzie indeksowane – używane tylko do UX
Automatyczne tłumaczenie + brak canonical lub hreflang ⚠️ Ryzyko Może wywołać kary za duplikaty

Wymagany HTML dla stron z dosłownym (automatycznym) tłumaczeniem

  1. Każda strona musi mieć atrybut lang w tagu html, np.:
<html lang="de">
  1. Każda strona musi zawierać listę alternatywnych linków dla tej strony w innych językach, np. poniższy kod HTML opisuje alternatywne URL dla tej samej lub podobnej strony w trzech językach:
<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. Każda przetłumaczona strona internetowa musi określić canonical URL dla tej strony (tą z pierwszego języka lub oryginalnej strony), np.:
<link rel="canonical" href="https://www.glukhov.org/post/2025/10/multi-language-website-seo-with-hugo/">

To poinformuje wyszukiwarki, by pomijały indeksowanie stron niekanonicznych. Niektóre wyszukiwarki mogą jednak zignorować to i indeksować wszystkie strony.

Dla profesjonalnie / ręcznie przetłumaczonych stron internetowych

Nie podawanie <link rel="canonical" może spowodować, że wyszukiwarki nałożyć kary za duplikaty. Ale jeśli przetłumaczysz ręcznie swoje strony internetowe, lub zamówisz profesjonalne tłumaczenie, możesz mieć nadzieję, że wyszukiwarki zaakceptują Twoją stronę niekanoniczną jako oryginalną.

Szablony Hugo dla lokalizowanych stron internetowych

Należy pamiętać, że szablon strony Hugo może już wspierać wszystko powyżej.

<html lang=…

Otwórz plik layouts/_default/baseof.html w folderze Twojej strony Hugo lub w folderze szablonu i upewnij się, że znajduje się coś takiego:

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

Teraz otwórz plik layouts/partials/seo-localise.html i wstaw tam poniższy kod szablonu HTML:

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

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

{{ end }}

<!-- Canonical URL -->
<link rel="canonical" href="{{ $canonical }}">

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

Jeśli przetłumaczysz swoją stronę ręcznie, ten kod może wyglądać tak:

{{ $canonical := .Permalink }}

<!-- Canonical URL -->
<link rel="canonical" href="{{ $canonical }}">

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

config.toml

W swoim pliku config.toml upewnij się, że ustawiono:

# konfiguracja języków na stronie

defaultContentLanguage = "en"

[languages]
  [languages.en]
    weight = 1
    languageName = "English"

  [languages.es]
    weight = 2
    languageName = "Español"

  [languages.fr]
    weight = 3
    languageName = "Français"

Dostosuj powyższe ustawienia w zależności od języków używanych na Twojej stronie.

Teraz uruchom polecenie hugo, aby wygenerować stronę internetową, a następnie hugo serve, aby uruchomić lokalny serwer deweloperski, otwórz stronę i sprawdź źródło strony. Upewnij się, że wszystkie te tagi <html> i <link> mają odpowiednie atrybuty.

Przydatne linki: Generator statycznych stron internetowych Hugo

Przydatne linki: Markdown