Что такое Content-Language и Accept-Language?

82

Я видел заголовки HTTP Content-Languageи Accept-Languageмог бы кто-нибудь объяснить, для чего они нужны и в чем разница между ними? У меня есть многоязычный сайт, и мне интересно, должен ли я устанавливать оба сайта на текущий выбранный язык пользователем.

любитель
источник
Вероятно, вам не стоит беспокоиться о добавлении Content-Language на свой сайт, потому что браузеры обычно их не используют. Однако вы можете использовать атрибут lang в своем HTML.
james.garriss

Ответы:

105

Content-Language, заголовок объекта, используется для описания языка (языков), предназначенного для аудитории, так что он позволяет пользователю различать в соответствии с его собственным предпочтительным языком. Заголовки сущностей используются как в HTTP-запросах, так и в ответах. 1

Accept-LanguageHTTP-заголовок запроса, объявляющий, какие языки могут понимать клиент и какой вариант языкового стандарта является предпочтительным. 2 Может быть несколько языков, каждый из которых имеет необязательное значение веса или качества. Например:

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

(Вес по умолчанию равен 1, что эквивалентно da;q=1, en-GB;q=0.8, en;q=0.7).

Вам нужно будет проанализировать значения и веса, чтобы увидеть, доступен ли соответствующий перевод, и предоставить пользователю перевод с наивысшим предпочтительным языковым весом.

Рекомендуется предоставить пользователям альтернативу, например значение набора файлов cookie, для принудительного выбора определенного языка для вашего сайта. Это связано с тем, что некоторые пользователи могут захотеть видеть ваш сайт на определенном языке, не меняя своих языковых предпочтений.

onteria_
источник
13
Небольшая поправка к вашему ответу: Content-Language - это заголовок контента, поэтому он применяется к контенту, будь то от сервера к клиенту или от клиента к серверу.
james.garriss
1
RFC2616: «Поле заголовка объекта Content-Language описывает естественный язык (языки) целевой аудитории для закрытого объекта. Однако наличие нескольких языков в сущности не означает, что она предназначена для нескольких языковых аудиторий. Примером может служить учебник по языку для начинающих, такой как «Первый урок латыни», который явно предназначен для англоязычной аудитории. В этом случае Content-Language правильно будет включать только «en» ». Р. Филдинг, Калифорнийский университет в Ирвине, Дж. Геттис, Дж. Могул, Х. Фристик, Л. Масинтер, П. Лич, Т. Бернерс-Ли; 1999.
Ucho
Так что это не определенно языки на странице. См. RFC 2616, раздел 14.12 .
Ucho
20

Content-Languageописывает язык, для которого предназначен конкретный фрагмент контента. Accept-Language- это список языков, на которых пользовательский агент хочет контент. Лучше всего думать об этом, Content-Languageописывая контент и Accept-Languageпередавая предпочтения.

Д.Шоули
источник
15

Content-Language - это язык страницы, которую вы обслуживаете. Accept-Language - это список языков, которые вы предпочитаете принимать.


источник
5

Поле заголовка объекта Content-Language описывает естественный язык (языки) целевой аудитории для вложенного объекта. Обратите внимание, что это может быть не эквивалентно всем языкам, используемым в теле объекта.

Поле заголовка запроса Accept-Language ограничивает набор естественных языков, которые предпочтительны в качестве ответа на запрос.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Рана Пратхап
источник
0

Content-Language Заголовок объекта используются для описания языка (ов) , предназначенными для зрителей, так что она позволяет пользователю различать в соответствии с собственным предпочитаемым языком пользователей.

Header type                     Entity header
Forbidden header name           no
CORS-safelisted response-header yes
CORS-safelisted request-header  yes

- Веб-справочник MDN - Заголовки HTTP - Язык содержимого

Accept-LanguageЗапрос HTTP заголовок рекламирует какие языки клиент способен понять, и какие локали вариант является предпочтительным. (Под языками мы подразумеваем естественные языки, такие как английский, а не языки программирования.)

Header type                     Request header
Forbidden header name           no
CORS-safelisted request-header  yes

- Веб-справочник MDN - Заголовки HTTP - Язык принятия

Джорджог
источник