Accept-Language
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
L'en-tête Accept-Language
de la requête HTTP indique quelles sont les langues que le client est capable de comprendre, et quelle variante locale est préférée. En utilisant la négociation de contenu, le serveur choisit alors l'une des propositions, l'utilise et informe le client de son choix par l'entête de réponse Content-Language
. Les navigateurs définissent les valeurs adéquates pour cet entête en fonction de la langue de leur interface utilisateur, et même si un utilisateur peut la changer, cela se produit rarement (et cela est vu d'un mauvais œil, dans la mesure où cela permet l'identification par empreinte numérique).
Cet en-tête est une indication destinée à être utilisée lorsque le serveur n'a aucun moyen de déterminer la langue d'une autre manière, comme une URL spécifique, qui est contrôlée par une décision explicite de l'utilisateur. Il est recommandé que le serveur ne passe jamais outre une décision explicite. Le contenu d'Accept-Language
est souvent hors du contrôle de l'utilisateur (comme lors d'un voyage et de l'utilisation d'un cybercafé à l'étranger) ; l'utilisateur peut également vouloir visiter une page dans une langue que celle des paramètres régionaux de son interface utilisateur.
Si le serveur ne peut servir aucune langue qui corresponde, il peut théoriquement renvoyer un code d'erreur 406
(Not Acceptable). Mais, pour une meilleure expérience utilisateur, cela est rarement fait et la façon de faire la plus courante est d'ignorer l'en-tête Accept-Language
dans ce cas.
Type d'en-tête | Request header |
---|---|
Forbidden header name | non |
CORS-safelisted request-header | oui |
Syntaxe
Accept-Language: <langue> Accept-Language: <locale> Accept-Language: * // Type multiples, pondérés par la syntaxe valeur de qualité : Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
Directives
<langue>
-
Une langue exprimée sous la forme de 2 ou 3 caractères.
<locale>
-
Une balise de langue complète. En plus de la langue elle-même, elle peut contenir des informations additionnelles après un
'-'
. L'information supplémentaire la plus courante est la variante de pays (telle que'en-US'
) ou le type d'alphabet à utiliser (comme'sr-Lat'
). D'autres variantes comme le type d'orthographe ('de-DE-1996'
) ne sont pas habituellement utilisées dans le contexte de cet en-tête. *
-
Toute langue ;
'*'
est utilisé comme un joker. ;q=
(pondération q-factor)-
Une quantité numérique donnant un ordre de préférence et qui utilise une valeur de qualité relative, appelée poids.
Exemples
Accept-Language: de Accept-Language: de-CH Accept-Language: en-US,en;q=0.5
Spécifications
Specification |
---|
HTTP Semantics # field.accept-language |
Compatibilité des navigateurs
BCD tables only load in the browser
Voir aussi
- HTTP négociation de contenu
- En-tête avec le résultat de la négociation de contenu :
Content-Language
- Autres en-têtes similaires :
TE
,Accept-Encoding
,Accept-Charset
,Accept