1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
---
title: Accept-Language
slug: Web/HTTP/Headers/Accept-Language
translation_of: Web/HTTP/Headers/Accept-Language
original_slug: Web/HTTP/Заголовки/Accept-Language
---
<div>{{HTTPSidebar}}</div>
<div>{{Glossary("HTTP-заголовок")}} Запрос <strong><code>Accept-Language</code></strong> сообщает серверу, какие языки клиент понимает и какая локаль предпочтительнее (имеются в виду естественные языки, такие как английский, а не языки программирования). Используя механизм обсуждения содержимого (<a href="/en-US/docs/Web/HTTP/Content_negotiation">content negotiation</a>), сервер выбирает один из предложенных вариантов, использует его и информирует клиента о своём выборе при помощи заголовка ответа {{HTTPHeader("Content-Language")}}. Браузеры устанавливают соответствующие значения для данного заголовка, исходя из языка пользовательского интерфейса, и, даже если у пользователя есть возможность изменить значение заголовка <strong><code>Accept-Language</code></strong>, это происходит редко (и не одобряется, так как ведёт.к идентификации).</div>
<div></div>
<p>Данный заголовок является подсказкой для сервера, когда он не имеет другого способа определить язык, (например, явно указанный язык в URL'е, который пользователь явно выбрал). Рекомендуется никогда не переопределять на стороне сервера явный выбор пользователем языка. Содержимое заголовка <code>Accept-Language</code> часто не может быть переопределено пользователем (например, в путешествии, когда пользователь пользуется услугами интернет-кафе); также пользователь может захотеть посмотреть содержимое сайта на языке отличном от языка интерфейса.</p>
<p>Если сервер не может предоставить содержимое ни на одном языке из предложенных в заголовке <code>Accept-Language</code>, теоретически он может вернуть HTTP-статус {{HTTPStatus("406")}} (Not Acceptable). Однако, для большего удобства пользователя, это делается редко, а чаще принято в таких случаях игнорировать заголовок <code>Accept-Language</code>.</p>
<table class="properties">
<tbody>
<tr>
<th scope="row">Header type</th>
<td>{{Glossary("Request header")}}</td>
</tr>
<tr>
<th scope="row">{{Glossary("Forbidden header name")}}</th>
<td>нет</td>
</tr>
<tr>
<th scope="row">{{Glossary("Simple header", "CORS-safelisted request-header")}}</th>
<td>да</td>
</tr>
</tbody>
</table>
<h2 id="Синтаксис">Синтаксис</h2>
<pre class="syntaxbox notranslate">Accept-Language: <language>
Accept-Language: <locale>
Accept-Language: *
// Multiple types, weighted with the {{glossary("quality values", "quality value")}} syntax:
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5</pre>
<h2 id="Директивы">Директивы</h2>
<dl>
<dt><code><language></code></dt>
<dd>Тег языка (иногда называют идентификатором локали, "locale identifier"). Состоит из 2-3 буквенного основного языкового тега, представляющего язык, и опционально за ним могут следовать дополнительные под-теги, разделённые <code>'-'</code>. Наиболее распространённой дополнительной информацией являются указания на страну или регион (например, <code>'en-US'</code> или <code>'fr-CA'</code>) или тип алфавита, который следует использовать (например, <code>'sr-Latn'</code>). Другие варианты, такие как тип орфографии (<code>'de-DE-1996'</code>) обычно не используются в контексте данного заголовка.</dd>
<dt><code>*</code></dt>
<dd>Любой язык; <code>'*'</code> обозначает любое значение.</dd>
<dt><code>;q=</code> (q-factor weighting)</dt>
<dd>Любое из значений, размещённых в порядке предпочтения, выраженном позицией {{glossary("Quality values", "quality value")}}, которое называют <em>весами</em>.</dd>
</dl>
<h2 id="Примеры">Примеры</h2>
<pre class="notranslate">Accept-Language: *
Accept-Language: de
Accept-Language: de-CH
Accept-Language: en-US,en;q=0.5
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
Accept-Language: ru-RU, ru;q=0.9, en-US;q=0.8, en;q=0.7, fr;q=0.6</pre>
<h2 id="Спецификации">Спецификации</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Спецификация</th>
<th scope="col">Название</th>
</tr>
<tr>
<td>{{RFC("7231", "Accept-Language", "5.3.5")}}</td>
<td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context</td>
</tr>
</tbody>
</table>
<h2 id="Совместимость_с_браузером">Совместимость с браузером</h2>
<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
<p>{{Compat("http.headers.Accept-Language")}}</p>
<h2 id="Смотрите_также">Смотрите также</h2>
<ul>
<li>HTTP <a href="/en-US/docs/Web/HTTP/Content_negotiation">content negotiation</a></li>
<li>Header with the result of the content negotiation: {{HTTPHeader("Content-Language")}}</li>
<li>Other similar headers: {{HTTPHeader("TE")}}, {{HTTPHeader("Accept-Encoding")}}, {{HTTPHeader("Accept-Charset")}}, {{HTTPHeader("Accept")}}</li>
</ul>
|