###############################################################################
# Copyright (c) 2005, 2013 IBM Corporation.
#
# 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
###############################################################################
#External Messages for EN locale
ASK_INVALID_LOCALE=Object class definition with PID \"{0}\" does not support locale \"{1}\".
CARDINALITY_VIOLATION=Cardinality violation: \"{0}\" has {1} value(s) but must have between {2} and {3} value(s).
EXCEPTION_MESSAGE=An unexpected exception \"{0}\" with message \"{1}\" occurred while validating the attribute value.
INCONSISTENT_OPTIONS=Attribute definition \"{0}\" does not have the same number of option values as labels.
INVALID_DEFAULTS=Default value \"{0}\" for attribute definition \"{1}\" is invalid because \"{2}\".
INVALID_DEFAULTS_XML=Invalid default value \"{0}\" for attribute definition \"{1}\" in metadata XML at \"{2}\" for bundle ID \"{3}\" with symbolic name \"{4}\".
INVALID_OPTIONS=Option value \"{0}\" for attribute definition \"{1}\" is invalid because \"{2}\".
INVALID_OPTIONS_XML=Invalid option value(s) for attribute definition \"{0}\" in metadata XML at \"{1}\" for bundle ID \"{2}\" with symbolic name \"{3}\".
INVALID_PID_METATYPE_PROVIDER_IGNORED=Bundle \"{0}\" with ID \"{1}\" provided a MetaTypeProvider with an invalid property. Property \"{2}\" with value \"{3}\" was not of the expected type (String, String[], or Collection<String>) and will be ignored.
INVALID_TYPE=Invalid type \"{0}\" for attribute definition with ID \"{1}\" in metadata XML at \"{2}\" for bundle ID \"{3}\" with symbolic name \"{4}\".
METADATA_FILE_PARSE_ERROR=Unable to parse metadata XML at \"{0}\" for bundle ID \"{1}\" with symbolic name \"{2}\".
METADATA_NOT_FOUND=Bundle \"{0}\" with ID \"{1}\" has no metadata files.
METADATA_PARSE_ERROR=A general parser error occurred while attempting to parse the metadata of bundle ID \"{0}\" with symbolic name \"{1}\". The bundle will be treated as if it contained no metadata files.
MISSING_ATTRIBUTE=Missing attribute \"{0}\" of element \"{1}\" with ID \"{2}\" in metadata XML at \"{3}\" for bundle ID \"{4}\" with symbolic name \"{5}\".
MISSING_DESIGNATE_PID_AND_FACTORYPID=Missing "pid" or "factoryPid" attribute of element "Designate" with ID \"{0}\" in metadata XML at \"{1}\" for bundle ID \"{2}\" with symbolic name \"{3}\".
MISSING_ELEMENT=Missing element \"{0}\" of parent element \"{1}\" with ID \"{2}\" in metadata XML at \"{3}\" for bundle ID \"{4}\" with symbolic name \"{5}\".
MISSING_REQUIRED_PARAMETER=Missing required parameter: {0}
NULL_IS_INVALID=A null value is never valid.
NULL_OPTIONS=Attribute definition \"{0}\" tried to set a null value for option labels or values.
OCD_PID_NOT_FOUND=Object class definition with PID \"{0}\" does not exist.
OCD_REF_NOT_FOUND=Designate with pid \"{0}\" and factoryPid \"{1}\" references missing OCD \"{2}\" in metadata XML at \"{3}\" for bundle ID \"{4}\" with symbolic name \"{5}\".
SERVICE_DESCRIPTION=OSGi Metatype Service - IBM Implementation
UNEXPECTED_ELEMENT=Unexpected element \"{0}\" with ID \"{1}\" in metadata XML at \"{2}\" for bundle ID \"{3}\" with symbolic name \"{4}\".
UNEXPECTED_TEXT=Unexpected text \"{0}\" in element \"{1}\" with ID \"{2}\" in metadata XML at \"{3}\" for bundle ID \"{4}\" with symbolic name \"{5}\".
VALUE_NOT_A_NUMBER=Value \"{0}\" is not a number.
VALUE_OUT_OF_OPTION=Value \"{0}\" is not one of the options.
VALUE_OUT_OF_RANGE=Value \"{0}\" is out of range.
