?
This document uses PHP Chinese website manual Release
Accept-Language
請(qǐng)求的 HTTP 標(biāo)頭通告哪些語(yǔ)言客戶端是能夠理解,并且其區(qū)域的變體是優(yōu)選的。使用內(nèi)容協(xié)商,服務(wù)器然后選擇其中一個(gè)提議,使用它并通過(guò)Content-Language
響應(yīng)頭通知客戶它的選擇。瀏覽器根據(jù)它們的用戶界面語(yǔ)言為該標(biāo)題設(shè)置足夠的值,并且即使用戶可以改變它,這也很少發(fā)生(并且因?yàn)樗鼘?dǎo)致指紋)而被忽視。
當(dāng)服務(wù)器無(wú)法通過(guò)另一種方式確定語(yǔ)言時(shí),使用此標(biāo)題是一種暗示,例如特定的 URL ,由明確的用戶決定控制。建議服務(wù)器不要重寫明確的決定。該內(nèi)容Accept-Language
通常不受用戶的控制(例如在不同國(guó)家旅行和使用網(wǎng)吧時(shí)); 用戶可能還想用除用戶界面的語(yǔ)言環(huán)境之外的其他語(yǔ)言訪問(wèn)頁(yè)面。
如果服務(wù)器無(wú)法提供任何匹配的語(yǔ)言,理論上可以發(fā)回406
(不可接受的)錯(cuò)誤代碼。但是,為了獲得更好的用戶體驗(yàn),很少做到這一點(diǎn),更常見(jiàn)的方式是Accept-Language
在這種情況下忽略 header 。
Header type | Request header |
---|---|
Forbidden header name | no |
CORS-safelisted request-header | yes |
Accept-Language: <language>Accept-Language: <locale>Accept-Language: *// Multiple types, weighted with the quality value syntax:Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
<language>
以2或3個(gè)字符的字符串表示的語(yǔ)言。
<locale>
完整的語(yǔ)言標(biāo)簽。除了語(yǔ)言本身之外,它可能包含更多的信息'-'
。最常見(jiàn)的額外信息是國(guó)家變體(如'en-US'
)或使用的字母類型(如'sr-Lat'
)。其他類似正字法('de-DE-1996'
)的變體通常不用于此標(biāo)題的上下文中。
*
任何語(yǔ)言; '*'
被用作通配符。
;q=
(q因子權(quán)重)使用稱為權(quán)重的相對(duì)質(zhì)量值以優(yōu)先順序表示的任何值。
Accept-Language: de Accept-Language: de-CH Accept-Language: en-US,en;q=0.5
Specification | Title |
---|---|
RFC 7231, section 5.3.5: Accept-Language | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Context |
Feature | Chrome | Firefox | Edge | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |
Feature | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
Basic Support | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) | (Yes) |