Accept language is set at the browser level, where you usually want a single default with granular per-site (or even per-content) control.
There will be whole sites and apps that I want in a specific language that aren't my first preference. E.g. I might want my news and browser user interface in English but Google Maps in a local language, Netflix in the language of the content I watch the most etc.
Reality is just too complex for a single ordered list IMHO, having the default set to whatever heuristics that best matches the site, and give a very easy, prominent and persistent way to change the language is I think the best approach.
you still want a default for those website you haven't been yet. also you're conflating the user agent configuration with the trasmission protocol. the accept header easily accomodate your scenario with purely client side configuration, entirely transparent to the web site.
Accept language is set at the browser level, where you usually want a single default with granular per-site (or even per-content) control.
There will be whole sites and apps that I want in a specific language that aren't my first preference. E.g. I might want my news and browser user interface in English but Google Maps in a local language, Netflix in the language of the content I watch the most etc.
Reality is just too complex for a single ordered list IMHO, having the default set to whatever heuristics that best matches the site, and give a very easy, prominent and persistent way to change the language is I think the best approach.