Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

En-tête Accept-Language

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

L'en-tête de requête HTTP Accept-Language 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 requises pour cet en-tête en fonction de la langue active de leur interface utilisateur. Les utilisateur·ice·s peuvent aussi définir des langues préférées supplémentaires dans les paramètres du navigateur.

L'en-tête Accept-Language liste généralement les mêmes locales que la propriété navigator.languages, avec des valeurs q (valeurs de qualité) décroissantes. Certains navigateurs, comme Chrome et Safari, ajoutent des balises de repli ne contenant que la langue dans Accept-Language. Par exemple, en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 lorsque navigator.languages vaut ["en-US", "zh-CN"]. Pour des raisons de confidentialité (réduction de la prise d'empreinte), Accept-Language et navigator.languages peuvent ne pas inclure la liste complète des préférences utilisateur·ice·s. Par exemple, dans Safari (toujours) et le mode navigation privée de Chrome, une seule langue est listée.

Cet en-tête sert d'indication lorsque le serveur ne peut pas déterminer la langue du contenu cible autrement (par exemple, utiliser une URL spécifique qui dépend d'une décision explicite de l'utilisateur·ice). Le serveur ne doit jamais passer outre un choix explicite de langue de l'utilisateur·ice. Le contenu d'Accept-Language est souvent hors du contrôle de l'utilisateur·ice (par exemple lors d'un voyage). Un·e utilisateur·ice peut aussi vouloir visiter une page dans une langue différente de celle de l'interface utilisateur.

Le serveur peut retourner un code d'erreur 406 Not Acceptable lorsqu'il ne peut pas servir de contenu dans une langue correspondante, mais cela est rarement mis en œuvre. Les serveurs ignorent souvent l'en-tête Accept-Language dans ces cas et retournent une réponse réussie avec la ressource la plus appropriée pour une meilleure expérience utilisateur·ice.

Type d'en-tête En-tête de requête
Nom d'en-tête interdit Non
En-tête de requête sûr pour le CORS Oui

* Les valeurs ne peuvent contenir que 0-9, A-Z, a-z, l'espace ou les caractères *,-.;=.

Syntaxe

http
Accept-Language: <language>
Accept-Language: *

// Type multiples, pondérés par la syntaxe de valeur de qualité :
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5

Directives

<language>

Une balise de langue (parfois appelée « identifiant de locale »). Elle se compose d'une balise de langue de base de 2 à 3 lettres qui indique une langue, éventuellement suivie de sous-balises supplémentaires séparées par -. L'information supplémentaire la plus courante est la variante de pays ou de région (comme en-US ou fr-CA) ou le type d'alphabet à utiliser (comme sr-Latn). D'autres variantes, comme le type d'orthographe (de-DE-1996), ne sont généralement pas utilisées dans le contexte de cet en-tête.

* (joker)

Toute langue qui ne correspond à aucune autre langue présente dans le champ Accept-Language.

;q= (pondération q)

Toute valeur placée selon un ordre de préférence exprimé à l'aide d'une valeur de qualité relative appelée poids. La valeur de qualité par défaut est 1.

Exemples

Utilisation des en-têtes Accept-Language

La requête suivante indique une préférence pour l'allemand en utilisant la langue de base de :

http
Accept-Language: de

Utilisation des valeurs de qualité dans Accept-Language

La requête suivante indique une préférence plus forte pour le danois, mais accepte l'anglais britannique et d'autres types d'anglais avec une priorité inférieure :

http
Accept-Language: da, en-gb;q=0.8, en;q=0.7

Spécifications

Specification
HTTP Semantics
# field.accept-language

Compatibilité des navigateurs

Voir aussi