###############################################################################
# Copyright (c) 2008, 2019 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
ApiBaselinesConfigurationBlock_0=An API baseline has not been set for the current workspace.
ApiErrorsWarningsConfigurationBlock_0=Error and warning settings have changed. A full build is required for the changes to take effect.\n\nDo a full build now?
ApiErrorsWarningsConfigurationBlock_1=Error and warning settings have changed. A rebuild of the project is required for the changes to take effect.\n\nRebuild {0} now?
ApiErrorsWarningsConfigurationBlock_2=Settings Changed
ApiErrorsWarningsConfigurationBlock_4='Achieving API Binary Compatibility'
ApiErrorsWarningsConfigurationBlock_5=Read {0} for details.
ApiErrorsWarningsConfigurationBlock_automatically_remove_problem_filters=Automatically &remove unused API problem filters
ApiErrorsWarningsPreferencePage_0=API Tools
ApiErrorsWarningsPreferencePage_1=<A>Configure Project Specific Settings...</A>
ApiProblemSeveritiesConfigurationBlock_3=Select the severity level for the following API use options:
ApiProblemSeveritiesConfigurationBlock_8=Select the severity level for the following API compatibility options:
ApiProblemSeveritiesConfigurationBlock_9=Select the severity level for the following version management options:
ApiProblemSeveritiesConfigurationBlock_10=Select the severity level for the following API analysis options:
ApiProblemSeveritiesConfigurationBlock_11=Select the severity level for the following API use scans options:
ApiProblemSeveritiesNoImplement=Implementing an interface tagged '@noimplement':
ApiProblemSeveritiesNoExtend=Extending a type tagged '@noextend':
ApiProblemSeveritiesNoReference=Referencing a type, field or method tagged '@noreference':
ApiProblemSeveritiesNoInstanciate=Instantiating a class tagged '@noinstantiate':
ApiProfilesPreferencePage_0=Add, remove or edit API baselines. The workspace is compared with the default baseline for compatibility.
ApiProfilesPreferencePage_1=&Baselines:
ApiProfilesPreferencePage_2=Add Base&line...
ApiProfilesPreferencePage_3=&Remove
ApiProfilesPreferencePage_4=&Edit...
ApiProfilesPreferencePage_QuestionDialog_Title=Baseline Changed
ApiProfilesPreferencePage_QuestionDialog_Text=Perform full build to apply the API baseline change?
ApiProfilesPreferencePage_QuestionDialog_buildButtonLabel=&Build
ApiProfilesPreferencePage_QuestionDialog_dontBuildButtonLabel=&Don't build
ApiToolingNotificationsBlock_0=API &Use
ApiToolingNotificationsBlock_1=A&PI Compatibility
ApiToolingNotificationsBlock_2=&Version Management
ApiToolingNotificationsBlock_3=A&nalysis Options
ApiToolingNotificationsBlock_4=API Use &Scans
CompatibilityAPIComponentElement=&Bundle
CompatibilityAnnotationElement=Annotati&on
CompatibilityInterfaceElement=In&terface
CompatibilityClassElement=&Class
CompatibilityEnumElement=Enu&m
CompatibilityFieldElement=&Field
CompatibilityMethodElement=Met&hod
CompatibilityConstructorElement=Constructor
CompatibilityTypeParameterElement=T&ype Parameter
ProjectSelectionDialog_title=Project Specific Configuration
ProjectSelectionDialog_message=&Select the project to configure:
ProjectSelectionDialog_checkbox_text=Show only &projects with project specific settings
ApiProfilesConfigurationBlock_options_group_title=Options
ApiProfilesConfigurationBlock_missing_default_api_profile_message=Mi&ssing API baseline:
ApiProfilesConfigurationBlock_plugin_missing_in_baseline_message=Plug-in &missing in API baseline:
ApiErrorsWarningsConfigurationBlock_setAllto=Set All As
CompatibilityReportApiBreakageWhenMajorVersionIncremented=&Report API breakage even if authorized by major version increment

ReportApiComponentResolutionFailure=Bundle mi&ssing required constraint/prerequisite:
# same as above without the ':'

API_COMPONENT_REMOVED_API_TYPE=An API type has become non-API:
API_COMPONENT_REMOVED_TYPE=A type has been removed:
API_COMPONENT_REMOVED_REEXPORTED_API_TYPE=An API re-exported type has become non-API:
API_COMPONENT_REMOVED_REEXPORTED_TYPE=A re-exported type has been removed:

ANNOTATION_ADDED_FIELD=A field has been added:
ANNOTATION_REMOVED_FIELD=A field has been removed:
ANNOTATION_REMOVED_METHOD=A method has been removed:
ANNOTATION_REMOVED_TYPE_MEMBER=A member type has been removed:
ANNOTATION_CHANGED_TYPE_CONVERSION=Converted to class, enum, or interface:
ANNOTATION_ADDED_METHOD_NO_DEFAULT_VALUE=A method without a default value has been added:

INTERFACE_ADDED_FIELD=A field (interface not tagged as '@noimplement') has been added:
INTERFACE_ADDED_METHOD=A method (interface not tagged as '@noimplement') has been added:
INTERFACE_ADDED_DEFAULT_METHOD=A default method (interface not tagged as '@noimplement') has been added:
INTERFACE_ADDED_RESTRICTIONS=Restrictions have been added:
INTERFACE_ADDED_SUPER_INTERFACE_WITH_METHODS=A super interface with methods has been added:
INTERFACE_ADDED_TYPE_PARAMETER=A type parameter has been added:
INTERFACE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=The superinterfaces hierarchy has been reduced:
INTERFACE_CHANGED_TYPE_CONVERSION=Converted to class, enum, or annotation:
INTERFACE_REMOVED_FIELD=A field has been removed:
INTERFACE_REMOVED_METHOD=A method has been removed:
INTERFACE_REMOVED_TYPE_MEMBER=A member type has been removed:
INTERFACE_REMOVED_TYPE_PARAMETER=A type parameter has been removed:

ENUM_CHANGED_CONTRACTED_SUPERINTERFACES_SET=The superinterfaces hierarchy has been reduced:
ENUM_CHANGED_TYPE_CONVERSION=Converted to annotation, class, or interface:
ENUM_REMOVED_FIELD=A field has been removed:
ENUM_REMOVED_ENUM_CONSTANT=An enum constant has been removed:
ENUM_REMOVED_METHOD=A method has been removed:
ENUM_REMOVED_TYPE_MEMBER=A member type has been removed:

CLASS_ADDED_FIELD=A field has been added:
CLASS_ADDED_METHOD=A method (that needs to be implemented) has been added:
CLASS_ADDED_RESTRICTIONS=Restrictions have been added:
CLASS_ADDED_TYPE_PARAMETER=A type parameter has been added:
CLASS_CHANGED_CONTRACTED_SUPERINTERFACES_SET=The superinterfaces hierarchy has been reduced:
CLASS_CHANGED_NON_ABSTRACT_TO_ABSTRACT=The keyword 'abstract' has been added:
CLASS_CHANGED_NON_FINAL_TO_FINAL=The keyword 'final' has been added:
CLASS_CHANGED_TYPE_CONVERSION=Converted to annotation, enum, or interface:
CLASS_CHANGED_DECREASE_ACCESS=The visibility has been reduced:
CLASS_REMOVED_FIELD=A field has been removed:
CLASS_REMOVED_METHOD=A method has been removed:
CLASS_REMOVED_CONSTRUCTOR=A constructor has been removed:
CLASS_REMOVED_SUPERCLASS=The superclass hierarchy has been reduced:
CLASS_REMOVED_TYPE_MEMBER=A member type has been removed:
CLASS_REMOVED_TYPE_PARAMETER=A type parameter has been removed:

FIELD_ADDED_VALUE=A constant value has been added:
FIELD_CHANGED_TYPE=The type has been modified:
FIELD_CHANGED_VALUE=The constant value has been modified:
FIELD_CHANGED_DECREASE_ACCESS=The visibility has been reduced:
FIELD_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=The keyword 'final' has been removed for static constant: 
FIELD_CHANGED_NON_FINAL_TO_FINAL=The keyword 'final' has been added:
FIELD_CHANGED_STATIC_TO_NON_STATIC=The keyword 'static' has been removed:
FIELD_CHANGED_NON_STATIC_TO_STATIC=The keyword 'static' has been added:
FIELD_REMOVED_VALUE=The constant value has been removed:
FIELD_REMOVED_TYPE_ARGUMENT=A type argument has been removed:

METHOD_ADDED_RESTRICTIONS=The @nooverride restriction has been added:
METHOD_ADDED_TYPE_PARAMETER=A type parameter has been added:
METHOD_CHANGED_VARARGS_TO_ARRAY=Converted variable argument type to array type:
METHOD_CHANGED_DECREASE_ACCESS=The visibility has been reduced:
METHOD_CHANGED_NON_ABSTRACT_TO_ABSTRACT=The keyword 'abstract' has been added:
METHOD_CHANGED_NON_STATIC_TO_STATIC=The keyword 'static' has been added:
METHOD_CHANGED_STATIC_TO_NON_STATIC=The keyword 'static' has been removed:
METHOD_CHANGED_NON_FINAL_TO_FINAL=The keyword 'final' has been added (type tagged '@noextend'):
METHOD_REMOVED_ANNOTATION_DEFAULT_VALUE=The annotation default value has been removed:
METHOD_REMOVED_TYPE_PARAMETER=A type parameter has been removed:

CONSTRUCTOR_ADDED_TYPE_PARAMETER=A type parameter has been added:
CONSTRUCTOR_CHANGED_VARARGS_TO_ARRAY=Converted variable argument type to array type:
CONSTRUCTOR_CHANGED_DECREASE_ACCESS=The visibility has been reduced:
CONSTRUCTOR_REMOVED_TYPE_PARAMETER=A type parameter has been removed:

TYPE_PARAMETER_ADDED_CLASS_BOUND=A class bound has been added:
TYPE_PARAMETER_ADDED_INTERFACE_BOUND=An interface bound has been added:
TYPE_PARAMETER_CHANGED_CLASS_BOUND=A class bound has been modified:
TYPE_PARAMETER_CHANGED_INTERFACE_BOUND=An interface bound has been modified:
TYPE_PARAMETER_REMOVED_CLASS_BOUND=A class bound has been removed:
TYPE_PARAMETER_REMOVED_INTERFACE_BOUND=An interface bound has been removed:

ApiErrorsWarningsConfigurationBlock_error=Error
ApiErrorsWarningsConfigurationBlock_error_button=&Error
ApiErrorsWarningsConfigurationBlock_extend_non_api_class=Extends a non-API class or interface:
ApiErrorsWarningsConfigurationBlock_field_decl_non_api=Field with a non-API type:
ApiErrorsWarningsConfigurationBlock_general=&General
ApiErrorsWarningsConfigurationBlock_warning=Warning
ApiErrorsWarningsConfigurationBlock_warning_button=&Warning
ApiErrorsWarningsConfigurationBlock_ignore=Ignore
ApiErrorsWarningsConfigurationBlock_ignore_button=&Ignore
ApiErrorsWarningsConfigurationBlock_implement_non_api=Implements a non-API interface:
ApiErrorsWarningsConfigurationBlock_invalid_annotation_use=Unsupported use of API annotations:
ApiErrorsWarningsConfigurationBlock_invalid_tag_use=Unsupported use of API Javadoc tags:
ApiErrorsWarningsConfigurationBlock_invalid_reference_to_system_libraries=Reference not defined in specified execution environment:
ApiErrorsWarningsConfigurationBlock_leaks=&Leaks
ApiErrorsWarningsConfigurationBlock_override_tagged_method=Overriding a method tagged '@nooverride':
ApiErrorsWarningsConfigurationBlock_parameter_non_api=Method with a non-API parameter type:
ApiErrorsWarningsConfigurationBlock_restrictions=&Restrictions
ApiErrorsWarningsConfigurationBlock_return_type_non_api=Method with a non-API return type:
ApiErrorsWarningsConfigurationBlock_unused_problem_filters=Unused API problem &filters:

VersionManagementReportMissingSinceTag=Report mi&ssing '@since' tags:
VersionManagementReportInvalidApiComponentVersion=Report in&compatible bundle version:
VersionManagementReportChangedExecutionEnv=Report changed &execution environment incompatibility:
VersionManagementReportMalformedSinceTags=Report ma&lformed '@since' tags:
VersionManagementReportInvalidSinceTagVersion=Report invalid '@since' ta&g version:
VersionManagementReportInvalidApiComponentVersionReportMinorWithoutApiChange=Report unnecessary minor or service version c&hange:
VersionManagementReportInvalidApiComponentVersionReportMajorWithoutBreakingChange=Report major version change without API b&reakage:
ApiProblemSeveritiesConfigurationBlock_checkable_ees=Execution Environment Descriptions:
ApiProblemSeveritiesConfigurationBlock_checkable_ees_tooltip=Click to install one or more execution environment descriptions
ApiErrorsWarningsConfigurationBlock_no_ees_installed=There are no execution environment descriptions installed.
ApiProblemSeveritiesConfigurationBlock_checkable_ees_link_label=<a>Install additional execution environment descriptions</a>
ApiProblemSeveritiesConfigurationBlock_checkable_ees_error_dialog_title=An error occurred
ApiProblemSeveritiesConfigurationBlock_checkable_ees_error_dialog_description=The "Install New Software..." wizard could not be opened.\nCheck the .log file.
ApiUseScanConfigurationBlock_0=Options
ApiUseScanConfigurationBlock_unresolvedTypeProblem=Unresolved &type problem:
ApiUseScanConfigurationBlock_unresolvedMethodProblem=Unresolved &method problem:
ApiUseScanConfigurationBlock_unresolvedFieldProblem=Unresolved &field problem:
ApiUseScanPreferencePage_0=Add, remove or edit API use scans. The references found in the use scans will be compared to projects in the workspace to ensure they still exist. 
ApiUseScanPreferencePage_1=&Edit Location...
ApiUseScanPreferencePage_10=Dese&lect All
ApiUseScanPreferencePage_11=Locations changed
ApiUseScanPreferencePage_12=Active API use scan locations have changed. A full build is required for the changes to take effect.\n\nDo a full build now?
ApiUseScanPreferencePage_2=&Use scan locations:
ApiUseScanPreferencePage_3=&Select All
ApiUseScanPreferencePage_4=Add Dire&ctory...
ApiUseScanPreferencePage_5=Add &Archive...
ApiUseScanPreferencePage_6=&Remove
ApiUseScanPreferencePage_7=Select the API use scan report location
ApiUseScanPreferencePage_8={0} is not a valid API use scan location.
ApiUseScanPreferencePage_9=To change the severity of reported problems, see <a>'API Errors/Warnings'</a>.
archives__zip=Archives (*.zip,*.jar)
install_ee_descriptions=<a>Install execution environment descriptions</a>
