Accept-Language
Der HTTP Accept-Language
Request-Header gibt die natürliche Sprache und das Gebietsschema an, das der Client bevorzugt. Der Server verwendet die Inhaltsverhandlung, um einen der Vorschläge auszuwählen und informiert den Client über die Auswahl mit dem Content-Language
Antwort-Header. Browser setzen erforderliche Werte für diesen Header entsprechend ihrer aktiven Benutzeroberflächensprache. Benutzer können auch zusätzliche bevorzugte Sprachen über die Browsereinstellungen konfigurieren.
Der Header Accept-Language
listet im Allgemeinen dieselben Gebietsschemas auf wie die Eigenschaft navigator.languages
, mit abnehmenden q
-Werten (Qualitätswerte). Einige Browser, wie Chrome und Safari, fügen im Accept-Language
Header Fallback-Tags nur für Sprachen hinzu. Zum Beispiel en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7
, wenn navigator.languages
["en-US", "zh-CN"]
ist. Aus Datenschutzgründen (zur Reduzierung des Fingerprints) kann es sein, dass Accept-Language
und navigator.languages
nicht die vollständige Liste der Benutzerpräferenzen enthalten. Zum Beispiel wird in Safari (immer) und im Inkognito-Modus von Chrome nur eine Sprache aufgelistet.
Dieser Header dient als Hinweis, wenn der Server die Zielinhaltsprache nicht anderweitig bestimmen kann (zum Beispiel durch die Nutzung einer bestimmten URL, die von einer ausdrücklichen Benutzerentscheidung abhängt). Der Server sollte niemals eine explizite Benutzerwahl der Sprache überschreiben. Der Inhalt von Accept-Language
liegt oft außerhalb der Kontrolle eines Benutzers (zum Beispiel beim Reisen). Ein Benutzer möchte möglicherweise auch eine Seite in einer anderen Sprache als der Benutzerschnittstellensprache besuchen.
Der Server kann einen 406 Not Acceptable
Fehlercode zurücksenden, wenn er Inhalte nicht in einer passenden Sprache bereitstellen kann, aber dies wird selten implementiert. Server ignorieren oft den Accept-Language
Header in solchen Fällen und senden stattdessen eine erfolgreiche Antwort mit der passendsten Ressource für eine bessere Benutzererfahrung.
Header-Typ | Request-Header |
---|---|
Verbotener Header-Name | Nein |
CORS-gesafelisteter Request-Header | Ja* |
* Werte können nur 0-9
, A-Z
, a-z
, Leerzeichen oder die Zeichen *,-.;=
sein.
Syntax
Accept-Language: <language>
Accept-Language: *
// Multiple types, weighted with the quality value syntax:
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
Direktiven
<language>
-
Ein Sprach-Tag (welches manchmal als "Gebietsschema-Identifier" bezeichnet wird). Dies besteht aus einem 2-3 Buchstaben umfassenden Basissprach-Tag, der eine Sprache angibt, optional gefolgt von zusätzlichen Subtags, getrennt durch
-
. Die häufigsten zusätzlichen Informationen sind die Länder- oder Regionsvariante (wieen-US
oderfr-CA
) oder der zu verwendende Alphabet-Typ (wiesr-Latn
). Andere Varianten, wie der Typ der Orthografie (de-DE-1996
), werden im Kontext dieses Headers normalerweise nicht verwendet. *
(Wildcard)-
Jede Sprache, die nicht mit einer anderen im
Accept-Language
-Feld vorhandenen Sprache übereinstimmt. ;q=
(q-Faktor Gewichtung)-
Jeder Wert, der in einer Reihenfolge der Präferenz zum Ausdruck kommt, durch einen relativen Qualitätswert namens Gewicht. Der Qualitätswert ist standardmäßig
1
.
Beispiele
Verwenden von Accept-Language-Headers
Folgende Anfrage bevorzugt Deutsch mit der Basissprache de
:
Accept-Language: de
Verwenden von Qualitätswerten in Accept-Language
Die folgende Anfrage zeigt eine stärkere Präferenz für Dänisch an, akzeptiert aber Britisches Englisch und andere Arten von Englisch mit geringerer Priorität:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
Spezifikationen
Specification |
---|
HTTP Semantics # field.accept-language |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- HTTP Inhaltsverhandlung
- Ein Header mit dem Ergebnis der Inhaltsverhandlung:
Content-Language
- Andere ähnliche Header:
TE
,Accept-Encoding
,Accept