###############################################################################
# Copyright (c) 2001, 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
###############################################################################
#     *************************************************************************
#     * 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.12
#
#
# ID:
#    VBF - Validation Builder Framework
#

# 
# Begin Validation Builder Framework UI Strings
#
# IDs:
#    VBF_EXC=Exception or error text
#    VBF_UI=UI label
#
PREF_BUTTON_OVERRIDE=Allow projects to override these preference settings
PREF_BUTTON_ENABLEALL=Enable All
PREF_BUTTON_DISABLEALL=Disable All
PREF_VALLIST_TITLE=The selected validators will run when validation is performed:
PREF_MNU_MANUAL=&Manual
PREF_MNU_BUILD=&Build
PREF_MNU_SETTINGS=&Settings...

VBF_EXC_INTERNAL_TITLE=Internal error
VBF_EXC_INTERNAL_PAGE=An unexpected error occurred; click Cancel to close the wizard.

VBF_EXC_INVALID_REGISTER=Validators can run only on open resources.
ProjectOverridesNotAllowed=The workspace validation preferences do not allow projects to override the workspace settings. In order to allow project settings you need to configure the workspace settings to allow project overrides.  
 
VBF_UI_NO_VALIDATORS_INSTALLED=No validators are installed.

DISABLE_VALIDATION=Suspend all validators

DelegatesDialogTitle=Validator Preferences
DelegatesComboLabel=Implementation:
ADD_VALIDATION_BUILDER=Add Validation Builder to project
ConfigWsSettings=Configure Workspace Settings...
VALIDATOR=Validator
MANUAL=Manual
BUILD=Build
SETTINGS=Settings

SaveFilesDialog_saving=Saving Resources
SaveFilesDialog_always_save=&Always save all modified resources automatically prior to validating
SaveFilesDialog_save_all_resources=Save All Modified Resources
SaveFilesDialog_must_save=All modified resources must be saved before this operation.

PrefPage_always_save=&Save all modified resources automatically prior to validating
PrefPageConfirmDialog=Show a confirmation dialog when performing manual validations

RunValidationDialogTitle=Running Validation

fdTitle=Validation Filters for {0}
fdNoFilters=The validator does not have currently have any filters installed.
ErrConfig=Extension configuration error. An internal error has happened, the validator {0} has incorrectly configured the validation extension point.

FilterHelp=Filter rules are grouped into groups. Inside of any one group the rules are combined by using the logical OR operator. There are two types of groups Include and Exclude. If any of the rules in the Exclude group match, the resource is not validated. If there are Include groups, at least one rule from each group must match before the resource is validated.
ButtonAddGroupInclude=Add Include Group...
ButtonAddGroupExclude=Add Exclude Group...
ButtonAddRule=Add Rule...
ButtonRemove=Remove 

LabelEnableProjectSpecific=Enable project specific settings

LabelExtension=File extension
LabelFile=Folder or file name
LabelProjects=Project nature
LabelFacets=Facet
LabelContentType=Content Type

# Note to translators, keep the <A> and </A> tags exactly as they are
DoNotShowResults=Do not show this dialog in the future.

DescExtension=File extension, for example "html" for HTML files.
DescFile=Either a folder, a relative file, or a fully qualified file name.
DescProjects=A project nature.
DescFacets=A facet.
DescContentType=A content type, for example the XML content type.

ErrorsWarnings=Errors/Warnings

Validation=Validation
ValidationStatus=Validation Status

ErrSummary=Validation results. Errors={0}, Warnings={1}, Information={2}
ValidationSuccessful=Validation was successful

FrWizard=New Filter Rule Wizard
FrSelectFilterType=Select Filter Type
FrFileExtension=File Extension
FrFileExtensionLabel=File extension, for example html:
FrCaseSensitive=Is the comparison case sensitive?
FrExactMatch=Check this if the content type needs to match exactly. Do not check it, if sub types need to match as well.
FrSimpleFileName=For file based comparisons, use only the simple file name.
FrFolderOrFile=Folder or File Name
FrFolderOrFileLabel=File or folder:
FrBrowseFile=Browse File...
FrFileFilter=Select the file that will serve as the filter
FrBrowseFolder=Browse Folder...
FrFolderFilter=Select the folder that will serve as the filter
FrProjectNature=Project Nature
FrProjectNatureLabel=Project nature:
FrFacit=Facet
FrFacitLabel=Facet id:
FrContentType=Content Type
FrContentTypeLabel=Content Type:
FrMsgSev=Select the severity level for the following problems

RebuildTitle=Validation Settings Changed
RebuildMsg=The validation settings have changed. A full rebuild is required for the changes to take effect. Do the full build now?

#
# End Validation Builder Framework UI Strings
#

