#
# 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
unknownVisibilityStrategy=Property visibility 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 jakarta.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.
