Intended audience: this article is mainly intended for people developing the internationalization checker, but can also be used by those interested in tracking source references quickly for a particular report.
This page lists all the report messages used by the W3C Internationalization Checker. As well as the text of the report and the severity of the report (with variants), it lists the conditions which trigger that report. It also lists references to articles or specifications that provide authoritative sources for the report.
Text such as %1 indicates the location of a list or item of information that will be generated at run time when a page is checked.
The checker assumes that pages served as text/html
are parsed by the browser as HTML5. There are sometimes alternative tests or wording for pages served as application/xhtml+xml
, or for XHTML 1.0 pages that might be processed outside the browser as XML.
This page will be updated from time to time, as new features are added to the checker or existing features are refined.
A character encoding is specified in the HTTP header (%1
), but there was no matching encoding declaration in the page. This may lead to problems later if there is a chance that the document will be read from or saved to disk, CD, etc.
In addition, the W3C Internationalization (i18n) Group recommends to always include a visible encoding declaration in a document, because it helps developers, testers, or translation production managers to check the encoding of a document visually.
Add information to indicate the character encoding of the page inside the page itself.
The UTF-8 Byte Order Mark (BOM) was found at the beginning of the page.
Nothing. Just note that this sets the encoding of the page to UTF-8, and overrides all other encoding declarations. If you want to, and as long as you indicate the character encoding for the page in another way, you can use an editor or an appropriate tool to remove the byte order mark from the beginning of the file.
Polyglot, 3. Specifying a Document's Character Encoding specification
No need to test for UTF-8 BOM with non-UTF-8 encoding, since that's picked up by the multiple encoding test.
The UTF-8 Byte Order Mark (BOM) was found at the beginning of the page, but another, non-UTF-8, encoding declaration was also found. Here is a list of encoding declarations, including the BOM:
%1
The BOM will override all other encoding declarations, and cause the page to be treated as UTF-8.
If you want the page to be treated as UTF-8, set the other encoding declaration to UTF-8 also.
It is strongly recommended that you always use UTF-8, but if you have a special reason for using a different encoding you will have to remove the BOM.
Polyglot, 3. Specifying a Document's Character Encoding specification
No need to test for UTF-8 BOM with non-UTF-8 encoding, since that's picked up by the multiple encoding test.
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
The UTF-8 Byte Order Mark (BOM) was found below the top of the page. This is often caused when the BOM is at the top of a file or chunk of content that is included into a page. It can sometimes introduce blank spaces or short sequences of strange-looking characters (such as ).
If it causes a problem, you should use an editor or an appropriate tool, if you can, to remove the byte order mark from the beginning of the file or chunk of content where it appears.
If the problem does arise from a BOM at the top of an included file, this can often be achieved by saving the content with appropriate settings in the editor. On the other hand, some editors (such as Notepad on Windows) do not give you a choice, and always add the byte order mark. In this case you may need to use a different editor.
meta
declaration, and a utf-8 BOM has been detected.The character encoding of this page is indicated using a byte-order mark.
Although this is usually sufficient to indicate to a browser what is the encoding of the page, the W3C Internationalization (i18n) Group recommends to always include a visible encoding declaration in a document as well, because it helps developers, testers, or translation production managers to check the encoding of a document visually.
Add a meta
tag or XML declaration, as appropriate, to your page to indicate the character encoding used.
html
This page currently uses the following XML declaration:
%1
XML declarations are used by XML processors, and are not appropriate for pages that are parsed as HTML.
HTML5 only allows comments before the Doctype, so this also prohibits the use of the XML declaration.
xhtml
This page currently uses the following XML declaration:
%1
XML declarations are used by XML processors, and are not appropriate for pages that are parsed as HTML. HTML5 only allows comments before the Doctype, so this also prohibits the use of the XML declaration.
XML declarations are sometimes used with XHTML pages that are served as text/html
, so that when those files are read by an XML parser (outside the browser context), the encoding information is recognized. However, because XML declarations should not be used in a document served to a browser as HTML, you should avoid their use for such hybrid documents. If you use UTF-8 you don't need an XML declaration for a conforming XML parser.
html
Remove the XML declaration from your page. Use an alternative method to indicate the character encoding of the page, such as a meta
element.
xhtml
Since you are using XHTML 1.x but serving it as text/html
, use UTF-8 as the character encoding for your page and remove the XML declaration.
HTML5, 8.1 Writing HTML documents specification
Polyglot Markup: HTML-Compatible XHTML Documents, 2. Processing Instructions and the XML Declaration specification
XHTML 1.0, C.1. Processing Instructions and the XML Declaration specification
XHTML 1.0, C.9. Character Encoding specification
XML 1.0, 4.3.3 Character Encoding in Entities specification
This page only declares a character encoding in the following XML declaration.
%1
An HTML parser does not recognize encoding declarations in the XML declaration, so effectively no encoding has been specified for this page.
HTML5 requires the character encoding to be declared, using either a meta
element, an HTTP header, or a byte-order mark.
Remove the XML declaration and add an alternative character encoding declaration. It is recommended to use a meta
element to set the character encoding of the page. If you set the encoding in the HTTP header or using a byte-order mark, it is usually best to use a meta
element too.
HTML: The Markup Language, 4.2. Character encoding declaration specification
HTML5, 8.1 Writing HTML documents specification
Polyglot Markup: HTML-Compatible XHTML Documents, 2. Processing Instructions and the XML Declaration specification
XHTML 1.0, C.1. Processing Instructions and the XML Declaration specification
XHTML 1.0, C.9. Character Encoding specification
meta
character encoding declaration uses http-equiv
meta
element with an http-equiv
attribute in the Encoding declaration state.This page uses the following character encoding declaration with an http-equiv
attribute:
%1
This is fine, however you may find it easier to use the meta
element with a charset
attribute instead. For example:
<meta charset="%2">
If you want to change, replace the http-equiv
and content
attributes in your meta
tag with a charset
attribute.
HTML5, 4.2.5.3 Pragma directives specification
meta
encoding declarations don't work with XMLmeta
element with a charset
attribute or a meta
element with an http-equiv
attribute in the Encoding declaration state.This page is being served as XML and there is a character encoding declaration in the following meta
tag:
%1
Encoding declarations in meta
tags are not recognized by XML processors, so this declaration has no actual effect.
Unless you sometimes serve this page as text/html
, you can remove the meta
tag.
HTML: The Markup Language, 4.2. Character encoding declaration specification
HTML5, 4.2.5.5 Specifying the document's character encoding specification
XHTML 1.0, C.9. Character Encoding specification
meta
encoding declarationsmeta
element with a charset
attribute or a meta
element with an http-equiv
attribute in the Encoding declaration state, and the encoding specified is not utf8/utf16.The only character encoding declaration for this page is in the following meta
element, which specifies an encoding that is neither UTF-8 nor UTF-16:
%1
If a document is treated as XML and is encoded as neither UTF-8 nor UTF-16, you must declare the encoding in the XML declaration. The meta
tag declaration is not recognized by an XML processor. When parsed as XML, this document will be treated as UTF-8.
Add an XML declaration with encoding information, or change the character encoding for this page to UTF-8. If this page is never parsed as HTML, you can remove the meta
tag.
This section still to be worked on
Polyglot Markup, 3. Specifying a Document's Character Encoding specification
XML 1.0, 4.3.3 Character Encoding in Entities specification
meta
tagmeta
element used to declare character encoding.One document has to have a single character encoding, and must only have one meta
element to declare the character encoding. This page has the following list of meta
elements containing character encoding declarations:
%1
Edit the markup to remove all but one meta
element.
HTML5, 4.2.5 The meta element article
HTML5, 8.2.2 The input stream specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
meta
encoding declaration is used.This HTML5 page has a character encoding declaration in a meta
element:
%1
The HTML5 specification disallows the use of meta
character encoding declarations with UTF-16 encoded documents. A UTF-16 byte-order mark (BOM) is the only in-document encoding allowed.
Remove the meta
encoding declaration.
Declaring the character encoding for HTML
meta
encoding declaration is used.The meta
character encoding declaration for this page says that the page is encoded as UTF-16:
%1
The character encoding declaration is incorrect: this is not a UTF-16 encoded file. In HTML4.01 the page will be parsed as the default encoding for the browser. In XHTML 1.x and HTML5 it will be treated as UTF-8. If your document used a different character encoding than these, you will likely see corruption of the non-ASCII text on your page.
Change the encoding declaration to reflect the actual encoding of the page.
Declaring the character encoding for HTML
HTML5, 8.2.2 The input stream specification
utf-16be
or utf-16le
encoding declaration is used in a meta
tag, an xml declaration, or a http header.The following encoding declaration(s) specify whether the page is either big-endian (UTF-16BE) or little-endian (UTF-16LE):
%1
You should not use the UTF-16BE and UTF16-LE charset names in character encoding declarations for markup - you should, instead, use just "UTF-16". All UTF-16 pages should start with a byte-order mark, and this will indicate whether the character encoding used is big- or little-endian.
Ensure that the page starts with a byte-order mark (BOM) and change the encoding declaration(s) to "UTF-16".
Declaring the character encoding for HTML
XML 1.0, 4.3.3 Character Encoding in Entities specification
meta
tag not within 1024 bytes of the file startmeta
element with encoding declaration doesn't fit entirely within the first 1024 bytes of the file.The following character encoding declaration did not fit completely within the first 1,024 bytes of the start of the page:
%1
The HTML5 spec says that the element containing the character encoding declaration must be serialized completely within the first 1024 bytes of the document. Otherwise, browsers may not recognize this encoding declaration.
Move the character encoding declaration nearer to the top of the page. Usually it is best to make it the first thing in the head
element.
HTML5, 8.2.2.1 Determining the character encoding specification
charset
attribute used on a
or link
elementscharset
attribute is used on a link
or an a
element.The following a
and/or link
elements contained a charset
attribute:
%1
The charset
attribute has been deprecated on these elements.
Remove the charset
attribute. If pointing to a page that is under your control, ensure that any appropriate character encoding information is provided for that page.
HTML5, 11.2 Non-conforming features specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
There is no declaration or byte-order mark to indicate the character encoding of the page. You should always specify the encoding used for an HTML page. If you don't, you risk that characters in your content will be incorrectly interpreted. This is not just an issue of human readability, increasingly machines need to understand your data too.
HTML5 requires a meta
encoding declaration if the character encoding is not declared in the HTTP header or a byte-order mark.
The W3C Internationalization (i18n) Group recommends to always include a visible encoding declaration in a document, because it helps developers, testers, or translation production managers to check the encoding of a document visually.
Add information to indicate the character encoding of the page.
HTML: The Markup Language, 4.2. Character encoding declaration specification
HTML5.1, 4.2.5.5 Specifying the document's character encoding specification
HTML5, 4.2.5.5 Specifying the document's character encoding specification
HTML 4.01, 5.2.2 Specifying the character encoding specification
Character Model for the World Wide Web, 4.4.1 Mandating a unique character encoding, C034 specification
No character encoding is declared for this page. Since it is being served as XML, the browser and any XML processor will assume that the encoding is UTF-8. If you are not saving your document as UTF-8, you will find that characters are being corrupted.
Even if you are intending the document to be read as UTF-8, the W3C Internationalization (i18n) Group recommends to always include a visible encoding declaration in a document, because it helps developers, testers, or translation production managers to check the encoding of a document visually.
Add information to indicate the character encoding of the page inside the page itself .
The page currently uses the following non-UTF-8 character encoding declaration(s):
%1
UTF-8 is based on Unicode. A Unicode character encoding makes it easier to use a wide range of characters, from the registered trademark symbol to characters in multiple languages. It also simplifies the use of scripts and databases for multilingual sites, and allows you to more easily expand your site to cover new languages, when needed. Using non-UTF-8 encodings can also have unexpected results on form submission and URL encodings, which use the document's character encoding by default. The HTML5 specification and the Encoding specification recommend its use in the strongest terms.
(UTF-16 is also a character encoding based on Unicode, but is little used on the Web, and you should not use it.)
Set your authoring tool to save your content as UTF-8, and change the encoding declarations.
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
The page currently declares the character encoding using a non-preferred name:
%1
The preferred encoding name is:
%2
A wider range of browsers will support your page if you use the preferred encoding name. However, it is strongly recommended that you convert your page to use the UTF-8 character encoding.
Preferably, set your authoring tool to save your content as UTF-8, and change the encoding declarations. Otherwise, change the name of the encoding for your page to the preferred name. (Legacy encoding names are listed in the Encoding specification, in the left column of the table in the section Names and labels.)
HTML5, 4.2.5.5 Specifying the document's character encoding specification
Encoding Spec: Names and labels specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
An encoding declaration on this page names a character encoding that is unsupported:
%1
You should always use the UTF-8 encoding for your page. With an unrecognized character encoding your page will not work properly on browsers, and several unsupported character encodings create a security risk.
Set your authoring tool to save your content as UTF-8, and change the encoding declarations.
(Only use another encoding if you have an unusually good reason, and then choose one of the encodings listed in the Encoding specification, and use one of the names in the left column of the table in the section Names and labels.)
HTML5, 4.2.5.5 Specifying the document's character encoding specification
Encoding Spec: Names and labels specification
xml:lang
attribute without an associated lang
attributexml:lang
attribute but no lang
attribute.html5
In the following tag or tags the xml:lang
attribute is not accompanied by a lang
attribute.
%1
This causes a problem because HTML parsers don't recognise xml:lang
, they only recognise the lang
attribute.
xhtml
In the following tag or tags the xml:lang
attribute is not accompanied by a lang
attribute.
%1
This causes a problem because HTML parsers don't recognise xml:lang
, they only recognise the lang
attribute.
Since this is an XHTML page, you may be intending to process it outside the browser using an XML parser. In that case, the xml:lang
would carry the language information, so you could use both a lang
attribute and an xml:lang
attribute (but the values must be the same). You will still need the lang
attribute to display the page in a browser as HTML.
html5
Replace the xml:lang
attribute with a lang
attribute.
xhtml
Replace the xml:lang
attribute with a lang
attribute, unless you intend to process the page as XML outside the browser. In that case, add a lang
attribute to each of the above tags, with the same value as the xml:lang
attribute.
Language declarations explained
HTML5, 3.2.3.3 The lang and xml:lang attributes specification
Polyglot markup, 7.2 Language Attributes specification
XHTML 1.0, C.7. The lang and xml:lang Attributes specification
XHTML 1.1, 3. The XHTML 1.1 Document Type specification
lang
attribute without an associated xml:lang
attributelang
attribute but no xml:lang
attribute.xml
In the following tag or tags the lang
attribute is not accompanied by an xml:lang
attribute.
%1
XML processors recognise xml:lang
but don't recognise lang
. When serving a page as XML, you should have an xml:lang
attribute wherever there is a lang
attribute. (You only need to have the lang
attribute if you plan to serve the page as text/html
also.)
xhtml
In the following tag or tags the lang
attribute is not accompanied by an xml:lang
attribute.
%1
This may cause problems if you try to process this XHTML page outside the browser as XML, since XML processors recognise xml:lang
but don't recognise lang
. For XHTML you may want to use both.
xml
Wherever you have a lang
attribute, either replace it with an xml:lang
attribute, or add an xml:lang
attribute with the same value.
xhtml
For each lang
attribute, add an xml:lang
attribute with the same value, if you are concerned about XML processing.
Language declarations explained
Polyglot markup, 7.2 Language Attributes specification
XHTML 1.0, C.7. The lang and xml:lang Attributes specification
XHTML 1.1, 3. The XHTML 1.1 Document Type specification
XML 1.0, 2.12 Language Identification specification
lang
attribute value did not match an xml:lang
value when they appeared together on the same tag.lang
and xml:lang
attributes don't match.In each of the following tag or tags the language values of the lang
and xml:lang
attributes don't match:
%1
Change one of the values in each tag by editing the markup.
Language declarations explained
HTML5, 3.2.3.3 The lang and xml:lang attributes specification
Polyglot markup, 7.2 Language Attributes specification
XHTML 1.0, C.7. The lang and xml:lang Attributes specification
XHTML 1.1, 3. The XHTML 1.1 Document Type specification
html
tag has no language attributehtml
tag has no xml:lang
attribute and no lang
attribute.There is no language attribute in the html
tag.
%1
A language attribute on the html
tag sets the default natural language for the page. This information is used for processing the content in various ways, including such things as spell-checking, accessibility, data formatting, hyphenation, default fonts and line-breaking, case conversion, and various other features for rendering the page. Every page should have the correct default language specified.
html
Add a lang
attribute to the html
tag that indicates the default language of your page.
Example: <html lang='de'>
xhtml
Since this is an XHTML page served as HTML, you should add a lang
attribute to the html
tag.
If you intend to parse this page elsewhere as XML, you may want to also add an xml:lang
attribute, to indicate the default language of your page. The lang
attribute is understood by HTML processors, but not by XML processors, and vice versa.
Example: <html lang="de" xml:lang="de">
xml
Add an xml:lang
attribute to the html
tag that indicates the default language of your page.
Example: <html xml:lang='de' xmlns='http://www.w3.org/1999/xhtml'>
Language declarations explained
Declaring the overall language of a page
HTML5, 3.2.3.3 The lang and xml:lang attributes specification
Polyglot markup, 7.2 Language Attributes specification
HTML 4.01, 8.1 Specifying the language of content: the lang attribute specification
XHTML 1.0, C.7. The lang and xml:lang Attributes specification
XHTML 1.1, 3. The XHTML 1.1 Document Type specification
XML 1.0, 2.12 Language Identification specification
html
tag will have no effect html
tag has no lang
attribute, but has an xml:lang
attribute.html
tag has no xml:lang
attribute, but has a lang
attribute.This is the html
tag in this document.
%1
A language attribute on the html
tag sets the default natural language for the page. This information can be used for processing the content in various ways, including such things as spell-checking, accessibility, data formatting, and choice of styles for rendering the page. Every page should have the correct default language specified.
HTML parsers only recognize the lang
attribute. XML parsers only recognize the xml:lang
attribute. On this page the wrong attribute is being used, and so the default language of the page is not being recognized.
html
Since this page is served as HTML, use the lang
attribute.
xhtml
Since this page is served as HTML, use the lang
attribute. If there is a chance that the same page will also be processed by an XML parser, use both the lang
attribute and the xml:lang
attribute.
xml
Since this page is served as XML, use the xml:lang
attribute instead of a lang
attribute. If there is a chance that this page will also be served as text/html
in some circumstances, use both.
Language declarations explained
HTML5, 3.2.3.3 The lang and xml:lang attributes specification
Polyglot markup, 7.2 Language Attributes specification
HTML 4.01, 8.1 Specifying the language of content: the lang attribute specification
XHTML 1.0, C.7. The lang and xml:lang Attributes specification
XHTML 1.1, 3. The XHTML 1.1 Document Type specification
XML 1.0, 2.12 Language Identification specification
xml:lang
or lang
attribute with a value that is not just a-zA-Z0-9 plus hyphen.In the following tag or tags the language values of the lang
and xml:lang
attributes are not well-formed according to BCP47.
%1
Attributes values must contain a maximum of one language tag, and a language tag is composed of one or more subtags taken from the IANA Language Subtag Registry, separated by hyphens (eg. zh-Hans-SG
). There are various types of subtag, each with specific length ranges, and they must be arranged in the correct order.
Note: This check doesn't count subtags following the x
-, t-
or u-
singletons.
Note: The information table at the top of this page lists all the language tags used in the page tested. This report doesn't capture all the potential issues related to those language tags. The language tags listed in the table each link to the Language Subtag Lookup tool. You should follow those links to get a fuller picture.
Change the attribute values to conform to BCP47 syntax rules.
You can check whether your language tag value is valid using the 'check' input of the Language Subtag Lookup tool.
Internet-Draft: BCP 47 specification
HTML5, 3.2.3.3 The lang and xml:lang attributes specification
Polyglot markup, 7.2 Language Attributes specification
HTML 4.01, 8.1 Specifying the language of content: the lang attribute specification
XML 1.0, 2.12 Language Identification specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
In the following markup the language tags use one or more invalid subtags.
%1
Select each of these language tags in the table at the top of the page to determine which subtag or subtags are incorrect.
Note: This check also produces a result for 'grandfathered' tags, which are actually valid, but are deprecated by BCP 47. It doesn't check subtags following the x
-, t-
or u-
singletons.
Note: The information table at the top of this page lists all the language tags used in the page tested. This report doesn't capture all the potential issues related to those language tags. The language tags listed in the table each link to the Language Subtag Lookup tool. You should follow those links to get a fuller picture.
Change the attribute values so that they use valid BCP 47 subtags.
Internet-Draft: BCP 47 specification
HTML5, 3.2.3.3 The lang and xml:lang attributes specification
Polyglot markup, 7.2 Language Attributes specification
HTML 4.01, 8.1 Specifying the language of content: the lang attribute specification
XML 1.0, 2.12 Language Identification specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
In the following tag or tags the language values of the lang
and xml:lang
attributes use 'grandfathered' values in BCP47.
%1
Grandfathered values are deprecated by BCP 47, and should not be used. If you select the language tag in the table above, the subtag lookup tool will usually recommend a valid alternative.
Change the attribute values to the values recommended by the subtag lookup tool.
Internet-Draft: BCP 47 specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
In the following tag or tags the language values of the language attributes use zh-CN
or zh-TW
.
%1
This usage typically dates back to conventions established at a time before BCP 47 existed, when people needed to distinguish Simplified from Traditional Chinese. What is now a region tag (CN
or TW
) was used to imply the script.
BCP 47 now provides the script tags Hans
and Hant
for Simplified and Traditional Chinese, respectively. Using these tags rather than the region tags promotes greater clarity and accuracy.
If you are able, replace zh-CN
with zh-Hans
and zh-TW
with zh-Hant
, or use one of the other Chinese combinations that BCP 47 provides.
Internet-Draft: BCP 47 specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
meta
element usedmeta
element with the http-equiv
attribute set to Content-Language
.This page uses a meta
element with the http-equiv
attribute value set to Content-Language
.
%1
Do not use this Content-Language meta
element. It was made obsolete by the HTML5 specification because it was being used, incorrectly, instead of a lang
attribute on the html
tag, and because browsers are inconsistent in the way they handle it.
Remove the Content-Language meta
element, and ensure that you have used a lang
attribute on the html
tag to specify the default language of the page.
Language declarations explained
HTML5, 4.2.5.3 Pragma directives specification
Polyglot markup, 7.2 Language Attributes specification
class
or id
attribute.Unicode allows you to represent certain letters using different combinations of bytes. For example é can be represented as U+00E9 LATIN SMALL LETTER E WITH ACUTE or as U+0065 LATIN SMALL LETTER E followed by U+0301 COMBINING ACUTE ACCENT. To avoid problems when trying to match class or id names against CSS selectors, or for JavaScript lookup, all your markup tags and CSS and JavaScript code should use the same byte combinations for the same text, ie. be normalised.
Total number of non-NFC names: %1.
%2
It is recommended to save all content as Unicode Normalization Form C (NFC).
Unicode normalization forms article
%1
tags found with no class attributeb
tag is found without a class
attribute.One or more %1
tags that don't use a class
attribute were found in the source code for this page. These tags may cause problems for localization if the content for which they are used has more than one semantic value.
Total number of %1
tags: %2.
Number of %1
tags without a class attribute: %3.
You should not use %1
tags if there is a more descriptive and relevant tag available. If you do use them, it is usually better to add class
attributes that describe the intended meaning of the markup, so that you can distinguish one use from another.
Using <b> and <i> tags article
HTML5, 4.6.17 The b element article
HTML5, 4.6.16 The i element specification
%1
tags found with no class attributei
tag is found without a class
attribute.One or more %1
tags that don't use a class
attribute were found in the source code for this page. These tags may cause problems for localization if the content for which they are used has more than one semantic value.
Total number of %1
tags: %2.
Number of %1
tags without a class attribute: %3.
You should not use %1
tags if there is a more descriptive and relevant tag available. If you do use them, it is usually better to add class
attributes that describe the intended meaning of the markup, so that you can distinguish one use from another.
Using <b> and <i> tags article
HTML5, 4.6.17 The b element article
HTML5, 4.6.16 The i element specification
The page contains one or more numeric character escapes that represent forbidden characters in the C0 or C1 ranges.
This sometimes happens when people use the Windows code point for a character, rather than the Unicode code point. For example, when an escape representing the euro currency sign is written using hex values as €
instead of €
. The euro sign is at position 80 in the Windows-1252 code page, but numeric character escapes need to use Unicode code point values (in this case U+20AC). Some browsers may work around these issues for some characters, but the data is not correct and you may run into a problem at some point.
These are the character references found (the numbers may be hex or decimal in the source code):
%1
Ensure that all numeric character references use Unicode code point values for their numbers, and do not point to characters in the C0 and C1 ranges other than whitespace.
(Tip: If you want to find the Unicode code point for a character such as the euro sign, try searching for it in UniView.)
HTML5.1, 3.2.4.2.5. Phrasing content specification
translate
attributetranslate
attributes have incorrect values
.In the following tag or tags the value should be one of no
or yes
:
%1
Correct the attribute values.
HTML5, 3.2.5.4. The translate attribute specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
align
attribute is usedalign
attributes have been used on elements in the markup.In the following tag or tags the align
attribute was used:
%1
This attribute should no longer be used in HTML. In addition to being obsoleted by the HTML specification, embedding its values of left
and right
into the markup causes difficulties when translating into languages using right-to-left scripts, because the values need to be painstakingly reversed one by one. It is much better to handle this using CSS, since CSS makes it easy to propagate changes throughout this document, and indeed the site (and will in the future make life even easier as the start
and end
property values become more widely supported).
Remove the align
attribute and use CSS to achieve the same effect.
HTML5.1, 11.1. Obsolete but conforming features specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
The page contains one or more numeric character escapes that represent supplementary characters in Unicode using code points for surrogate characters. A supplementary character should be represented by a single code point value.
For example, the first letter of the Gothic alphabet is represented by 𐌰
, and not ��
.
These are the character references found (the numbers may be hex or decimal in the source code):
%1
Ensure that all numeric character references for supplementary characters use a single Unicode code point value as their number.
(Tip: If you want to find the Unicode code point for a character such as Gothic AHSA, try searching for it in UniView.)
HTML5, 3.2.5.4. The translate attribute specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
dir
attributedir
attribute contains values that are not rtl
, ltr
or auto
.In the following tag or tags the value should be one of rtl
, ltr
, or auto
:
%1
Correct the attribute values.
Markup for text direction explained
Setting up a right-to-left page
HTML5, 3.2.3.5 The dir attribute specification
HTML 4.01, 8.2 Specifying the direction of text and tables: the dir attribute specification
dir='rtl'
on the html
taghtml
tag has a language attribute with one of the following values, ar
, fa
, ur
, ckb
, he
, ug
, dv
, ps
, nqo
, syr
, or any language tag that includes the Arab
script tag. There is no dir
attribute on the html
tag, but there are dir
attributes elsewhere on the page.The lang
attribute on the html
tag ( %1
) indicates that this page may be written in a language that uses a right-to-left script. However, there is no dir
attribute on the html
tag.
It usually saves effort to set the dir
attribute on the html
element so that it is inherited throughout the whole page. This is also helpful for managing the direction of the title
element and other items that are displayed to the user outside the page itself.
If appropriate, add dir='rtl'
to the html
tag.
HTML5, 3.2.3.5 The dir attribute specification
HTML 4.01, 8.2 Specifying the direction of text and tables: the dir attribute specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
html
tag has a language attribute with one of the following values, ar
, fa
, ur
, ckb
, he
, ug
, dv
, ps
, nqo
, syr
, or any language tag that includes the Arab
script tag. There is no dir
attribute on the html
tag, nor elsewhere on the page.The lang
attribute on the html
tag ( %1
) indicates that this page may be written in a language that uses a right-to-left script. However, there is no dir
attribute used in the page.
One explanation for this could be that the page's language is incorrectly labelled.
Another explanation could be that CSS is being used to handle direction. It is recommended that you use markup, rather than CSS, to set the direction of text, since directional information can affect meaning and needs to be present even where CSS is not available.
If the language set on the html
tag is incorrect, change it.
If CSS is being used to handle direction, use the dir
attribute to set the base direction for the text, and remove the CSS. At a minimum, the dir
attribute should be used on the html
tag.
CSS vs. markup for bidi support
HTML5, 3.2.3.5 The dir attribute specification
HTML 4.01, 8.2 Specifying the direction of text and tables: the dir attribute specification
style
attribute that specifies a direction
property.The following style
attributes appear to be setting the direction of the text.
%1
It is recommended that you use markup, rather than CSS, to set the direction of text, since directional information can affect meaning and needs to be present even where CSS is not available.
Use the dir
attribute, or other markup, to set text direction, and remove the CSS.
CSS vs. markup for bidi support
HTML5, 3.2.3.5 The dir attribute specification
HTML 4.01, 8.2 Specifying the direction of text and tables: the dir attribute specification
bdo
tags found with no dir
attributebdo
tag exists with no dir
attribute.One or more bdo
tags that don't use a dir
attribute were found in the source code for this page. Without a dir
attribute, the bidirectional override will not be applied.
Total number of bdo
tags: %2.
Number of bdo
tags without a dir
attribute: %3.
Add a dir
attribute to each bdo
tag.
HTML5, 4.6.24 The bdo element specification
HTML 4.01, 8.2.4 Overriding the bidirectional algorithm: the BDO element specification
bdo
tag found with dir
attribute set to auto
bdo
tag has a dir
with the value auto
.The bdo
tag is not allowed to have a dir
attribute with a value of auto
.
Total number of bdo
tags: %2.
Number of bdo
tags with dir=auto
: %3.
Set the dir
value to rtl
or ltr
.
HTML5, 4.6.24 The bdo element specification
HTML 4.01, 8.2.4 Overriding the bidirectional algorithm: the BDO element specification
&rle;, &lre;, &pdf;, &rli;, &lri;, &fsi;, &pdi;, &rlo;, &lro;
.Named character entities exist in HTML for ‏ and ‎, but not for the other Unicode control characters used for text direction. The following is a list of invalid named character references found:
%1
Replace these, preferably using markup or, if that's not possible, with Unicode control characters.
HTML5, 4.6.24 The bdo element specification
HTML 4.01, 8.2.4 Overriding the bidirectional algorithm: the BDO element specification
.The page contains one or more directional control characters, represented without using escapes. The information panel above gives details about which are used (the items that don't have a &
or #
prefix). The total number found was %1.
You should be careful when using these characters, since they are invisible and a little hard to manage. Unless they are used in an attribute value or plain text element (such as title
), it is usually possible to achieve the same effect as the paired controls using markup. This is generally recommended.
Where possible, replace these, preferably using markup or, if that's not possible, with numeric character references (eg. ‏
or ‎
).
HTML5, 4.6.24 The bdo element specification
HTML 4.01, 8.2.4 Overriding the bidirectional algorithm: the BDO element specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
.The page contains escape sequences for one or more paired directional control characters. The information panel above gives details about which are used (the items with a #
prefix). The total number found was %1.
Unless they are used in an attribute value or plain text element (such as title
), it is usually possible to achieve the same effect as the paired controls using markup. This is generally recommended, though not essential.
One particular advantage of using markup is that currently the isolating control characters (RLI|LRI|FSI..PDI
) are not well supported by browsers, but there is better support available for isolation using markup. (Isolation of the text inside the paired controls from the text outside is essential to avoid spillover effects, and the Unicode Standard recommends that you use isolating paired controls rather than RLE|LRE..PDF
. For more information, see the further reading links.)
Where possible, replace these using markup, eg. ⁧...⁩
can be replaced with <span dir='rtl'>...</span>
.
HTML5, 4.6.24 The bdo element specification
HTML 4.01, 8.2.4 Overriding the bidirectional algorithm: the BDO element specification
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
HTML4 • HTML5 • XHTML1.0 • XHTML1.0x • XHTML1.1x"
.The page contains one or more paired directional control characters, eg. RLI..PDI
, but in this page some of the pairs do not have both a start and end character.
This could lead to unexpected effects.
Ensure that all paired directional control characters have a start and end control.
(Tip: Replacing the control characters with markup often makes things easier to manage, and reduces the likelihood of this kind of situation.)
HTML5, 4.6.24 The bdo element specification
HTML 4.01, 8.2.4 Overriding the bidirectional algorithm: the BDO element specification
We have recently published a Getting Started page to help you find information on the site. The Getting Started page points to a series of articles that are underway, and that provide newcomers with a gentle introduction to key internationalization topics and point to basic information on the site to get you going.