###############################################################################
# Copyright (c) 2005, 2008 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.)
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.

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.

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}