Accept-Language
===============

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 with JavaScript enabled. Enable JavaScript to view data.

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` (en-US), `Accept-Encoding`, `Accept-Charset`, `Accept`