I want to make a multi-language site, such that all or almost all pages will be available in 2 or more translations. What are the best practices to follow?
For example, I consider these language selection mechanisms:
- Cookie-based selection of the preferred language.
- Based on
Accept-Language
header if the cookie is not set. - Based on GeoIP otherwise (probably).
Is there anything else?
How should different translations be served?
- as
LANG.example.com/page
- as
example.com/LANG/page
- as
example.com/page?hl=LANG
- ...
- any of the above with a redirect to
example.com/page
? (It seems to be discouraged)
How to ensure that all the translations are properly indexed?
- Sitemaps with all pages + correct
Content-Language
header are enough?
What is the best way to let the users know there are other translations, but do not distract them?
- list available languages in the header/footer/sidebar (like Wikipedia)
- put “Choose a language” selector next to the content
What is the best policy to deal with missing/outdated translations?
- do not display missing pages at all or display a page in a different language?
- display old translation, old translation with a warning or a page in a different language?
What else should I take into account? What should I do and what I definitely should not?