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:
Te 3 metody są równoważne z perspektywy Google. Możesz wybrać metodę, która najlepiej pasuje do Twojej witryny. Wszystkie te 3 metody możesz stosować jednocześnie, ale w wyszukiwarce nie daje to żadnych korzyści (w rzeczywistości zarządzanie 3 implementacjami może okazać się znacznie trudniejsze niż 1).
Użyj hreflang
, by poinformować Google o odmianach Twoich treści. Dzięki temu będziemy wiedzieć, że te strony zawierają zlokalizowane wersje tych samych treści. Google nie używa tagu hreflang
ani atrybutu HTML lang
do wykrywania języka strony. Aby określić język, używamy algorytmów.
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 jednoznaczne, a także muszą obejmować metodę przesyłania (http/https), czyli na przykład:
https://example.com/foo
, a nie//example.com/foo
czy/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, ale przeznaczonych dla różnych regionów, warto utworzyć 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 anglojęzycznych użytkowników z Wielkiej Brytanii, Stanów Zjednoczonych oraz pozostałych lokalizacji 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
i.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="https://example.com/" hreflang="x-default" />
Tagi HTML
Dodaj elementy <link rel="alternate" hreflang="lang_code"... >
w nagłówku strony, aby wskazać Google wszystkie jej wersje językowe i regionalne. Takie rozwiązanie jest przydatne, jeśli nie masz mapy witryny ani możliwości określenia w swojej witrynie nagłówków odpowiedzi HTTP.
W przypadku każdej wersji strony uwzględnij zestaw elementów <link>
w elemencie <head>
– po 1 linku dla każdej wersji, w tym dla danej 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. |
Tagi <link>
muszą znajdować się w
dobrze skonstruowanej sekcji <head>
kodu HTML. Jeśli masz wątpliwości, wklej kod z renderowanej strony do narzędzia do sprawdzania stron HTML, aby upewnić się, że linki są umieszczone wewnątrz elementu <head>
. Poza tym nie łącz tagów link
do alternatywnej reprezentacji dokumentu; na przykład nie łącz adnotacji hreflang
z innymi atrybutami, takimi jak media
, w jednym tagu <link>
.
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 | |
---|---|
https://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. |
https://en-gb.example.com/page.html |
Brytyjska strona główna z cenami w funtach. |
https://en-us.example.com/page.html |
Amerykańska strona główna z cenami w dolarach amerykańskich. |
https://de.example.com/page.html |
Strona główna w języku niemieckim. |
https://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 widać kod HTML, który powinien znajdować się w sekcji <head>
na wszystkich stronach wymienionych w tabeli adresów URL z odmianami regionalnymi. 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="https://en-gb.example.com/page.html" /> <link rel="alternate" hreflang="en-us" href="https://en-us.example.com/page.html" /> <link rel="alternate" hreflang="en" href="https://en.example.com/page.html" /> <link rel="alternate" hreflang="de" href="https://de.example.com/page.html" /> <link rel="alternate" hreflang="x-default" href="https://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 < i > . 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>
i 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: <https://example.com/file.pdf>; rel="alternate"; hreflang="en", <https://de-ch.example.com/file.pdf>; rel="alternate"; hreflang="de-ch", <https://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 formacie XML. 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ć wpisy dla adresów URL każdej z wersji, a każda pozycja będzie miała 3 identyczne wpisy podrzędne.
Reguły dotyczące mapy witryny:
-
Określ przestrzeń nazw xhtml w ten sposób:
xmlns:xhtml="http://www.w3.org/1999/xhtml"
-
Dla każdego adresu URL utwórz osobny element
<url>
, tak jak w przypadku każdej innej mapy witryny. - 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. Elementy podrzędne nie wliczają się do limitu adresów URL w mapach witryn. - Prześlij mapę witryny do katalogu w witrynie, którego ta mapa witryny dotyczy. Pamiętaj, że mapa witryny może zawierać tylko podrzędne adresy URL katalogu, w którym jest ona przechowywana.
- Nasza dokumentacja dotycząca map witryn obejmuje też rozszerzenia map witryn. Przestrzegaj ogólnych wskazówek dotyczących mapy witryny.
- 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 niemieckojęzycznych z całego świata 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.de/deutsch/page.html
kierowany na użytkowników niemieckojęzycznych,www.example.de/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>https://www.example.com/english/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="https://www.example.de/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="https://www.example.de/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/english/page.html"/> </url> <url> <loc>https://www.example.de/deutsch/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="https://www.example.de/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="https://www.example.de/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/english/page.html"/> </url> <url> <loc>https://www.example.de/schweiz-deutsch/page.html</loc> <xhtml:link rel="alternate" hreflang="de" href="https://www.example.de/deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="de-ch" href="https://www.example.de/schweiz-deutsch/page.html"/> <xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/english/page.html"/> </url> </urlset>
Obsługiwane kody języków i regionów
Wartość atrybutu hreflang
składa się z 1 lub 2 wartości rozdzielonych myślnikiem. Na przykład: en-US
. Pierwszy kod atrybutu hreflang
to kod języka (w formacie ISO 639-1), po którym następuje opcjonalny drugi kod reprezentujący kod regionu (w formacie ISO 3166-1 alfa-2) alternatywnego adresu URL.
Aby kierować reklamy na mieszkańców Belgii mówiących różnymi językami, możesz użyć tych kodów języków i regionów:
- prawidłowy (niemiecki dla użytkowników w Belgii):
de-be
- prawidłowy (niderlandzki dla użytkowników w Belgii):
nl-be
- prawidłowy (francuski dla użytkowników w Belgii):
fr-be
- nieprawidłowy, ponieważ pierwszy kod dotyczy języka (
be
to kod języka białoruskiego):be
Aby uprościć oznaczanie etykietami, możesz określić sam kod języka, na przykład:
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).
Podobnie jak w przypadku innych kodów języków możesz też określić region. Użyj na przykład zh-Hans-US
, aby określić język chiński (uproszczony) dla użytkowników z USA.
Używanie wartości x-default
w przypadku języków bez dopasowania
Zarezerwowana wartość x-default
jest wykorzystywana wtedy, gdy żaden język ani region nie odpowiada ustawieniom przeglądarki użytkownika. Ta wartość jest zalecana do określania strony zastępczej dla użytkowników, których ustawienia języka nie pasują do żadnej ze zlokalizowanych wersji Twojej witryny. Możesz użyć wartości x-default
na dowolnej stronie, ale została ona opracowana z myślą o stronach wyboru języka, więc najlepiej z nimi będzie działać.
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.
Aby zaimplementować adnotację hreflang="x-default"
, dodaj kolejny tag link
do istniejących adnotacji hreflang
i ustaw atrybut href
na adres URL, pod który mają trafiać użytkownicy, jeśli Twoja witryna nie obsługuje danego języka. Implementacja HTML może wyglądać np. tak:
<link rel="alternate" href="https://example.com/en-gb" hreflang="en-gb" /> <link rel="alternate" href="https://example.com/en-us" hreflang="en-us" /> <link rel="alternate" href="https://example.com/en-au" hreflang="en-au" /> <link rel="alternate" href="https://example.com/country-selector" hreflang="x-default" />
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 będzie tak w przypadku niektórych stron, które korzystają z adnotacji
hreflang
, adnotacje mogą zostać zignorowane lub nieprawidłowo zinterpretowane. Weźmy na przykład ten link nahttps://de.example.com/index.html
: Musisz też mieć też link<link rel="alternate" hreflang="en-gb" href="https://en-gb.example.com/index.html" />
hreflang
nahttps://en-gb.example.com/index.html
, który wskazuje wersję treścide
:<link rel="alternate" hreflang="de" href="https://de.example.com/index.html" />
- Nieprawidłowe kody języka: u pewnij się, że wszystkie używane kody języka wskazują na 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 debugowania adnotacji hreflang
można wykorzystać różne narzędzia innych firm. Oto kilka najpopularniejszych. Google ich nie obsługuje ani nie sprawdza.
-
Narzędzie Aleydy Solis do generowania tagów
hreflang
służy do generowania lub modyfikowania tagówhreflang
. - Narzędzie Merkle SEO do testowania tagów
hreflang
służy do sprawdzania tagówhreflang
na pojedynczej opublikowanej stronie.