2010-12-14 20 views
17

Tôi đã tự hỏi ý nghĩa của việc sử dụng thuộc tính "lang" là gì và nó khác với việc sử dụng thẻ meta "Content-Language" như thế nào?Sự khác nhau giữa thuộc tính lang và thẻ <meta http-equiv = "Content-Language" content = "en-US"> là gì?

Xét đoạn mã sau:

<html lang="en"> 
    <head> 
     <meta http-equiv="Content-Language" content="en-US"> 
    </head>... 

giả định của tôi là trình duyệt được đọc giá trị thẻ meta, nhưng DOM là có liên quan với thuộc tính "lang". Điều này có đúng không? Có bất kỳ sắc thái nào mà tôi không biết?

Trả lời

13

Thuộc tính lang (trên phần tử HTML) chỉ định ngôn ngữ cho tài liệu (trừ khi được ghi đè bằng thuộc tính lang khác có thể thay đổi ngôn ngữ cho một phần của tài liệu).

Tiêu đề HTTP nội dung-ngôn ngữ chỉ định ngôn ngữ của đối tượng dự định. Điều này không giống như ngôn ngữ mà tài liệu thực sự được viết. Ví dụ: một phần của khóa học tiếng Pháp có thể bao gồm một trang được viết bằng tiếng Pháp, nhưng Ngôn ngữ nội dung sẽ là vi vì nó được thiết kế để học tiếng Anh Người Pháp.

Từ the spec:

Các Content-Language lĩnh vực thực thể tiêu đề mô tả ngôn ngữ tự nhiên (s) của đối tượng dự định cho đơn vị kèm theo. Lưu ý rằng điều này có thể không tương đương với tất cả các ngôn ngữ được sử dụng trong thực thể.

Siêu HTTP HTTP là tiêu đề HTTP của người nghèo. Nó có tất cả ý nghĩa của tiêu đề HTTP thực, nhưng ít sự tôn trọng (và hỗ trợ).

Theo quy tắc chung, Ngôn ngữ nội dung được nhiều người quan tâm hơn đối với công cụ tìm kiếm và thuộc tính lang là mối quan tâm nhiều hơn đối với người đọc màn hình.

+0

Thật kỳ lạ, tôi vừa phát hiện ra http-equiv cho ngôn ngữ nội dung để có * hỗ trợ trình duyệt * nhiều hơn tiêu đề HTTP thích hợp! Chỉ Firefox mới có quyền này: http://artdent.homelinux.net/~josh/language.html –

+0

Tôi nghĩ rằng tôi muốn lớp đó là một lỗi trong Firefox. Nó không nên dùng ngôn ngữ nội dung như chỉ định ngôn ngữ tài liệu. – Quentin

+0

Theo HTML4 (và 5), nó nên. –

3

Chúng có nghĩa giống nhau - đặt ngôn ngữ của nội dung được đề cập - tuy nhiên thuộc tính lang có mức độ ưu tiên cao hơn. Xem 8.1.2 Inheritance of language codes. Chúng xử lý các trường hợp sử dụng khác nhau - thuộc tính lang có thể được đặt <i lang=la>exempla gratis</i> trên một phần tử riêng lẻ, trong khi tiêu đề Content-Language có thể được cấu hình trên toàn cầu bởi máy chủ để áp dụng cho toàn bộ bộ tài liệu.

Ví dụ của bạn hiển thị hai cách tương đương để đặt ngôn ngữ của phần tử html, nhưng vì thuộc tính lang được ưu tiên, giá trị sẽ là "en" chứ không phải "en-US".

+0

Mặc dù cả hai câu trả lời đều hữu ích, tôi nghĩ câu trả lời này là gọn gàng nhất, vì vậy tôi sẽ trao giải này với dấu kiểm màu xanh lục. Cảm ơn cả jleedev và David Dorward! – mariachimike

+0

Chúng không có ý giống nhau, câu trả lời của Quentin giải thích sự khác biệt –