Co to jest język treści i język akceptacji?


82

Widziałem nagłówki HTTP programu Content-Languagei Accept-Language, czy ktoś mógłby wyjaśnić, do czego służą i jaka jest między nimi różnica? Mam witrynę wielojęzyczną i zastanawiam się, czy ustawić obie strony na aktualnie wybrany język przez użytkownika.


Prawdopodobnie nie powinieneś zawracać sobie głowy dodawaniem Content-Language do swojej witryny, ponieważ przeglądarki normalnie ich nie używają. Możesz jednak użyć atrybutu lang w swoim kodzie HTML.
james.garriss

Odpowiedzi:


105

Content-Language, nagłówek encji, jest używany do opisu języka (języków) przeznaczonych dla odbiorców, tak aby umożliwić użytkownikowi rozróżnienie według preferowanego języka użytkownika. Nagłówki jednostek są używane zarówno w żądaniach, jak i odpowiedziach HTTP. 1

Accept-Language, nagłówek HTTP żądania, ogłasza, które języki klient jest w stanie zrozumieć i który wariant locale jest preferowany. 2 Może być wiele języków, każdy z opcjonalną wartością wagi lub „jakości”. Na przykład:

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

(Domyślna waga to 1, więc jest to równoważne da;q=1, en-GB;q=0.8, en;q=0.7).

Będziesz musiał przeanalizować wartości i wagi, aby sprawdzić, czy dostępne jest odpowiednie tłumaczenie, i zapewnić użytkownikowi tłumaczenie w języku o najwyższej preferowanej gramaturze.

Zaleca się udostępnienie użytkownikom alternatywnej opcji, na przykład wartości zestawu plików cookie, do wymuszenia określonego języka w witrynie. Dzieje się tak, ponieważ niektórzy użytkownicy mogą chcieć widzieć Twoją witrynę w określonym języku, bez zmiany preferencji dotyczących akceptacji języka.


13
Drobne poprawki do twojej odpowiedzi: Content-Language to nagłówek treści, więc ma zastosowanie do treści, czy to z serwera do klienta, czy z klienta na serwer.
james.garriss

1
RFC2616: „Pole nagłówka encji Content-Language opisuje język (i) naturalny (e) docelowej publiczności dla zamkniętej jednostki. Jednak tylko dlatego, że w jednostce występuje wiele języków, nie oznacza to, że jest ona przeznaczona dla wielu odbiorców językowych. Przykładem może być elementarz języka dla początkujących, taki jak „Pierwsza lekcja łaciny”, który jest wyraźnie przeznaczony dla publiczności znającej język angielski. W tym przypadku Content-Language prawidłowo zawierałby tylko „en”. ” R. Fielding, UC Irvine, J. Gettys, J. Mogul, H. Frystyk, L. Masinter, P. Leach, T. Berners-Lee; 1999.
Ucho

Więc to na pewno nie są języki na stronie. Zobacz RFC 2616, sekcja 14.12 .
Ucho

20

Content-Languageopisuje język, dla którego przeznaczony jest określony fragment treści. Accept-Languageto lista języków, w których klient użytkownika chce mieć zawartość. Najlepszym sposobem myślenia o tym jest Content-Languageopisanie treści i Accept-Languageprzekazanie preferencji.



5

Pole nagłówka encji Content-Language opisuje język (i) naturalny (-e) docelowej publiczności dla zamkniętej jednostki. Należy zauważyć, że może to nie być równoważne wszystkim językom używanym w treści encji.

Pole nagłówka żądania akceptacji języka ogranicza zestaw języków naturalnych, które są preferowane jako odpowiedź na żądanie

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


0

Content-Language Nagłówka podmiot jest używany do określenia języka (ów) przeznaczone dla publiczności, więc to, że pozwala użytkownikowi rozróżnić według własnego języka preferowanego przez użytkownika.

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

- Dokumentacja w sieci WWW MDN - Nagłówki HTTP - Język treści

Accept-LanguagePreferowany jest żądanie HTTP nagłówek reklamuje które języki klient jest w stanie zrozumieć, a które locale wariant. (Przez języki rozumiemy języki naturalne, takie jak angielski, a nie języki programowania).

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

- Dokumentacja w sieci WWW MDN - Nagłówki HTTP - Accept-Language

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.