###############################################################################
# Copyright (c) 2000, 2007 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
###############################################################################
# {0} plugin name
# {1} xml log file name
dom_header=<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n\
<html>\n\
<head>\n\
\ \ \ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n\
\ \ \ <title>Compiler log for {0}</title>\n\
</head>\n\
<body>\n\
<h2>Compiler log for {0} : <a href="{1}">{1}</a></h2>\n

header=<\!doctype html public "-//w3c//dtd html 4.0 transitional//en">\n\
<html>\n\
<head>\n\
\ \ \ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">\n\
\ \ \ <title>Compiler log</title>\n\
</head>\n\
<body>\n

footer=</body>\n</html>\n

# {0] source file name
# {1} number of problems
# {2} number of errors
# {3} number of warnings
problems.footer=

errors.title_anchor=<a name="ERROR"></a><h1>ERRORS</h1>\n

# {0] source file name
# {1} number of errors
errors.header=<h4>{0} : {1} :</h4>\n<table width="60%" style="border-bottom-color: #FF0000; border-left-color: #FF0000; border-color: #FF0000; border-right-color: #FF0000; border-top-color: #FF0000;" border="2" cellpadding="5">\n
errors.footer=</table>\n

other_warnings.title_anchor=<a name="OTHER_WARNINGS"></a><h1>OTHER WARNINGS</h1>\n

# {0] source file name
# {1} number of warnings
other_warnings.header=<h4>{0} : {1} :</h4>\n<table width="60%" style="border-color: #000000;" border="1" cellpadding="5">\n<caption><b><font color="#CC6633">OTHER WARNINGS</font></b></caption>\n
other_warnings.footer=</table>\n

forbidden_warnings.title_anchor=<a name="FORBIDDEN_WARNINGS"></a><h1>FORBIDDEN ACCESS WARNINGS</h1>\n
# {0] source file name
# {1} number of warnings
forbidden_warnings.header=<h4>{0} : {1} :</h4>\n<table width="60%" style="border-color: #000000;" border="1" cellpadding="5">\n<caption><b><font color="#CC6633">FORBIDDEN ACCESS WARNINGS</font></b></caption>\n
forbidden_warnings.footer=</table>\n

discouraged_warnings.title_anchor=<a name="DISCOURAGED_WARNINGS"></a><h1>DISCOURAGED ACCESS WARNINGS</h1>\n
# {0] source file name
# {1} number of warnings
discouraged_warnings.header=<h4>{0} : {1} :</h4>\n<table width="60%" style="border-color: #000000;" border="1" cellpadding="5">\n<caption><b><font color="#CC6633">DISCOURAGED ACCESS WARNINGS</font></b></caption>\n
discouraged_warnings.footer=</table>\n

# {0} source file name
# {1} global error number
# {2} error number
# {3} error id
# {4} line number of the error
# {5} error message
# {6} source code before this error
# {7} source code corresponding to this error
# {8} source code after this error
# {9} complement to underline the problem
# {10} starting position of the error
# {11} ending position of the error
errors.entry.even=<tr>\n\
\	<td align=left valign=top style="border-bottom-color: #FF0000; border-left-color: #FF0000; border-color: #FF0000; border-right-color: #FF0000; border-top-color: #FF0000;">{2}.&nbsp;ERROR&nbsp;in&nbsp;{0}<br/>\n\
\		&nbsp;(at line {4})<br/>\n\
\		{6}<b>{7}</b>{8}<br/>\n\
\		<i>{5}</i>\n\
\	</td>\n\
\</tr>\n

# {0} source file name
# {1} global error number
# {2} error number
# {3} error id
# {4} line number of the error
# {5} error message
# {6} source code before this error
# {7} source code corresponding to this error
# {8} source code after this error
# {9} complement to underline the problem
# {10} starting position of the error
# {11} ending position of the error
errors.entry.odd=<tr>\n\
\	<td align=left valign=top style="border-bottom-color: #FF0000; border-left-color: #FF0000; border-color: #FF0000; border-right-color: #FF0000; border-top-color: #FF0000;">{2}.&nbsp;ERROR&nbsp;in&nbsp;{0}<br/>\n\
\		&nbsp;(at line {4})<br/>\n\
\		{6}<b>{7}</b>{8}<br/>\n\
\		<i>{5}</i>\n\
\	</td>\n\
\</tr>\n

# {0} source file name
# {1} global error number
# {2} error number
# {3} error id
# {4} line number of the error
# {5} error message
# {6} source code before this error
# {7} source code corresponding to this error
# {8} source code after this error
# {9} complement to underline the problem
# {10} starting position of the error
# {11} ending position of the error
warnings.entry.even=<tr>\n\
\	<td align=left valign=top>{2}.&nbsp;WARNING&nbsp;in&nbsp;{0}<br/>\n\
\		&nbsp;(at line {4})<br/>\n\
\		{6}<b>{7}</b>{8}<br/>\n\
\		<i>{5}</i>\n\
\	</td>\n\
\</tr>\n

# {0} source file name
# {1} global error number
# {2} error number
# {3} error id
# {4} line number of the error
# {5} error message
# {6} source code before this error
# {7} source code corresponding to this error
# {8} source code after this error
# {9} complement to underline the problem
# {10} starting position of the error
# {11} ending position of the error
warnings.entry.odd=<tr>\n\
\	<td align=left valign=top>{2}.&nbsp;WARNING&nbsp;in&nbsp;{0}<br/>\n\
\		&nbsp;(at line {4})<br/>\n\
\		{6}<b>{7}</b>{8}<br/>\n\
\		<i>{5}</i>\n\
\	</td>\n\
\</tr>\n

# {0} global number of problems
# {1} global number of errors
# {2} global number of warnings
problem.summary=<h3><u><b>TOTAL</b></u>&nbsp;:&nbsp;ERRORS:&nbsp;{1},&nbsp;WARNINGS:&nbsp;{2}</h3>\n

problem.summary.title_anchor=<a name="TOP"></a>\n

anchors.references.no_top=\n\
<table>\n\
<tr>\n\
<td><a href="#ERROR">errors</a></td>\n\
<td><a href="#OTHER_WARNINGS">others warnings</a></td>\n\
<td><a href="#FORBIDDEN_WARNINGS">forbidden warnings</a></td>\n\
<td><a href="#DISCOURAGED_WARNINGS">discouraged warnings</a></td>\n\
</tr>\n\
</table>\n

anchors.references.no_errors=\n\
<table>\n\
<tr>\n\
<td><a href="#TOP">top</a></td>\n\
<td><a href="#OTHER_WARNINGS">others warnings</a></td>\n\
<td><a href="#FORBIDDEN_WARNINGS">forbidden warnings</a></td>\n\
<td><a href="#DISCOURAGED_WARNINGS">discouraged warnings</a></td>\n\
</tr>\n\
</table>\n

anchors.references.no_other_warnings=\n\
<table>\n\
<tr>\n\
<td><a href="#TOP">top</a></td>\n\
<td><a href="#ERROR">errors</a></td>\n\
<td><a href="#FORBIDDEN_WARNINGS">forbidden warnings</a></td>\n\
<td><a href="#DISCOURAGED_WARNINGS">discouraged warnings</a></td>\n\
</tr>\n\
</table>\n

anchors.references.no_forbidden_warnings=\n\
<table>\n\
<tr>\n\
<td><a href="#TOP">top</a></td>\n\
<td><a href="#ERROR">errors</a></td>\n\
<td><a href="#OTHER_WARNINGS">others warnings</a></td>\n\
<td><a href="#DISCOURAGED_WARNINGS">discouraged warnings</a></td>\n\
</tr>\n\
</table>\n

anchors.references.no_discouraged_warnings=\n\
<table>\n\
<tr>\n\
<td><a href="#TOP">top</a></td>\n\
<td><a href="#ERROR">errors</a></td>\n\
<td><a href="#OTHER_WARNINGS">others warnings</a></td>\n\
<td><a href="#FORBIDDEN_WARNINGS">forbidden warnings</a></td>\n\
</tr>\n\
</table>\n

one_warning=1 warning
multiple_warnings={1,number} warnings

one_error=1 error
multiple_errors={1,number} errors