¿Qué son Content-Language y Accept-Language?

82

He visto los encabezados HTTP de Content-Languagey Accept-Language, ¿alguien podría explicar para qué sirven y la diferencia entre ellos? Tengo un sitio multilingüe y me pregunto si debo configurar ambos sitios en el idioma seleccionado actualmente por el usuario.

aficionado
fuente
Probablemente no debería molestarse en agregar Content-Language a su sitio, porque los navegadores normalmente no los usan. Sin embargo, puede utilizar el atributo lang en su HTML.
james.garriss

Respuestas:

104

Content-Language, un encabezado de entidad, se utiliza para describir el (los) idioma (s) destinados a la audiencia, de modo que permite al usuario diferenciar según el idioma preferido de los usuarios. Los encabezados de entidad se utilizan tanto en solicitudes como en respuestas HTTP. 1

Accept-Language, un encabezado HTTP de solicitud, anuncia qué idiomas puede entender el cliente y qué variante de configuración regional se prefiere. 2 Puede haber varios idiomas, cada uno con un valor de ponderación o 'calidad' opcional. Por ejemplo:

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

(El peso predeterminado es 1, por lo que equivale a da;q=1, en-GB;q=0.8, en;q=0.7).

Tendrá que analizar los valores y los pesos para ver si hay una traducción adecuada disponible y proporcionar al usuario la traducción en el mayor peso del idioma preferido.

Se recomienda que brinde a los usuarios una alternativa, como un valor de conjunto de cookies, para forzar un determinado idioma para su sitio. Esto se debe a que algunos usuarios pueden querer ver su sitio en un idioma determinado, sin cambiar sus preferencias de aceptación de idioma.

onteria_
fuente
13
Modifique ligeramente su respuesta: Content-Language es un encabezado de contenido, por lo que se aplica al contenido, ya sea de servidor a cliente o de cliente a servidor.
james.garriss
1
RFC2616: “El campo de encabezado de entidad Content-Language describe el (los) lenguaje (s) natural (s) de la audiencia prevista para la entidad adjunta. Sin embargo, el hecho de que haya varios idiomas dentro de una entidad no significa que esté destinada a múltiples audiencias lingüísticas. Un ejemplo sería un manual básico de idiomas para principiantes, como "Una primera lección de latín", que claramente está destinado a ser utilizado por una audiencia alfabetizada en inglés. En este caso, el lenguaje de contenido solo incluiría correctamente "en" ". R. Fielding, UC Irvine, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee; 1999.
Ucho
Así que definitivamente no hay idiomas en la página. Consulte la sección 14.12 de RFC 2616 .
Ucho
20

Content-Languagedescribe el idioma al que está destinado un contenido en particular. Accept-Languagees la lista de idiomas en los que un agente de usuario quiere contenido. La mejor manera de pensar en esto es Content-Languagedescribir el contenido y Accept-Languagetransmitir una preferencia.

D.Shawley
fuente
5

El campo de encabezado de entidad Content-Language describe el (los) lenguaje (s) natural (s) de la audiencia prevista para la entidad adjunta. Tenga en cuenta que esto podría no ser equivalente a todos los lenguajes utilizados dentro del cuerpo de la entidad.

El campo Accept-Language request-header restringe el conjunto de lenguajes naturales que se prefieren como respuesta a la solicitud.

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

Rana Prathap
fuente
0

El Content-Language encabezado de la entidad se utiliza para describir el idioma o los idiomas destinados a la audiencia, de modo que permite al usuario diferenciar según el idioma preferido de los usuarios.

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

- Referencia web de MDN - Encabezados HTTP - Contenido-Idioma

El Accept-Languageencabezado HTTP de la solicitud anuncia qué idiomas puede entender el cliente y qué variante de configuración regional se prefiere. (Por lenguajes, nos referimos a lenguajes naturales, como el inglés, y no a lenguajes de programación).

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

- Referencia web de MDN - Encabezados HTTP - Accept-Language

Georgeawg
fuente