Блог Яндекса для вебмастеров

Яндекс поддерживает стандарт для указания мультиязычности сайта

9 апреля 2013, 18:41

Иногда у владельцев сайтов возникает необходимость перевести сайт на разные языки. Обычно при переводе сайта используются региональные поддомены, подкаталоги на сайте или сайты в разных доменных зонах. Для корректной индексации и ранжирования таких сайтов, чтобы пользователю из Америки была показана англоязычная версия страницы, а российскому — русскоязычная, поисковые системы поддерживают специальные атрибуты rel="alternate" hreflang="x"


С помощью этого атрибута владелец сайта может указать, по какому адресу расположен перевод страницы на другие языки. Если страница переведена на несколько языков, то у каждой языковой версии страницы необходимо указать адрес остальных версий.
Например, если на одном сайте есть следующие страницы/директории:

  • страница на английском для регионов США,
  • страница на русском языке для региона Россия,
  • страница на турецком для региона Турция,

то каждая страница должна содержать следующую разметку:
<link rel="alternate" hreflang="en-us" href="http://example.com/en-us/">
<link rel="alternate" hreflang="tr-tr" href="http://example.com/tr-tr/">
<link rel="alternate" hreflang="ru-ru" href="http://example.com/ru-ru/">






Сегодня поисковые системы "Яндекс" и Google объединились и поддержали расширение x-default для атрибута hreflang. Расширение позволяет указать, что страница:
а) изменяется в зависимости от настроек, IP-пользователя или содержит настройку выбора языка;
б) страница будет показываться по-умолчанию посетителям из остальных стран, для которых нет региональных версий.


<link rel="alternate" hreflang="x-default" href="http://example.com/"> — такой атрибут необходимо указать для IP-зависимой страницы, а также сослаться на версии остальных страниц на других языках:
<link rel="alternate" hreflang="en-us" href="http://example.com/en-us/">
<ink rel="alternate" hreflang="tr-tr" href="http://example.com/tr-tr/">
<link rel="alternate" hreflang="ru-ru" href="http://example.com/ru-ru/">

 

Обращаем ваше внимание на то, что атрибут является не директивой, а рекомендацией для поисковых систем. Подробности об использовании вы можете узнать в Помощи.

Если у вас возникают вопросы, вы можете задать их в комментариях или в клубе Поиска

36 комментариев
Подписаться на комментарии к посту

Это очень клёво!

круть!

А если обе версии сайта расположены по одному физическому адресу и содержание их меняется исходя из IP пользователя. Стоит ли в таком случае использовать данный атрибут, и если да, то каким образом?

Именно об этом вторая часть стандарта. 

Нужно создать страницы, которые жестко привязаны к региону (без зависимостей от IP). Если версий сайта две, то получаем три версии страниц - одна IP-зависимая и две привязанные к разным регионам. Далее на каждой странице размещается три тега link. Значение атрибута hreflang для IP-зависимой страницы будет "x-default", для двух остальных с соответствующим языком и регионом.

Клёво, как раз хотели разобраться с подобной ситуацией :)

а значения атрибутов hreflang должны быть строго из ISO Language Code Table?

исходя из примера /ru-ua - нет, потому что украинский язык - uk, а не ua, т.е. очевидно ua - это регион, а где его брать - хз

В примере Украина верно обозначена как UA.

О! А можете сказать какой из вариантов в приоритете и почему?
1. site.com/ru/ & site.com/en/
2. ru.site.com & en.site.com
3. site.ru & site.com (or site.us, site.uk)
Выбор схемы именования зависит от каждого конкретного сайта. Где-то лучше первый вариант, где-то второй, где-то третий. А могут и все сразу использоваться, для разных целей.
Нет ли конкретного примера поиска разных версий по разным запросам?
малярные работы

Очень круто!!! Наконец-то стандарт.

firstmedia.rufirst
12 апреля 2013, 01:46

сайт 2 версий

 

русский язык – по адресу http://xxx.ru/ - отмечаю для украины, белоруссии и казахстана, соот-но ua, by и kz

англоязычная версия - по адресу http://www.xxx.com/ - для всех остальных, использую hreflang="x-default". Верно?

 дальше: 

Добавляем в раздел HTML всех страниц сайта http://xxx.ru/ элемент link, как показано ниже:

на все страницы xxx.ru/page (в том числе на главной xxx.ru):

http://xxx.com/page" />

 

на все страницы xxx.com/page (в том числе на главной xxx.com): 

http://xxx.ru/page" />

http://xxx.ru/page" />

http://xxx.ru/page" />

http://xxx.ru/" />

 

Вопрос: нужно ли добавить линки на себя? или все описано правильно?
10 перечитала инструкции - противоречивые очень.

Заранее спасибо за ответ! 

 

Если у вас две статические версии сайта (только английская и только русская), то нет необходимости перечислять регионы. Достаточно указать на страницах языковые версии:

 

http://xxx.ru/page" />

http://xxx.com/page" />

 

Таким образом появится знание о связи между страницами, выбор лучшей страницы для конкретного пользователя и запроса останется за поисковой системой.

firstmedia.rufirst
12 апреля 2013, 15:10

А на русской версии нужно указать только английскую? или русскую тоже?

Лучше всегда указывать все версии. Если робот скачал одну версию, но не скачал вторую, то благодаря тегу link, где страница ссылается на себя, он уже знает к какому языку и региону относится эта страница.

firstmedia.rufirst
12 апреля 2013, 15:20

Спасибо!

 

благодаря тегу link, где страница ссылается на себя, он уже знает к какому языку и региону относится эта страница

Для этого служит атрибут `lang` элемента `HTML`, нет?

firstmedia.rufirst
15 апреля 2013, 20:13

да, 2 статические версии, но указывая на сайте

1 вариант:

http://xxx.ru/page" />

http://xxx.com/page" /> 

 

не исключаю ли я расширенные возможности, для пользователей других стран?

2 вариант:
http://xxx.ru/page" />

http://xxx.ru/page" />

http://xxx.ru/page" />

http://xxx.ru/" />

Например, в 1 варианте у нас есть русская и английская версия. А как это будет влиять на выдачу?  какую территорию охватывает hreflang="ru", только Россию? 

и какую территорию охватывает: hreflang="en"

И получим ли мы русскоязычный трафик с Казахстана, если дополнительно укажем 
http://xxx.ru/" />
тот же вопрос и по другим странам.

 

А ссылки давать только с доменом, или можно без, типа:

 

/">
/en-us/">
/tr-tr/">

?

Домен не обязателен, можно использовать относительные ссылки.

с какиж это пор в разметке работают относительные ссылки? :)

Скажите, пожалуйста, что делать в следующем случае. Предположим, у нас на страницах не 100% идентичный текст, а есть также привязка, например, к валюте страны посетителя.

 

То есть, например, на сайте используются 2 языка, русский и английский, но при этом сайт работает для посетителей таких стран: Россия, Украина, США, Европа.

 

В зависимости от IP посетителя, мы открываем ему одну из следующих страниц:

 

site.com/ru-ru/

site.com/ru-ua/

site.com/ru-us/

site.com/ru-eu/

site.com/en-ru/

site.com/en-ua/

site.com/en-us/

site.com/en-eu/

 

По умолчанию пользователю из США открывается site.com/en-us/, но мы оставляем возможность сменить язык, но не менять страну. Просто не хочется ограничивать в удобстве пользования сайтом русскоязычного человека, живущего в США и желающем видеть цены в долларах.

 

Что, в таком случае, должно быть указано в тегах, например, у страницы site.com/ru-us/ ? А если при этом 4 языка и 10 стран? Уже 40 строк тегов надо делать?

 

На текущий момент я вижу только такую схему: в главных версиях сайта, site.com/ru-ru/ и site.com/en-us/ делаем по описанной в этой теме схеме.

А во всех остальных версиях (site.com/en-eu/, site.com/ru-ua/ и т. д.) добавляем соответственно

 

 

Вы все описали верно. К сожалению, стандарт имеет некоторую избыточность, поэтому для большого числа регионов и языков блок тегов получится длинным.

Что касается варианта с canonical, то тут есть ряд моментов:

Во-первых в таком случае вы должны быть готовы к тому, что только канонические страницы будут участвовать в поиске.

Во-вторых, если использовать canonical и hraflang с url site.com/ru-ru/, то известно, что урл хорош для региона ru, неизвестно, можно ли его аналогично использовать для ua. Если каноническим url оставить /ru/ (без региона), то теряется жесткая привязка к региону, что аналогично уменьшает пользу стандарта.

Сами авторы стандарта не рекомендуют использовать canonical между языковыми или региональными версиями.

Спасибо за ответ. В общем, получается, что нужно вписывать теги для всех связок стран и языков, то есть общее количество тегов должно быть равным произведению количества стран на количество языков + 1 (x-default)?

 

На самом деле, этот вопрос бы не возник, если бы разработчики добавили в пример хотя бы одну страну, в которой дублируется существующий язык. Например, Украину с русским языком.

Еслибы показали ещё пример поиска таких страниц, чтобы конкретно было видно что и как происходит...

А так всё похоже на рассуждения про то, о чём рекомендации есть, а самого этого всего - ещё нет.

Ребята, у меня два сайта международного бренда для Украины и России на отдельных ccTLD (.com.ua и .ru)

Как помочь поисковикам и подсказать что это не просто дубликат, а интернациональный сайт

Думаю над внедрением:

http://example.ru/">

http://example.com.ua/"> 

Подскажите правильно ли я делаю... 

Так же подскажите...правильно ru-ua или ru-uk? 

you can use "canonical" for duplication issue.

 

http://atozhackingtricks.blogspot.com

Отлично

Отличная тема

А как поступить в случае если страна и язык не меняются, но есть варианты для разных регионов ?

Например Москва, Калуга, Рязань  и т.д.

Страницы получаются сосвем одинаковые, отличия мелкие (номер телефона в шапке, адрес организации,  на странице каталога товаров разница лишь в ценах и наличие, а описание и карточки товаров идентичные).

 

Как указать поисковой системе, что для разных городов релевантны разные страницы ?

И какой способ в этом случае лучше использовать, поддомены для городов или папки ?

 

В случае с поддоменами, получится дублирование контента на разных сайтах, не будет ли это плохо сказываться ?

 

Буду очень признателен за ссылочки на любую информацию об этом.

А как в этом случае прописать hreflang в robots.txt?

 

У себя пишу так:

http://mzpu-plast.com/en/" />

 

+ в urlset строка xmlns:xhtml="http://www.w3.org/1999/xhtml

 

Но валидатору отчаянно не нравится xhtml, что делать?

firstlena.pershina
12 ноября 2015, 13:30

hreflang не нужно прописывать в robots.txt, это нужно делать в исходном коде страниц (https://yandex.ru/support/webmaster/yandex-indexing/locale-pages.xml ).

В sitemap, действительно, мы не поддерживаем rel="alternate" и просто проигнорируем его. Валидатор будет ругаться на это, но, если sitemap один для Яндекса и Google, то можно оставить один для всех.

 

Неверно сформулировала, да, конечно, hreflang прописан в коде, а не в роботс. Вопрос был, нужно ли что-то дополнительно прописывать в роботс, чтобы робот Яндекса верно понял hreflang.

 

Ясно, спасибо за ответ.

Указано что Яндекс и Google используют один и тот же формат Sitemap
Однако код Google (офиц.пример:https://support.google.com/webmasters/answer/2620865?hl=ru) тег <xhtml:link Яндекс не понимает и на своей странице тут приведен другой тег: <link rel="alternate" hreflang="en-us" href="http://example.com/en-us/">
Можете пояснить?