Content negotiation is the HTTP mechanism by which a client (browser) and server agree on the best representation of a requested resource. The same URL can return different content depending on the user's language preference, device capabilities, or supported formats.
Negotiation happens primarily through HTTP request headers. The Accept header specifies supported media types (text/html, application/json, etc.), Accept-Language specifies preferred languages (ja, en-US, etc.), and Accept-Encoding specifies supported compression methods (gzip, br, etc.).
Content negotiation intersects with shortened URLs in multilingual sites. A single short link can redirect to a Japanese or English page based on the browser's language setting. However, from an SEO standpoint, having distinct URLs per language with hreflang tags is preferred, because content negotiation can prevent search engines from correctly indexing each language version.
In API design, content negotiation is equally important. A URL shortening API that returns JSON or XML depending on the Accept header is a common pattern. RESTful design principles encourage serving multiple representations of the same resource.
Two types of content negotiation exist: server-driven (the server inspects request headers and decides) and agent-driven (the server presents options and the client chooses). Server-driven negotiation is overwhelmingly more common on the web. You can find related books on Amazon.