From: https://support.google.com/webmasters/answer/182192?hl=en&ref_topic=2370587
Content
- don't mix languages in the content
- block robots from crawling auto translated pages -> can harm site perception
- keep content for each language on a separated url
- do not use cookies to change content language
- cross link each version of a page (so user can switch with one click)
- avoid automatic redirect on perceived language
- always use UTF-8 in the url and as much as possible
- google will use TLD as strong signal for that country
- if single country and general TLD then you should use country targetting of the google search console settings
- server ip should be close to the users
- indicators of address, google my business, phone,... will be used to localize your content
- google does not use geo.position, distribution and/or html tags
- use canonical when same translation in more then one place
- use hreflang and regional urls
Domain Examples
- example.ie (server location irrelevant)
- de.example.com (country or language?)
- example.com/de/ (can use console targetting)
- site.com?loc=de (not recommended)
Culture
From: https://support.google.com/webmasters/answer/189077
- tailored to language, market and culture.
- have support available for the language.
- english dollar vs english pound
- when using culture specific hreflang, also use an only language one
- x-default for mixed and language selectors
- specify only on the cannonical url
- all alternatives should be included, also the page itself
- prefered to keep alternatives in a similar directory structure as main language
- be consistend with your url structure
- display a banner to suggest an alternative page in user language instead of redirecting
- avoid putting language or country in a url parameter
- use UTF-8 for urls
- !! it's not clear if one should or should not translate the urls !!
- page speed within the country is a strong signal
- add ability to swith language
- ensure tourist experience, do not lock users into their current ip location
Html Elements
<link rel="alternate" hreflang="es" href="http://es.example.com/page.html" />
or with html header
Link: <a href="http://es.example.com/" target="_blank">http://es.example.com/; rel="alternate"; hreflang=es"
or in sitemap
<xhtml: link rel="alternate" hreflang="en-gb" ...
Static generators
Jekyll example: https://github.com/sylvaindurand/multilingual-jekyll