Accept-Language - HTTP
The Accept-Language request HTTP header indicates the natural language and locale that the client prefers.
  The server uses content negotiation to select one of the proposals and informs the client of the choice with the Content-Language response header.
  Browsers set required values for this header according to their active user interface language.
  Users can also configure additional preferred languages through browser settings.
/favicon-48x48.cbbd161b.png
MDN Web Docs
The Accept-Language request HTTP header indicates the natural language and locale that the client prefers. The server uses content negotiation to select one of the proposals and informs the client of the choice with the Content-Language response header. Browsers set required values for this header according to their active user interface language. Users can also configure additional preferred languages through browser settings.

The Accept-Language header generally lists the same locales as the navigator.languages property, with decreasing q values (quality values). Some browsers (Chrome and Safari) add language-only fallback tags in Accept-Languageâfor example, en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 when navigator.languages is ["en-US", "zh-CN"]. For privacy purposes (reducing fingerprinting), both Accept-Language and navigator.languages may not include the full list of user preferences, such as in Safari (always) and Chrome's incognito mode, where only one language is listed.

This header serves as a hint when the server cannot determine the target content language otherwise (for example, use a specific URL that depends on an explicit user decision). The server should never override an explicit user language choice. The content of Accept-Language is often out of a user's control (when traveling, for instance). A user may also want to visit a page in a language different from the user interface language.