Accept-Language
Заголовок HTTP-запиту Accept-Language
повідомляє про те, які мови клієнт може зрозуміти, і який варіант локалі є кращим. (За мовами ми маємо на увазі природні мови, такі як англійська, а не мови програмування.) Потім, використовуючи узгодження вмісту (en-US), сервер вибирає одну з пропозицій, використовує її та інформує клієнта про свій вибір за допомогою заголовку відповіді Content-Language (en-US). Браузери встановлюють адекватні значення для цього заголовка відповідно до їхньої мови інтерфейсу користувача, і, навіть, якщо користувач може змінити її, це трапляється рідко (і не схвалюється, оскільки це призводить до fingerprinting).
Цей заголовок є рекомендацією, яку слід використовувати, коли сервер не має можливості визначити мову іншим способом, наприклад, через конкретну URL-адресу, яка керується явним рішенням користувача. Рекомендується, щоб сервер ніколи не перевизначав явне рішення. Зміст Accept-Language
часто не керується користувачем (як, наприклад, під час подорожі та використання Інтернет-кафе в іншій країні); користувач може також захотіти відвідати сторінку іншою мовою, ніж локалі свого інтерфейсу користувача.
Якщо сервер не може обслуговувати будь-яку відповідну мову, він теоретично може відправити код помилки 406 (en-US) (Not Acceptable). Але, з кращого досвіду це робиться рідко, замість цього кращим способом є ігнорування у цьому випадку заголовка Accept-Language
.
Тип заголовку | Request header |
---|---|
Forbidden header name | ні |
CORS-safelisted request-header | yes |
Синтаксис
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
Директиви
<language>
-
Тег мови (який іноді називають "ідентифікатором локалі"). Він складається з тегу мови (2-3 літери), що представляє мову, за яким після символу
'-'
можуть слідувати також додаткові літери підтегу. Найпоширенішою додатковою інформацією є варіант країни або регіону (наприклад,'en-US'
або'fr-CA'
) або тип алфавіту (наприклад,'sr-Latn'
). Інші варіанти, такі як тип орфографії ('de-DE-1996'
), зазвичай не використовуються в контексті цього заголовку. *
- Будь-яка мова;
'*'
використовується як шаблон заміни. ;q=
(q-factor weighting)- Будь-яке значення, розміщене в порядку уподобань, виражене за допомогою відносного quality value що називається вагою.
Приклади
Accept-Language: de Accept-Language: de-CH Accept-Language: en-US,en;q=0.5
Специфікації
Specification | Title |
---|---|
RFC 7231, section 5.3.5: Accept-Language | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context |
BCP 47 | Tags for the Identification of Language |
Сумісність з браузерами
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Див. також
- HTTP content negotiation
- Header with the result of the content negotiation: Content-Language (en-US)
- Other similar headers: TE (en-US),
Accept-Encoding
, Accept-Charset (en-US), Accept (en-US)