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["en-US", "zh-CN"]. Vì mục đích bảo mật (giảm fingerprinting), cả Accept-Languagenavigator.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

http
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-US hoặc fr-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:

http
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:

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

Thông số kỹ thuật

Thông số kỹ thuật
HTTP Semantics
# field.accept-language

Khả năng tương thích trình duyệt

Xem thêm