###############################################################################
# Copyright (c) 2005, 2011 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
###############################################################################
ErrConfig=IWAE0100E Extension configuration error. An internal error has happened, the validator {0} has incorrectly configured the validation extension point.
ErrGroupName=IWAE0101E Invalid element, expect either the element "include" or "exclude".
ErrFilterRule=IWAE0102E An invalid filter rule has been encountered. Contributing plug-in: {0}, element name: {1}

ErrGroupNoType=IWAE0103E Groups must have a valid type, no type was returned
ErrGroupInvalidType=IWAE0104E Groups must have a valid type, the following invalid type was returned: {0}
ErrDependencyVersion=IWAE0105E Only version {0} is supported

ErrPatternAttrib=IWAE0106E The pattern attribute must be supplied
ErrTypeReq=IWAE0107E Type is a required attribute for file filters

VbfExcSyntaxNoValClass=IWAE0016E Validator cannot be created because no "class" attribute is specified in the <run> element of the plugin.xml file for the validator named {0}. Cannot create a validator unless a <run> element exists that specifies the "class" attribute. The value of the "class" attribute should be the name of the class that implements the IWorkbenchHelper interface.
VbfExcSyntaxNoValRun=IWAE0015E Validator cannot be created because no <run> element is specified in the plugin.xml file for the validator named {0}. Cannot create a validator unless a <run> element exists that specifies the "class" attribute. The value of the "class" attribute should be the name of the class that implements the IWorkbenchHelper interface.
VbfExcSyntaxNoValNull=IWAE0018E Validator class {0} could not be created. IConfigurationElement.createExecutableExtension(String) returned null.

ErrType=The value of the type attribute is incorrect. It was specified as {0} but the only valid values are: {1}, {2}, {3}
ConfigError=It appears that validator {0} (with id {1}) has been configured incorrectly, it produced {2} messages while validating {3}. It has been disabled. Try restoring the defaults for this validator.

DecodeError1=IWAE0019E There was a problem deserializing a string. A boolean was expected but not found. 
Error20=IWAE0020E Internal error, the incoming validator must be a v2 validator
Error21=The following dependency could not be restored because the following resource {0} could no longer be found.
GroupInclude=Include Group
GroupExclude=Exclude Group

TypeInclude=include
TypeExclude=exclude

JobName=Validation
JobNameWithProjectName=Validating {0}
JobNameMonitor=Validation Monitor
JobIndexSave=Index Save

MigrationJobName=Validation Setup

RuleProjectNature=Project nature
RuleFileExt=File extension
RuleFile=File
RuleContentType=Content Type
RuleFacet=Facet
RuleFolder=Folder
RuleFull=Qualified File
RulePattern=Pattern

FileExtWithCase={0}: {1} (case sensitive)
FileExtWithoutCase={0}: {1}

ContentTypeExact={0}: {1} (excludes subtypes)
ContentTypeNotExact={0}: {1} (includes subtypes)

LogValStart={0} starting to validate: {1}
LogValEnd={0} finished validating: {1}
LogValEndTime=Validator {0} with id {1} finished validating: {2} in {3}
LogValSummary=Validator {0} with id {1} validated {2} resources in {3}
LogValSummary2=Validator {0} with id {1} validated {2} resources in {3} using {4} of CPU time
LogSession=Session started on: {0}

SevError=Error
SevWarning=Warning
SevIgnore=Ignore

TimeUnder=under a second
TimeNano={0} nanoseconds
TimeMicro={0} microseconds
TimeSec={0} seconds
TimeMin={0} minutes

RogueValidator=Rogue validator delegate from contributor {0}

