Should you have a language switcher on a website or use the browser’s language preference (or both)?

Since the user's language preference can be retrieved from navigator.language or the Accept-Language header, is it necessary to provide a language switcher on the page itself?

Some reasons given to do so are:

  • If my language is not well-supported and the localization of my browser in my language is poor or nonexistent
  • I'm using a shared browser

I don't know of any currently spoken languages that are not available in the browser's preference.

Using a shared browser seems like a red-haring to me. If you are using a shared browser in a country that doesn't speak your language, then the whole interface isn't going to be in your language anyways. Also, if it's a country with more than one language spoken, that should be accommodated.

The compromise is to provide a language switcher, but set the initial language based on what the browser provides. This is how it should be done with a language switcher, but is the switcher necessary at all? If so, why?