###############################################################################
# Copyright (c) 2001, 2004 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
###############################################################################
# To avoid name collisions, each extension point should preface their property names with an identifier.
#
#     *************************************************************************
#     * Code oriented instructions:
#     *
#     * In the string, you may see the following special sequences:
#     * a) {n}  where n is a number. These are replaceable parameters.
#     * b) ''  In .properties files, in order to see one apostrophe (') in the final
#     *    string, sometimes two apostrophes must be entered in the string. In the translated
#     *    string, if there is at least one {n} in the string, then to show one apostrophe
#     *    to the user, put two apostrophes in the string. If there are no {n} in the string,
#     *    then put one apostrophe.
#     *    For example, say that you want the user to read "George's file". 
#     *        GEORGE=George's file was on the desk.
#     *        GEORGE2=George''s file and {0} were on the desk.
#     *    GEORGE uses one apostrophe because there are no {n} and GEORGE2
#     *    uses two apostrophes because there is a {n}.
#     * c) '' text '' where text can be any word(s). The text between the double
#     *    apostrophes should not be translated. 
#     * d) <text> where text can be any word(s). The text between the angle
#     *    brackets should NOT be translated.
#     * e) "text" where text can be any word(s). The text between the quotation 
#     *    marks should NOT be translated.
#     *    
#     *************************************************************************
#     * Other instructions
#     * a) Do not translate any text that is on a line which begins with a comment 
#     *    symbol (#).
#     * b) Do not translate these words: 
#     *        schema, EJB, RDB, JAR, RMI, BMP, CMP, OOSQL
#     * c) Please return the .properties files using the same directory structure.
#     *    This is necessary because two of the files have the same name.
#     *
#     *************************************************************************
# Any other comments to the translators are on lines which start like this:  # 2TC:
#
# Version 1.14
#
#
# ID:
#    VBF - Validation Builder Framework
#       VBF_EXC=Exception or error text
#       VBF_STATUS=Status message
#       VBF_TASK=Task list message
#

# 
# Begin Validation Builder Framework Strings
#
# IDs:
#    VBF_EXC=Exception or error text
#    VBF_STATUS=Status message
#    VBF_TASK=Task list message
#
VBF_EXC_CANNOT_ADD_MARKER=IWAE0001E The marker cannot be added to resource {0} in the task list.
VBF_EXC_CANNOT_REMOVE_MARKER=IWAE0002E The marker cannot be removed from resource {0} in the task list.

VBF_EXC_HELPER_MISSING=IWAE0003E Unable to load {0} because it did not specify a <helper>. Each validator must identify the helper class that loads its MOF model.
VBF_EXC_HELPER_CANNOTLOAD=IWAE0004E Unable to load {0} because its <helper>, {1}, could not be loaded. Ensure that the case-sensitive file name is spelled correctly.

VBF_EXC_INTERNAL=IWAE0005E An internal error occurred during validation. Validation was being run on project {0} with validator {1}. The message thrown was {2}.

# 2TC: In the following string, "type" is a noun
VBF_EXC_INVALID_TYPE_FILTER=IWAE0006E Invalid type filter; {0} must be an instance of {1}.
VBF_EXC_INVALID_RESOURCE=IWAE0007E Cannot add message "{0}" with target object "{1}" because no file, folder, or project can be found with which to associate the message.

VBF_EXC_MISSING_VALIDATOR_EP=IWAE0008E The validator framework could not be started. The extension point named \"{0}\" could not be found. Save all log files and contact your IBM representative.
VBF_EXC_MISSING_PROJECTNATURE_ID=IWAE0009E A projectNature must have an associated ID. Validation is ignoring this tag and continuing.

VBF_EXC_RUNTIME=IWAE0010E Run-time exception {0} occurred during validation. The validator being run was {1} and the message thrown was {2}.

VBF_EXC_SYNTAX_NULL_NAME=IWAE0011E Resource {0} cannot be added to file list because IHelper.getPortableName() returns null. This resource will not be validated by the validator named {1}.
VBF_EXC_SYNTAX_NO_HELPER=IWAE0012E No <helper> element is specified in the plugin.xml file for validator {0}. Since the helper cannot be created, the validator will not be loaded.
VBF_EXC_SYNTAX_NO_HELPER_CLASS=IWAE0013E No "class" attribute in the <helper> element is specified in the plugin.xml file for validator {0}. The helper cannot be created without the name of the class that implements it. Since the helper cannot be created, the validator will not be loaded.
VBF_EXC_SYNTAX_NO_HELPER_THROWABLE=IWAE0014E The helper {0} cannot be created because a Throwable was caught.
VBF_EXC_SYNTAX_NO_VAL_RUN=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.
VBF_EXC_SYNTAX_NO_VAL_CLASS=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.
VBF_EXC_SYNTAX_NO_VAL_THROWABLE=IWAE0017E Cannot create validator {0} because a Throwable was caught.
VBF_EXC_SYNTAX_NO_VAL_NULL=IWAE0018E Validator class {0} could not be created. IConfigurationElement.createExecutableExtension(String) returned null.

VBF_EXC_DISABLEV=IWAE0019E Cannot instantiate validator {0}. Disabling the validator; read the log for details.
VBF_EXC_DISABLEH=IWAE0020E Cannot instantiate helper {0}. Disabling validator {1}; read the log for details.
VBF_EXC_ORPHAN_IVALIDATOR=IWAE0021E Cannot locate meta-data for validator {0}.

VBF_EXC_VALIDATORNAME_IS_NULL=IWAE0022E The plugin with ID {0} has been disabled because its getName() method returns null. The method must return a value.

VBF_EXC_NULLCREATE=IWAE0023E Cannot create a validation configuration on a null resource.
VBF_EXC_NULLSAVE=IWAE0024E Cannot save a validation configuration on a null resource.
VBF_EXC_SAVE=IWAE0025E Could not save the validation configuration on resource {0}.
VBF_EXC_NULLRETRIEVE=IWAE0026E Cannot retrieve the validation configuration because resource is null.
VBF_EXC_RETRIEVE=IWAE0027E Could not retrieve the validation configuration for resource {0}.

VBF_EXC_BADVMD=IWAE0028E ValidatorMetaData[] must not be null or empty.
VBF_EXC_OPENPRJ=IWAE0029E Project {0} must be open.
VBF_EXC_EXISTPRJ=IWAE0030E Project {0} must exist.
VBF_EXC_BADPRJ=IWAE0031E Project {0} must be the project that contains the resources in the IResource[].
VBF_EXC_MULTIPRJ=IWAE0032E All IResource instances in the IResource[] must be part of the same IProject instance. The resources come from the following projects: {0}.
VBF_EXC_BADVAL=IWAE0033E Validator {0} must be configured on {1};

VBF_STATUS_INITIALIZING=Initializing {0}.

VBF_STATUS_VALIDATOR_CLEANUP=Performing cleanup on {0} before termination.

VBF_STATUS_PROGRESSMONITOR_TITLE=Validating
VBF_STATUS_NULL_DELTA=Last build state of {0} could not be retrieved. Performing a full validation.

VBF_STATUS_VALIDATOR_TERMINATED=Validation of {0} using {1} was cancelled.

VBF_STATUS_START_REMOVING_OLD_MESSAGES=Removing {0} messages on {1} has started...
VBF_STATUS_FINISH_REMOVING_OLD_MESSAGES=Messages removed.

VBF_STATUS_STARTING_VALIDATION=Validation of {0} by {1} has started...
VBF_STATUS_ENDING_VALIDATION=Validation of {0} by {1} is complete. All known problems have been reported.
VBF_STATUS_ENDING_VALIDATION_ABNORMALLY=Validation of {0} by {1} ended abnormally. The list of problems may be incomplete. Please check the information messages for the cause of the abnormal termination.

VBF_STATUS_LOOKING=Looking for validation messages owned by uninstalled validators...
VBF_STATUS_LOOKINGDONE=Looking for validation messages owned by uninstalled validators...done.
VBF_STATUS_REMOVING=Removing validation messages owned by uninstalled validators...
VBF_STATUS_REMOVINGDONE=Removing validation messages owned by uninstalled validators...done.

# The following message will be deleted soon.
VBF_TASK_WARN_MESSAGE_LIMIT_ABORT=IWAE0034W IWAD3000I: {1} terminated validation of {0} because the maximum number of messages were reported. Some messages may be missing.

VBF_TASK_WARN_MESSAGE_LIMIT_VAL=IWAE0035W IWAD3000I: Some messages may be missing because the maximum number of messages has been reported. Increase the maximum number of messages and try again.

#
# End Validation Builder Framework Strings
#

