Accept-Language header
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Tiêu đề HTTP Accept-Language yêu cầu chỉ ra ngôn ngữ tự nhiên và địa phương mà máy khách ưa thích.
Máy chủ sử dụng thương lượng nội dung để chọn một trong các đề xuất và thông báo cho máy khách về lựa chọn với tiêu đề phản hồi Content-Language.
Các trình duyệt đặt các giá trị bắt buộc cho tiêu đề này theo ngôn ngữ giao diện người dùng đang hoạt động của chúng.
Người dùng cũng có thể cấu hình các ngôn ngữ ưa thích bổ sung thông qua cài đặt trình duyệt.
Tiêu đề Accept-Language thường liệt kê các ngôn ngữ địa phương giống như thuộc tính navigator.languages, với các giá trị q (giá trị chất lượng) giảm dần. Một số trình duyệt, như Chrome và Safari, thêm thẻ ngôn ngữ dự phòng chỉ có ngôn ngữ trong Accept-Language. Ví dụ, en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 khi navigator.languages là ["en-US", "zh-CN"]. Vì mục đích bảo mật (giảm fingerprinting), cả Accept-Language và navigator.languages có thể không bao gồm danh sách đầy đủ các tùy chọn của người dùng. Ví dụ, trong Safari (luôn luôn) và chế độ ẩn danh của Chrome, chỉ có một ngôn ngữ được liệt kê.
Tiêu đề này đóng vai trò là gợi ý khi máy chủ không thể xác định ngôn ngữ nội dung đích theo cách khác (ví dụ, sử dụng URL cụ thể phụ thuộc vào quyết định rõ ràng của người dùng).
Máy chủ không bao giờ nên ghi đè lên lựa chọn ngôn ngữ rõ ràng của người dùng. Nội dung của Accept-Language thường nằm ngoài sự kiểm soát của người dùng (khi đi du lịch, chẳng hạn).
Người dùng cũng có thể muốn truy cập trang bằng ngôn ngữ khác với ngôn ngữ giao diện người dùng.
Máy chủ có thể gửi lại mã lỗi 406 Not Acceptable khi không thể phục vụ nội dung bằng ngôn ngữ phù hợp, nhưng điều này hiếm khi được triển khai.
Các máy chủ thường bỏ qua tiêu đề Accept-Language trong những trường hợp đó và gửi phản hồi thành công với tài nguyên phù hợp nhất để có trải nghiệm người dùng tốt hơn.
| Loại tiêu đề | Tiêu đề yêu cầu |
|---|---|
| Tiêu đề yêu cầu bị cấm | Không |
| CORS-safelisted request header | Có* |
* Giá trị chỉ có thể là 0-9, A-Z, a-z, dấu cách, hoặc các ký tự *,-.;=.
Cú pháp
Accept-Language: <language>
Accept-Language: *
// Nhiều kiểu, có trọng số với cú pháp giá trị chất lượng:
Accept-Language: fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5
Chỉ thị
<language>-
Một thẻ ngôn ngữ (đôi khi được gọi là "mã định danh địa phương"). Bao gồm thẻ ngôn ngữ cơ sở 2-3 chữ cái chỉ ra một ngôn ngữ, tùy chọn tiếp theo bởi các thẻ con bổ sung được phân tách bằng
-. Thông tin thêm phổ biến nhất là biến thể quốc gia hoặc vùng (nhưen-UShoặcfr-CA) hoặc loại bảng chữ cái để sử dụng (nhưsr-Latn). Các biến thể khác, như loại chính tả (de-DE-1996), thường không được sử dụng trong ngữ cảnh của tiêu đề này. *(ký tự đại diện)-
Bất kỳ ngôn ngữ nào không khớp với bất kỳ ngôn ngữ nào khác có trong trường
Accept-Language. ;q=(q-factor weighting)-
Bất kỳ giá trị nào được đặt theo thứ tự ưu tiên được biểu thị bằng giá trị chất lượng tương đối gọi là trọng số. Giá trị chất lượng mặc định là
1.
Ví dụ
>Sử dụng tiêu đề Accept-Language
Yêu cầu sau đây có ưu tiên cho tiếng Đức sử dụng ngôn ngữ cơ sở de:
Accept-Language: de
Sử dụng giá trị chất lượng trong Accept-Language
Yêu cầu sau cho thấy sự ưa thích mạnh hơn đối với tiếng Đan Mạch, nhưng chấp nhận tiếng Anh Anh và các loại tiếng Anh khác ở mức độ ưu tiên thấp hơn:
Accept-Language: da, en-gb;q=0.8, en;q=0.7
Thông số kỹ thuật
| Specification |
|---|
| HTTP Semantics> # field.accept-language> |
Khả năng tương thích trình duyệt
Xem thêm
- HTTP thương lượng nội dung
- Tiêu đề với kết quả thương lượng nội dung:
Content-Language - Các tiêu đề tương tự khác:
TE,Accept-Encoding,Accept