Audit html-xml-lang-mismatch
Ensure that HTML elements with both valid lang and xml:lang attributes agree on the base language of the page
Impact:
WCAG-Konformität:
- AWCAG 3.1.1
Issue type:
failureHTML page lang and xml:lang attributes have matching values
This rule checks that both `lang` and `xml:lang` attributes on the root element of a non-embedded HTML page, have the same primary language subtag.
Applicability
This rule applies to any document element if it is an html
element for which all the following are true:
- is in a top-level browsing context; and
- has a node document with a content type of
text/html
; and - has a
lang
attribute with a known primary language tag; and - has a non-empty
xml:lang
attribute.
Expectation
For each test target, the values of the primary language subtags, if any exist, for the lang
and xml:lang
attributes are the same.
Background
This rule is only applicable to non-embedded HTML pages. HTML pages embedded into other documents, such as through iframe
or object
elements are not applicable because they are not web pages according to the definition in WCAG.
Assumptions
-
The language of the page can be set by other methods than the
lang
attribute, for example using HTTP headers or themeta
element. These methods are not supported by all assistive technologies. This rule assumes that these other methods are insufficient to satisfying Success Criterion 3.1.1: Language of Page. -
This rule assumes that user agents and assistive technologies can programmatically determine known primary language tags even if these do not conform to the RFC 5646 syntax.
-
This rule assumes that only known primary language tags are enough to satisfy Success Criterion 3.1.1 Language of Page; this notably excludes grandfathered tags and ISO 639.2 three-letters codes, both having poor support in assistive technologies.
-
The rule assumes that having
lang
andxml:lang
attributes with matching primary language subtags but non-matching language tags overall, will not cause accessibility issues. This is not necessarily the case for all languages. One notable case is the language tags for Cantonese (zh-yue
) and Mandarin (zh-cmn
) where the primary language subtags match, but the extended language subtags don't. Such a case would not fail this rule, but could lead to accessibility issues.
Accessibility Support
Since most assistive technologies will consistently use lang
over xml:lang
when both are used, violation of this rule may not necessarily be a violation of WCAG 2. Only when there are inconsistencies between assistive technologies as to which attribute is used to determine the language does this lead to a violation of SC 3.1.1.
Bibliography
- H57: Using language attributes on the html element
- RFC 5646: Tags for Identifying Languages
- The
lang
andxml:lang
attributes
Test Cases
Passed
Passed Example 1
This html
element has identical primary language subtags for its lang
and xml:lang
attributes.
<html lang="EN" xml:lang="en"></html>
Passed Example 2
This html
element has identical primary language subtags for its lang
and xml:lang
attributes. The extended language subtags also match.
<html lang="en-GB" xml:lang="en-GB"></html>
Passed Example 3
This html
element has identical primary language subtags for its lang
and xml:lang
attributes. The extended language subtags do not match, but this is not required by this rule.
<html lang="en-GB" xml:lang="en-US"></html>
Failed
Failed Example 1
This html
element has different primary language subtags for its lang
and xml:lang
attributes.
<html lang="fr" xml:lang="en"></html>
Failed Example 2
This html
element has different primary language subtags for its lang
and xml:lang
attributes. The extended language subtags do match, but this rules only focus on the primary language subtags.
<html lang="fr-CA" xml:lang="en-CA"></html>
Inapplicable
Inapplicable Example 1
This rule does not apply to svg
elements.
<svg xmlns="http://www.w3.org/2000/svg" lang="en" xml:lang="en"></svg>
Inapplicable Example 2
This rule does not apply to svg
elements, even inside an html
element.
<html>
<body>
<svg lang="en"></svg>
</body>
</html>
Inapplicable Example 3
This rule does not apply to math
elements.
<math xml:lang="en"></math>
Inapplicable Example 4
This rule only applies to documents with a content type of text/html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html lang="en" xml:lang="en"></html>
Inapplicable Example 5
This rule does not apply to html
elements without an xml:lang
attribute.
<html lang="en"></html>
Inapplicable Example 6
This rule applies neither to html
elements without an xml:lang
attribute, nor to html
in nested browsing context
<html lang="en">
<iframe srcdoc="<html lang='en' xml:lang='en'></html>" />
</html>
Inapplicable Example 7
This rule does not apply to html
elements with an empty (""
) xml:lang
attribute.
<html lang="fr" xml:lang=""></html>
Autoren: Jey Nandakumar
Vorherige Autoren: Annika Nietzio
Finanzierung: WAI-Tools