Що таке мова вмісту та мова прийняття?


82

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


Ймовірно, вам не слід турбуватися про додавання мови вмісту на свій сайт, оскільки браузери зазвичай ними не користуються. Однак ви можете використовувати атрибут lang у своєму HTML.
james.garriss

Відповіді:


105

Content-Language, заголовок сутності, використовується для опису мови (мов), призначеної для аудиторії, так що вона дозволяє користувачеві диференціювати відповідно до власної мови користувача. Заголовки сутності використовуються як у запитах HTTP, так і у відповідях. 1

Accept-Language, заголовок HTTP-запиту, рекламує, які мови клієнт може зрозуміти, і який варіант мови є кращим. 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, щоб примусити певну мову для вашого сайту. Це пов’язано з тим, що деякі користувачі можуть побачити ваш сайт певною мовою, не змінюючи своїх уподобань щодо прийняття мови.


13
Трохи налаштуйте свою відповідь: Content-Language - це заголовок вмісту, тому він застосовується до вмісту, чи то від сервера до клієнта, чи від клієнта до сервера.
james.garriss

1
RFC2616: «Поле заголовка сутності« Мова вмісту »описує природну мову (мови) передбачуваної аудиторії для вкладеного об’єкта. Однак те, що в сутності присутня кілька мов, не означає, що вона призначена для численних мовних аудиторій. Прикладом може бути мовна буква для початківців, наприклад, "Перший урок латинською мовою", який однозначно призначений для використання англійською грамотною аудиторією. У цьому випадку Мова вмісту належним чином міститиме лише "en". " Р. Філдінг, UC Ірвін, Дж. Геттіс, Дж. Могул, Х. Фристик, Л. Масінтер, П. Ліч, Т. Бернерс-Лі; 1999.
Учо

Тож це точно не мови на сторінці. Див. RFC 2616, Розділ 14.12 .
Учо

20

Content-Languageописує мову, для якої призначений певний вміст. Accept-Language- це список мов, на яких користувацький агент бажає вмісту. Найкращий спосіб думати про це - Content-Languageописувати вміст і Accept-Languageпередавати перевагу.


15

Мова вмісту - це мова сторінки, яку ви обслуговуєте. Accept-Language - це перелік мов, які ви ВИГАДАЄТЕ прийняти.


5

Поле заголовка сутності "Мова вмісту" описує природну мову (мови) передбачуваної аудиторії для вкладеної сутності. Зауважте, що це може бути не еквівалентно всім мовам, що використовуються в тілі сутності.

Поле заголовка запиту 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 - Мова прийняття

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.