# This file stores localized messages for the Xerces JAXP Datatype API implementation.
#
# The messages are arranged in key and value tuples in a ListResourceBundle.
#

BadMessageKey = Impossibile trovare il messaggio di errore corrispondente alla chiave di messaggio.
FormatFailed = Si \u00E8 verificato un errore interno durante la formattazione del seguente messaggio:\n

FieldCannotBeNull=Impossibile richiamare {0} con un parametro ''null''.
UnknownField={0} richiamato con un campo sconosciuto:{1}
#There are two similar keys 'InvalidXMLGreogorianCalendarValue' . Suffix (year, month) has been added and are used as per the context.
InvalidXGCValue-milli=Anno = {0}, mese = {1}, giorno = {2}, ora = {3}, minuto = {4}, secondo = {5}, frazione di secondo = {6}, fuso orario = {7} non \u00E8 una rappresentazione valida di un valore di calendario gregoriano XML.
#There are two similar keys 'InvalidXMLGreogorianCalendarValue' . Suffix (year, month) has been added and are used as per the context.
InvalidXGCValue-fractional=Anno = {0}, mese = {1}, giorno = {2}, ora = {3}, minuto = {4}, secondo = {5}, frazione di secondo = {6}, fuso orario = {7} non \u00E8 una rappresentazione valida di un valore di calendario gregoriano XML.

InvalidXGCFields=Impostato set di campi non valido per XMLGregorianCalendar

InvalidFractional=Valore {0} non valido per la frazione di secondo.

#XGC stands for XML Gregorian Calendar
InvalidXGCRepresentation="{0}" non \u00E8 una rappresentazione valida di un valore di calendario gregoriano XML.

InvalidFieldValue=Valore {0} non valido per il campo {1}.

NegativeField= Il campo {0} \u00E8 negativo

AllFieldsNull=Tutti i campi (javax.xml.datatype.DatatypeConstants.Field) sono nulli.

TooLarge=Il valore {0} "{1}" \u00E8 troppo grande per essere supportato da questa implementazione
