#
# Copyright (c) 2016, 2022 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License v. 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0,
# or the Eclipse Distribution License v. 1.0 which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
#

# The following 2 comment lines are for automated tools that the IBM translation teams use
#NLS_MESSAGEFORMAT_VAR
#NLS_ENCODING=UNICODE

cannotMarshallObject=Cannot marshall object
typeResolutionError=Error resolving runtime type for type: {0}
genericBoundNotFound=Generic bound not found for type {0} declared in {1}.
cantConvertJsonValue=Cannot convert JSON value into: {0}
cantCreateRootInstance=Cannot create root instance
invokingGetter=Error invoking getter method.
gettingValue=Error getting field value.
settingValue=Error setting field value.
noLoggerName=Logger name has to be set
resolveParametrizedType=Cannot resolve ParameterizedType superclass for: {0}
cantCreateInstance=Cannot create instance
inferTypeForUnmarshall=Cannot infer a type for unmarshalling into: {0}
implClassIncompatible=Implementation class {0} is not a subtype of interface {1}.
notValueType=Not a value type: {0}
unexpectedParseEvent=Unexpected parser event: {0}
processFromJson=Process class: {0} from json using converter: {1}
processToJson=Process class: {0} to json using converter: {1}
creatingHandles=Error creating handles.
settingValueWith=Error setting value with: {0}
gettingValueWith=Error getting value with: {0}
unpairedSurrogate=String contains unpaired surrogate.
adapterException=Problem adapting object of type {0} to {1} in class {2}
adapterFound=Found adapter from type {0} to type {1}.
adapterIncompatible=Adapter of runtime type {0} does not match property type {1}
propertyOrder=Property order strategy with name {0} was not recognized
unsupportedJsonpSerializerValue=Unsupported value of type {0} for JSON serializer.
noJndiEnvironment=No JNDI environment ({0}) found to look for CDI provider.
noCdiApiProvider=CDI API not found on class or module path {0}.
illegalAccess=Yasson does not have sufficient permissions to {0}.
usingDefaultConstructorInstantiator=CDI bean manager not found, serializers and adapters will not have CDI support.
noCdiEnvironment=CDI environment is not available.
iJsonEnabledSingleValue=Cannot marshal single value because I-Json is enabled!
dateTypeNotSupported=Date type not supported: {0}
errorParsingDate=Error parsing {1} from value: {0}. Check your @JsonbDateFormat has all time units for {1} type, \
  or consider using org.eclipse.yasson.YassonConfig#ZERO_TIME_PARSE_DEFAULTING.
noDefaultConstructor=Cannot create instance of a class: {0}, No default constructor found.
recordMultipleConstructors=Cannot create instance of a record: {0}, Multiple constructors found.
offsetDateTimeFromMillis=Parsing {0} from epoch millisecond, UTC zone offset will be used.
timeToEpochMillisError=Cannot convert {0} to/from epoch milliseconds.
configPropertyInvalidType=JsonbConfig property [{0}] must be of type [{1}].
conversionNotSupported=Conversion of type [{0}] to/from string value is not supported.
endOfJsonStructure=End of JSON structure reached.
invalidDeserializationType=Invalid json value type {0} for deserialization into type {1}.
czechDiacritics=p\u0159\u00edli\u0161,\u017elu\u0165ou\u010dk\u00fd,k\u016f\u0148,\u00fap\u011bl,\u010f\u00e1belsk\u00e9,\u00f3dy
russianDiacritics=\u0441\u043b\u0438\u0448\u043a\u043e\u043c,\u0436\u0435\u043b\u0442\u0435\u043d\u044c\u043a\u0438\u0439,\u043a\u043e\u043d\u044c,\u043f\u0435\u043b,\u0430\u0434\u0441\u043a\u0438\u0435,\u043e\u0434\u044b
propertyNotFoundDeserializer=Property {0} was not found in class {1}. Skipping value {2}.
settingPropertyDeserializer=Setting property {0} in class {1} with value {2}.
classLoadNotAllowed=Class load for {0} name is not allowed!
errorCallingJsonbCreator=Exception occurred during call to JSONB creator on class: {0}.
incompatibleFactoryCreatorReturnType=Return type of creator {0} must be of type {1}.
multipleJsonbCreators=More than one @JsonbCreator declared in class {0}.
internalError=Internal error: {0}
serializePropertyError=Unable to serialize property ''{0}'' from {1}
deserializeValueError=Error deserialize JSON value into type: {0}.
parsingNumber=Error parsing number {0} with format {1}.
unknownBinaryDataStrategy=Unknown binary data strategy: {0}
invalidPropertyNamingStrategy=Property naming strategy must be either: String name, or instance of javax.json.bind.config.PropertyNamingStrategy.
creatorParameterNotAnnotated=Argument has no JsonbProperty annotation for JsonbCreator {0}.
unknownJsonProperty=Json property {0} can not be mapped to a class {1}.
jsonbCreatorMissingProperty=JsonbCreator parameter {0} is missing in json document.
zoneParseError=Cannot parse zone from json value: {0}
jsonbTransientWithOtherAnnotations=JsonbTransient annotation cannot be used with other jsonb annotations on the same property.
nonParametrizedType=Type: {0} is not a parametrized type.
propertyNameClash=Property {0} clashes with property {1} by read or write name in class {2}.
sqlDateIJsonError=java.sql.Date is not supported in STRICT_IJSON mode.
recursiveReference=Recursive reference has been found in class {0}.
datatypeFactoryCreationFailed=An error occurred while DatatypeFactory creation.
multipleConstructorPropertiesCreators=More than one constructor annotated with @ConstructorProperties declared in class {0}.
annotationNotAvailable=Annotation {0} is not visible in modules or classpath. Annotation will be ignored.
missingValuePropertyInAnnotation=Missing value property in Annotation {0}. Annotation will be ignored.
numberIncompatibleValueTypeArray=Value type {0} is not a JsonNumber.
numberIncompatibleValueTypeObject=Value type {0} at key {1} is not a JsonNumber.
