2011-05-27 127 views
38

我已經看到了Content-LanguageAccept-Language的HTTP標頭,有人可以解釋這些是什麼和他們之間的區別?我有一個多語言網站,並且想知道是否應該爲用戶設置當前所選語言的網站。什麼是內容語言和接受語言?

+0

你可能不應該添加內容,語言到您的網站打擾的響應,因爲瀏覽器通常不會使用它們。但是,您可以在HTML中使用lang屬性。 – 2012-01-18 18:21:09

回答

64

Content-Language來自服務器,並讓客戶端知道請求的頁面上顯示的是什麼語言。 Accept-Language來自客戶端,並讓服務器知道用戶的首選語言。可以有多種語言,每種語言都有可選的權重或「質量」值。例如:

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設置值,以強制您的網站使用某種語言。這是因爲有些用戶可能希望以某種語言查看您的網站,而不會更改他們的語言接受偏好。

+12

對你的回答略作調整:Content-Language是一個內容頭,因此它適用於從服務器到客戶端或從客戶端到服務器的內容。 – 2012-01-18 18:19:28

+0

RFC2616:「Content-Language實體標題字段描述封閉實體的目標受衆的自然語言。但是,僅僅因爲實體中存在多種語言並不意味着它適用於多語言受衆。一個例子就是初學者的語言入門,如「拉丁語的第一課」,這明顯是爲有英語讀寫能力的讀者使用的。在這種情況下,內容語言恰當地只包括​​「en」。「R. Fielding,UC Irvine,J. Gettys,J. Mogul,H. Frystyk,L. Masinter,P. Leach,T. Berners-Lee; 1999. – 2017-04-04 12:59:38

+0

因此,這不是頁面上的絕對語言。參見[RFC 2616第14.12節](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.12)。 – 2017-04-04 13:06:32

8

Content-Language描述了特定內容旨在用於的語言。 Accept-Language是用戶代理需要內容的語言列表。想到這一點的最佳方式是Content-Language描述了內容,並且Accept-Language傳達了首選項。

4

Content-Language實體標題字段描述封閉實體的目標受衆的自然語言。請注意,這可能不等同於實體主體內使用的所有語言。

的Accept-Language請求頭域限制了一套自然語言是優選作爲請求

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