Google clarifies webmaster questions around potential conflicting nature of rel canonical and hreflang annotation.
Briefly about rel=”alternate” hreflang=”x”
Websites which serve the same content in multiple languages can utilise the rel=”alternate” hreflang=”x” annotations to help Google decide which version to serve to which language group. This applies in cases of translated page template in blogs and comment features, substantially similar content with minor variations such as currency or in case of fully translated content.
Here are a few examples:
Website A: uk.dejanseo.com (English Language, GB users)
<link rel=”alternate” hreflang=”en-GB” href=”http://uk.dejanseo.com/” />
Website B: de.dejanseo.com (German Language, Australian Users)
<link rel=”alternate” hreflang=”de-AU” href=”http://de.dejanmarketing.com/” />
Website C: es.dejanseo.com (Spanish Language, Region Independent)
<link rel=”alternate” hreflang=”es” href=”http://es.dejanseo.com/” />
…when rel canonical and hreflang are both present, URLs w/ rel canonical ARE pulled from the index. hreflang simply allows the display URL to fire at search time. The title and snippet text are taken from the rel canonical target. You need to be very careful here and understand the functions of these annotations, both separately and in tandem. I’ve spoken in detail about this w/ Google’s team. This is how it works and why it’s so important to watch rel canonical carefully, because it can and will yank an international site from the correct regional index. No one wants their US title and snippet text showing for their UK site. The URL is only 1 element of a successful search presentation, and in the case of hreflang, the URL is simply a display element fired at search time.
We’ve dropped the mention of the rel=canonical in the help center since we’ve found that it tends to confuse people and with that, they may end up implementing it incorrectly. If the URLs are really fully equivalent, then using a rel=canonical like that is fine (eg if you have an informational page on a site, which doesn’t mention local currencies or local addresses). On the other hand, if the pages are not fully equivalent (eg different titles, currencies, addresses, etc), then I would not use a rel=canonical. The difference is very subtle and because of that, hard to implement at scale.
It’s best to utilise rel=”canonical” if the two pages are truly the same thing. If there are differences, even subtle, which may be relevant to region/language then it’s best not to canonisalise it in order to help Google serve the best content to the right type of audience.