###############################################################################
# Copyright (c) 2005, 2012 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
B_0 = No alternative text for an image. Provide its text alternative. (If the image should be ignored by assistive technology, provide alt="" and no title attribute.): src="{0}".
B_1 = No alternative text for an image button. Provide its text alternative.
B_2 = No alternative text for an area element: {0}. Provide its text alternative.
B_4 = "{0}" is not appropriate as an alt attribute for an image.
B_5 = "{0}" may be inappropriate as an alt attribute for an image button.
B_6 = "{0}" may be inappropriate as an alt attribute for an area element.
B_8 = This intra-page link is broken because of a missing destination anchor "{0}".
B_9 = Redundant text information: {0}
B_10 = Provide skip-links such as "skip to main".
B_12 = Provide intra-page links or use headings. Because there are no effective intra-page links or headings, arrival time to some content is over 120 seconds.
B_14 = This intra-page link, "{0}", is not accessible, since there is no readable text.
B_15 = "{0}" may be inappropriate text (space separated characters).
B_16 = No id attribute for an input element.
B_17 = {0} seconds is too long to get to the "skip to main" link
B_18 = This skip-link is broken because of a missing destination anchor "{0}".
B_19 = "{0}" is not appropriate for a skip-link. It should start with "skip to ..." or "jump to ...".
B_20 = Consider providing skip-links (such as "skip to main").
B_21 = There is no skip-link (such as "skip to main") in this page, but the transit time is short, {0} seconds. Make sure of the necessity of the skip-link.
B_22 = Consider providing more intra-page links or using headings. Though there are some intra-page links, the arrival time to some content is over 120 seconds.
B_23 = Consider providing more headings or using intra-page links. Though there are some headings, the arrival time to some content is over 120 seconds.
B_24 = Consider using intra-page links or providing more headings. Though there are intra-page links and headings, the arrival time to some content is over 120 seconds.
B_25 = This intra-page link, "{0}", has only title attribute to read out. Consider providing text in this link.
B_26 = "{0}" is not appropriate title attribute for a skip-link. It should start with "skip to ..." or "jump to ...".
B_27 = "{0}" might contain inappropriate text for ALT. (If the image should be ignored by assistive technology, provide alt="" and no title attribute. Otherwise, provide appropriate alternative text.)
B_29 = The alt attribute "{0}" has inappropriate space within a word (image).
B_30 = The alt attribute "{0}" of the input element has inappropriate spaces within a word.
B_31 = The alt attribute "{0}" has inappropriate space within a word (area).
B_33 = This intra-page link does not have destination anchor "{0}". Please insert target anchor. (This link might work as intra-page link to page top.)
B_34 = Do not separate characters except when you want to spell out the word. (alt attribute "{0}").
B_35 = This intra-page link, {0} , might not be able to use. (Please use a small image with alt instead of display:none or visibility:hidden)
B_36 = Please provide value attribute for input button.
B_37 = The value attribute "{0}" has inappropriate space within a word (input).
B_38 = "{0}" is not appropriate as an ALT attribute for an image (it contains &nbsp; characters). If the image should be ignored by assistive technology, provide alt="" and no title attribute. Otherwise, provide appropriate alternative text.

C_1000.0 = This page seems to have several body elements. Please correct the HTML document.
C_1000.1 = This page seems to have head element under body element. Please correct the HTML document.
C_1000.2 = This page seems to have several html elements. Please correct the HTML document.
C_1000.3 = The body elements seems to be not properly placed. Please correct the HTML document.
C_1000.4 = This page seems to have no body element, or position of body is wrong. Please correct the HTML document.
C_1000.5 = This page seems to have no body (or HEAD) element, or position of body is wrong. Please correct the HTML document.
C_1000.6 = The public identifier specified in the DOCTYPE declaration is not well-known. validators may produce wrong results and conformance checking of the document may be impossible.
C_1000.7 = As no DOCTYPE declaration is found, validators may produce wrong results and conformance of the document is not able to be checked.
C_1000.8 = Byte-Order Mark (BOM) found in UTF-8 HTML file. BOM should be removed to avoid unexpected error.

L_1.0 = Foreground and background colors are too close. {0}
L_1.1 = Foreground and background colors are too close. {0}
L_1.2 = Foreground and background colors are close. {0}
L_2 = It is difficult for weak-sighted to read these characters. (blur)
L_3 = This image has two or more components whose colors are too close.
L_4 = Do not use fixed-size font.
L_5 = This text is too small.
L_6 = This text is too small and its font size is fixed.  
L_10 = This area has background image. Please confirm the contrast between text and background, and confirm important information is not provided only by background image. .{0}