Przekazywanie Google informacji o zlokalizowanych wersjach strony

Jeśli masz wiele wersji strony dla różnych języków lub regionów, przekaż Google informacje na ten temat. Dzięki temu wyszukiwarka Google skieruje użytkowników do najodpowiedniejszej wersji strony na podstawie języka lub regionu.

Nawet jeśli nie podejmiesz żadnych działań, Google nadal będzie w stanie znaleźć alternatywną wersję językową strony. Zazwyczaj jednak najlepszym rozwiązaniem jest wyraźne wskazanie stron w określonych językach lub przeznaczonych dla konkretnych regionów.

Przykładowe sytuacje, w których zalecamy wskazanie alternatywnych wersji stron:

  • Prezentujesz główną treść w jednym języku, a tłumaczysz tylko szablon, np. elementy nawigacyjne i stopkę. Jest to typowa sytuacja w przypadku stron z treściami użytkowników, takimi jak posty.
  • Materiały na Twojej stronie charakteryzują niewielkie różnice regionalne, a treści w obrębie jednego języka są podobne. Na przykład możesz mieć treści w języku angielskim skierowane do użytkowników z USA, Wielkiej Brytanii i Irlandii.
  • Zawartość Twojej witryny jest w całości przetłumaczona na wiele języków. Na przykład masz niemiecką i angielską wersję każdej strony.

Zlokalizowane wersje strony są uznawane za duplikaty tylko wtedy, gdy główna treść strony pozostaje nieprzetłumaczona.

Metody wskazywania stron alternatywnych

Wielojęzyczne lub multiregionalne wersje strony możesz wskazać Google na 3 sposoby:

Wytyczne dotyczące wszystkich metod

  • Każda wersja językowa musi uwzględniać siebie oraz wszystkie inne wersje językowe.
  • Alternatywne adresy URL muszą być pełne i muszą obejmować metodę przesyłania (http/https), czyli na przykład:
    https://example.com/foo, a nie //example.com/foo ani /foo
  • Alternatywne adresy URL nie muszą należeć do tej samej domeny.
  • Jeśli masz kilka różnych adresów URL w tym samym języku, lecz przeznaczonych dla różnych regionów, warto stworzyć jeden adres typu catch-all dla użytkowników z nieokreślonych lokalizacji. Możesz na przykład przygotować osobne adresy URL dla anglojęzycznych użytkowników z Irlandii (en-ie), Kanady (en-ca) i Australii (en-au), a innych użytkowników, np. z USA, Wielkiej Brytanii i wszystkich pozostałych lokalizacji anglojęzycznych, kierować na ogólną angielską wersję strony (en). Może to być jedna z określonych wersji strony.
  • Jeśli dwie strony nie wskazują na siebie nawzajem, tagi zostaną zignorowane. Dzięki temu nikt nie może w innej witrynie utworzyć tagu wskazującego na dowolną stronę jako alternatywną wersję jednej z Twoich stron.
  • Jeśli utrzymanie pełnego zestawu dwukierunkowych linków dotyczących poszczególnych języków zaczyna sprawiać trudności, możesz część z nich pominąć na niektórych stronach. Google przetworzy te, które wskazują wzajemnie na siebie. Pamiętaj jednak o dwukierunkowym powiązaniu stron utworzonych w nieobsługiwanych wcześniej językach z oryginalną/przeważającą wersją językową. Jeśli na przykład językiem oryginalnej strony jest francuski, a jej adresy URL występują w domenie .fr, to w takim przypadku konieczne jest dwukierunkowe powiązanie nowszych stron w wersji meksykańskiej (.mx) i hiszpańskiej (.es) z dominującą wersją w domenie .fr zamiast dwukierunkowego łączenia ze sobą nowych stron napisanych w odmianach języka hiszpańskiego (.mx.es).
  • Warto dodać stronę zastępczą na potrzeby języków bez dopasowania, szczególnie w przypadku stron głównych z możliwością wyboru wersji językowej / kraju lub automatycznym przekierowaniem. Użyj wartości x-default:
    <link rel="alternate" href="http://example.com/" hreflang="x-default" />

Tagi HTML

Dodaj elementy <link rel="alternate" hreflang="lang_code"... > w nagłówku strony, by wskazać Google wszystkie jej wersje językowe i regionalne. Jest to przydatne rozwiązanie, jeśli nie masz mapy witryny ani możliwości określenia nagłówków odpowiedzi HTTP w swojej witrynie.

W przypadku każdego wariantu strony uwzględnij zestaw elementów <link> w elemencie <head> – po 1 linku dla każdego wariantu, w tym samej strony. Zestaw linków jest identyczny dla każdej wersji strony. Zobacz dodatkowe wytyczne

Oto składnia poszczególnych elementów link:

<link rel="alternate" hreflang="lang_code" href="url_of_page" />
Składnia
lang_code Obsługiwany kod języka/regionu, na który jest kierowana określona wersja strony, lub parametr x-default odpowiadający każdemu językowi, który nie jest wyraźnie wymieniony w tagu hreflang na stronie.
url_of_page Pełny URL konkretnej wersji strony w danym języku lub przeznaczonej do wyświetlania w określonym regionie.

Przykład

Firma Example Widgets, Inc. ma witrynę przeznaczoną dla użytkowników ze Stanów Zjednoczonych, Wielkiej Brytanii i Niemiec. Następujące adresy URL zawierają zasadniczo tę samą treść, ale z pewnymi regionalnymi różnicami:

Adresy URL z odmianami regionalnymi
http://en.example.com/page.html Ogólna strona główna w języku angielskim, która zawiera informacje o opłatach za dostawę międzynarodową ze Stanów Zjednoczonych.
http://en-gb.example.com/page.html Brytyjska strona główna z cenami w funtach.
http://en-us.example.com/page.html Amerykańska strona główna z cenami w dolarach amerykańskich.
http://de.example.com/page.html Strona główna w języku niemieckim.
http://www.example.com/ Strona domyślna bez określonego języka i regionu. Zawiera selektory umożliwiające wybór tych opcji.

Zauważ, że do określania docelowych odbiorców strony Google nie używa subdomen w określonych językach (en, en-gb, en-us, de) zawartych w tych adresach URL. Musisz dokładnie zmapować tych docelowych odbiorców.

Poniżej przedstawiamy kod HTML, który powinien znajdować się w sekcji <head> na wszystkich stronach wymienionych powyżej. Skieruje on użytkowników anglojęzycznych z USA i Wielkiej Brytanii oraz użytkowników niemieckojęzycznych na zlokalizowane strony, a wszystkich pozostałych odbiorców odeśle na ogólną stronę główną. Wyszukiwarka Google zwróci wynik odpowiedni dla użytkownika na podstawie ustawień przeglądarki.

<head>
 <title>Widgets, Inc</title>
  <link rel="alternate" hreflang="en-gb"
       href="http://en-gb.example.com/page.html" />
  <link rel="alternate" hreflang="en-us"
       href="http://en-us.example.com/page.html" />
  <link rel="alternate" hreflang="en"
       href="http://en.example.com/page.html" />
  <link rel="alternate" hreflang="de"
       href="http://de.example.com/page.html" />
 <link rel="alternate" hreflang="x-default"
       href="http://www.example.com/" />
</head>

Nagłówki HTTP

Możesz zwrócić nagłówek HTTP razem z odpowiedzią GET strony, by przekazać Google informacje o wszystkich jej wersjach językowych i regionalnych. Jest to przydatne w przypadku plików w formacie innym niż HTML (np. PDF).

Oto format nagłówka:

Link: <url1>; rel="alternate"; hreflang="lang_code_1", <url2>; rel="alternate"; hreflang="lang_code_2", ...
Składnia
<url_x> Pełny adres URL strony alternatywnej, która odpowiada ciągowi ustawień regionalnych przypisanemu do powiązanego atrybutu hreflang. Adres URL musi zawierać otaczające go znaczniki <>. Przykład: <https://www.google.com>
lang_code_x Obsługiwany kod języka/regionu, na który jest kierowana określona wersja strony, lub parametr x-default odpowiadający każdemu językowi, który nie jest wyraźnie wymieniony w tagu hreflang na stronie.

Musisz określić zestaw parametrów <url>rel="alternate" oraz wartości hreflang dla każdej wersji strony, łącznie z wersją żądaną. Trzeba je rozdzielić przecinkami jak w poniższym przykładzie. Nagłówki Link: zwracane w przypadku poszczególnych wersji strony są identyczne. Zobacz dodatkowe wytyczne

Przykład

Oto przykład nagłówka Link: zwracanego przez witrynę zawierającą 3 wersje pliku PDF: jedną dla użytkowników anglojęzycznych, jedną dla użytkowników niemieckojęzycznych ze Szwajcarii i jedną dla wszystkich pozostałych użytkowników niemieckojęzycznych:

Link: <http://example.com/file.pdf>; rel="alternate"; hreflang="en",
      <http://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch",
      <http://de.example.com/file.pdf>; rel="alternate"; hreflang="de"

Mapa witryny

Aby wskazać Google wszystkie warianty językowe i regionalne poszczególnych adresów URL, możesz użyć mapy witryny. W tym celu dodaj element <loc> określający pojedynczy adres URL z wpisami podrzędnymi <xhtml:link> definiującymi poszczególne wersje językowe lub regionalne strony łącznie z wersją, w której dodajesz wpisy. Jeśli więc masz 3 wersje strony, Twoja mapa witryny będzie zawierała 3 wpisy – każdy z 3 identycznymi wpisami podrzędnymi.

Reguły dotyczące mapy witryny:

  • Określ przestrzeń nazw xhtml w ten sposób:
    xmlns:xhtml="http://www.w3.org/1999/xhtml"
  • Utwórz osobny element <url> na potrzeby każdego adresu URL.
  • Każdy element <url> musi zawierać element podrzędny <loc> wskazujący adres URL strony.
  • Każdy element <url> musi zawierać element podrzędny <xhtml:link rel="alternate" hreflang="supported_language-code"> zawierający wszystkie alternatywne wersje strony, łącznie z wersją, w której dodajesz te elementy. Kolejność elementów podrzędnych <xhtml:link> nie ma znaczenia, ale warto jej nie zmieniać, by ułatwić wykrywanie błędów.
  • Zobacz dodatkowe wytyczne

Przykład

To jest przykład strony anglojęzycznej przeznaczonej dla użytkowników z całego świata mówiących po angielsku. Ma ona równoważne wersje przeznaczone dla użytkowników z całego świata mówiących po niemiecku oraz użytkowników niemieckojęzycznych ze Szwajcarii. W witrynie znajdą się wszystkie te adresy URL:

  • www.example.com/english/page.html kierowany na użytkowników anglojęzycznych,
  • www.example.com/deutsch/page.html kierowany na użytkowników niemieckojęzycznych,
  • www.example.com/schweiz-deutsch/page.html kierowany na użytkowników niemieckojęzycznych w Szwajcarii.

Mapa witryny obejmująca te 3 strony wygląda tak:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">
  <url>
    <loc>http://www.example.com/english/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
  <url>
    <loc>http://www.example.com/schweiz-deutsch/page.html</loc>
    <xhtml:link
               rel="alternate"
               hreflang="de"
               href="http://www.example.com/deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="de-ch"
               href="http://www.example.com/schweiz-deutsch/page.html"/>
    <xhtml:link
               rel="alternate"
               hreflang="en"
               href="http://www.example.com/english/page.html"/>
  </url>
</urlset>

Obsługiwane kody języków/regionów

Wartość atrybutu hreflang wskazuje język (w formacie ISO 639-1) oraz opcjonalnie region (w formacie ISO 3166-1 alfa 2) alternatywnego adresu URL. Jeśli określono tylko 1 kod, Google zakłada, że jest to kod języka. Język nie musi być powiązany z regionem, np.:

  • de: materiały w języku niemieckim, niezależnie od regionu;
  • en-GB: materiały w języku angielskim dla użytkowników z Wielkiej Brytanii;
  • de-ES: materiały w języku niemieckim dla użytkowników z Hiszpanii.

W przypadku różnic w rodzajach pisma używanych przez dany język właściwy rodzaj pisma jest wybierany na podstawie kraju. Na przykład użycie kodu zh-TW na stronie przeznaczonej dla użytkowników na Tajwanie spowoduje automatyczny wybór pisma chińskiego (w tym przypadku tradycyjnego). Możesz również wyraźnie określić alfabet w formacie ISO 15924, na przykład:

  • zh-Hant: chiński (tradycyjny),
  • zh-Hans: chiński (uproszczony).

Możesz też określić kombinację pisma i regionu, na przykład użyć wartości zh-Hans-TW, wskazując materiały dla użytkowników z Tajwanu, które zostały zapisane pismem chińskim uproszczonym.

Użycie tagu x-default dla niedopasowanych języków

Zarezerwowana wartość hreflang="x-default" jest wykorzystywana wtedy, gdy żaden język ani region nie odpowiada ustawieniom przeglądarki użytkownika. Jest to wartość opcjonalna, ale zalecana jako sposób kontrolowania strony, gdy nie można dopasować żadnych języków. Warto ustawić kierowanie na stronę główną witryny z interaktywną mapą, która umożliwia wybór kraju użytkownika.

W przypadku wartości x-default nie trzeba określać kodu języka. Strona jest kierowana do użytkowników, których ustawienia języka nie są zgodne z Twoją witryną, więc język strony nie ma znaczenia.

Rozwiązywanie problemów

Typowe błędy

Oto najczęstsze błędy związane z użyciem parametru hreflang:

  • Brak linków zwrotnych: jeśli strona X zawiera link do strony Y, strona Y musi zawierać link zwrotny do strony X. Jeśli nie wszystkie strony wykorzystujące adnotacje hreflang są zgodne z tą zasadą, adnotacje mogą zostać zignorowane lub zinterpretowane nieprawidłowo.
  • Nieprawidłowe kody języka: upewnij się, że wszystkie używane kody języka wskazują język (w formacie ISO 639-1), a opcjonalnie także region (w formacie ISO 3166-1 alfa 2) alternatywnego adresu URL. Określenie jedynie regionu jest nieprawidłowe.

Debugowanie błędów w tagu hreflang

Do rozwiązywania typowych problemów możesz wykorzystać raport Kierowanie międzynarodowe. Pamiętaj, by dać Google czas na zindeksowanie Twoich stron. Następnie otwórz kartę Język w raporcie i sprawdź, czy nie zostały wykryte jakieś błędy.

Dostępnych jest też wiele narzędzi innych firm. Oto kilka najpopularniejszych. Google ich nie obsługuje ani nie sprawdza.