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


#
# Message resource file
#



BGMBuilder.NoGlobalElement = Lo schema non contiene alcuna dichiarazione di elementi globali.

UnusedCustomizationChecker.WarnUnusedExpectedContentTypes = Un attributo xmime:expectedContentTypes \u00e8 presente su un elemento errato

BGMBuilder.MultipleSchemaBindings = Sono definite pi\u00f9 <schemaBindings> per lo spazio di nomi di destinazione "{0}"

BGMBuilder.MultipleSchemaBindings.Location = Qui \u00e8 definito un'altra <schemaBindings>



ClassSelector.ClassNameIsRequired = Impossibile derivare un nome dallo schema. Un attributo name specificato per la personalizzazione <class>.

ClassSelector.IncorrectClassName = Il nome specificato "{0}" non \u00e8 un identificativo Java valido.

ClassSelector.IncorrectPackageName = Il nome del package ''{1}'' usato per questo schema non \u00e8 un nome di package valido.

# {0} - name-identifier-format-enum
ClassSelector.JavadocHeading = <p>Classe Java per {0}.\n\n<p>Il seguente frammento di schema specifica il contenuto previsto contenuto in questa classe.

ClassSelector.JavadocLineUnknown = sconosciuto

ClassSelector.ReservedClassName = Tentativo di creare una classe con il nome corrispondente alla parola riservata "{0}".


CollisionInfo.CollisionInfo = Il nome di campo "{0}" \u00e8 usato da due diverse parti di uno schema. Vedere: \n{1}\n{2}

CollisionInfo.UnknownFile = file sconosciuto

# Concatenated with CollisionInfo.CollisionInfo (CollisionInfo.CollisionInfo + CollisionInfo.LineXOfY + CollisionInfo.LineXOfY) e.g.: The field name "FieldName" is used by two different parts of a schema. See: line X of file:Schema.xsd line Y of file:Schema2.xsd
CollisionInfo.LineXOfY = riga {0} di {1}


ConversionFinder.CannotBeTypeSafeEnum = Una personalizzazione dell'enumerazione Typesafe \u00e8 specificata per un tipo semplice che non pu\u00f2 essere mappato a un'enumerazione Typesafe.
ConversionFinder.CannotBeTypeSafeEnum.Location = La relativa dichiarazione di tipo semplice \u00e8 specificata in questa posizione
ConversionFinder.NoEnumNameAvailable = \u00c8 richiesto un attributo name per personalizzare un tipo semplice anonimo nell'enumerazione Typesafe.
ConversionFinder.NoEnumFacet= la personalizzazione della classe di enumerazione \u00e8 specificata su un tipo che non ha alcun facet di enumerazione.
ERR_ILLEGAL_EXPECTED_MIME_TYPE = Impossibile analizzare il tipo MIME previsto "{0}". {1}.


DatatypeBuilder.DatatypeError = Errore di tipo semplice: {0}






DefaultParticleBinder.UnableToGenerateNameFromModelGroup = Impossibile generare un nome di propriet\u00e0 da un gruppo di modelli. \u00c8 richiesta una personalizzazione.

# {0} - CollisionInfo.CollisionInfo is injected with parameters field name, location at first schema, location at second schema e.g.: Gets the rest of the content model. You are getting this "catch-all" property because of the following reason: The field name "OverviewURL" is used by two different parts of a schema. See: line 392 of file:/C:/Development/Projects/jUDDI_v3/uddi-ws/src/main/resources/uddi_v3.xsd line 390 of file:/C:/Development/Projects/jUDDI_v3/uddi-ws/src/main/resources/uddi_v3.xsd To get rid of this property, apply a property customization to one of both of the following declarations to change their names: Gets the value of the content property.
DefaultParticleBinder.FallbackJavadoc = Recupera il resto del modello di contenuto. \n\n<p>\nQuesta propriet\u00e0 "catch-all" viene recuperata per il seguente motivo: \n{0}\n<p>\nPer eliminare questa propriet\u00e0, applicare una personalizzazione della propriet\u00e0 a una \ndelle seguenti due dichiarazioni per modificarne il nome: \n







FieldBuilder.IncorrectFixedValue = Il valore specificato nell''attributo fisso "{0}" non \u00e8 un valore valido per il tipo di dati

FieldBuilder.IncorrectDefaultValue = Il valore specificato nell''attributo predefinito "{0}" non \u00e8 un valore valido per il tipo di dati

FieldBuilder.ConflictBetweenUserTypeAndActualType.AttUse = "{0}" \u00e8 specificato da una personalizzazione ma questo attributo ha un tipo incompatibile "{1}"

FieldBuilder.ConflictBetweenUserTypeAndActualType.AttUse.Source = La relativa personalizzazione \u00e8 specificata\tin questa posizione

FieldBuilder.Javadoc.NilProperty = Questa propriet\u00e0 viene usata per controllare <a href="http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/#Nils">la funzione xsi:nil</a> dello schema XML W3C. \nL''impostazione di questa propriet\u00e0 su true produrr\u00e0 un output corrispondente a &lt;{0} xsi:nil="true" /> indipendentemente dai valori delle altre propriet\u00e0.

FieldBuilder.Javadoc.ValueObject = ottenere/impostare il valore del tipo complesso associato a questo elemento.\n Quando viene eseguito l''unmarshalling di un documento contenente xsi:type, il metodo get{1} restituisce un''istanza delle classi derivate di ''{''@link {0}''}''. Analogamente, se viene impostata un''istanza delle classi derivate, si ottiene l''istanza con xsi:type quando viene eseguito il marshalling in XML.


SimpleTypeBuilder.UnnestedJavaTypeCustomization = la personalizzazione <javaType> in questo contesto deve essere nidificata (JAXB spec sec 6.8.1): \n\t<property>\n\t  <baseType>\n\t    <javaType ...>\n\t  </baseType>\n\t</property>

UnusedCustomizationChecker.UnacknolwedgedCustomization = il compilatore non \u00e8 stato in grado di rispettare questa personalizzazione {0}. \u00c8 allegata alla posizione errata o non \u00e8 coerente con altre associazioni.

UnusedCustomizationChecker.UnacknolwedgedCustomization.Relevant = (la personalizzazione riportata sopra \u00e8 allegata alla seguente posizione nello schema)

ERR_ENUM_MEMBER_NAME_COLLISION = Due membri dell''enumerazione producono lo stesso nome di costante {0}

# Not concatenated with any other String (written on a separate line) but printed after ERR_ENUM_MEMBER_NAME_COLLISION, followed by a line with the position of the problem in a particular file
ERR_ENUM_MEMBER_NAME_COLLISION_RELATED = (relativo a quanto riportato sopra) l'altra enumerazione \u00e8 definita in questa posizione

WARN_ENUM_MEMBER_SIZE_CAP = Il tipo semplice "{0}" non \u00e8 stato mappato all''enumerazione a causa del limite EnumMemberSizeCap. Conteggio facet: {1}, limite corrente: {2}. \u00c8 possibile usare l''attributo di personalizzazione "typesafeEnumMaxMembers" per estendere il limite.

ERR_CANNOT_GENERATE_ENUM_NAME = Impossibile generare un nome di costante dal valore di enumerazione "{0}". Usare <jaxb:typesafeEnumMember name="..."/> per specificarne uno.

# Wrapped into an Exception. Not concatenated with any other string.
ERR_MULTIPLE_GLOBAL_BINDINGS = in un'intera compilazione \u00e8 consentita solo una personalizzazione globalBindings

# Not concatenated with any other String (written on a separate line) but printed after ERR_MULTIPLE_GLOBAL_BINDINGS, followed by a line with the position of the problem in a particular file, e.g. parsing a schema... \n [ERROR] only one globalBindings customization is allowed in a whole compilation \n line 8 of file:/C:/kohsuke/Sun/JAXB/jaxb-ri/sandbox/issue98/base.xjb \n [ERROR] (related to above) but one is already given at this location \n line 8 of file:/C:/kohsuke/Sun/JAXB/jaxb-ri/sandbox/issue98/sub1.xjb
ERR_MULTIPLE_GLOBAL_BINDINGS_OTHER = (relativo a quanto riportato sopra) ma solo una \u00e8 gi\u00e0 stata fornita in questa posizione

ERR_REFERENCE_TO_NONEXPORTED_CLASS = {0} si trova in uno schema di riferimento e non dispone della classe Java corrispondente specificata dalla personalizzazione <jaxb:class ref="..."/>, pertanto non \u00e8 possibile farvi riferimento dall''esterno.

# Not concatenated with any other string (written on a separate line) but printed after ERR_REFERENCE_TO_NONEXPORTED_CLASS.
ERR_REFERENCE_TO_NONEXPORTED_CLASS_MAP_FALSE = (relativo a quanto riportato sopra) Lo schema per lo spazio di nomi "{0}" (che include il componente riportato sopra) \u00e8 designato per riferimento solo da questa personalizzazione.

# Not concatenated with any other string (written on a separate line) but printed after ERR_REFERENCE_TO_NONEXPORTED_CLASS and ERR_REFERENCE_TO_NONEXPORTED_CLASS_MAP_FALSE.
ERR_REFERENCE_TO_NONEXPORTED_CLASS_REFERER = (relativo a quanto riportato sopra) Al componente dello schema che presenta problemi viene fatto riferimento da questo componente: {0}

WARN_DEFAULT_VALUE_PRIMITIVE_TYPE = Impossibile generare il valore predefinito per il tipo predefinito "{0}".
