Many multi-lingual sites don’t have the language tag for the default/primary language in the URL¹, but I think it’s better to include it. So yes, in my opinion, it’s not only good design, it’s the best.
Its suggesting itself to use the root page as a site/language chooser. I think there are three ways how this page can work:
- Redirect (based on certain conditions²)
- Show a list of links
- Show a list of links and pre-select/highlight the most likely choice (based on certain conditions²)
This page is likely not relevant for SEO at all, because search engines typically would have no interest to present a language chooser page to their users. Such a page doesn’t (shouldn’t) have any relevant content, and if it’s redirecting, it would be useless to lead users to this redirecting page instead of the redirect target page (search engines know, or assume to know, their user’s language).
The most important thing (and as you mentioned, you already do it) is that it’s not the only way to choose the language. Users (and search engines) should be able to switch to the translations of the current page with a language switcher/
Apart from that, as far as search engines are concerned:
For Google Search, you could link it with
[…] the reserved value "x-default" is used for indicating language selectors/redirectors which are not specific to one language or region, e.g. your homepage showing a clickable map of the world
(I don’t understand why this could be useful, and I think it’s bad design (as the selector page is not a translation of a language-specific homepage) but they mention it in their documentation, so I think it’s better to note it here, too.)
If you redirect, don’t use
301. As the redirect is based on changing/user-specific conditions, it’s not permanent. And you probably don’t want it to get cached for a user (who might change e.g. the accepted languages in their browser and come back to the root page).
302 (or maybe
307?) seems to be the right status code.
Maybe: You could consider to
noindex this root page, if it’s really just a list of links.
¹ By the way, for sites that use subdomains (
da.example.org) instead of path segments for the language tags, the same question comes up: what to do with
www.example.org? I think the solution is the same in this case.
² The conditions could be the
Accept-Language header, the IP address, or whatever makes sense in your context.