#
# Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

# Concatenated with Driver.ErrorMessage, Driver.WarningMessage, Driver.InfoMessage (Driver.InfoMessage + exception message + ConsoleErrorReporter.UnknownLocation) if location of the error is not known.
ConsoleErrorReporter.UnknownLocation = posizione sconosciuta

# Concatenated with Driver.ErrorMessage, Driver.WarningMessage, Driver.InfoMessage (Driver.InfoMessage + exception message + ConsoleErrorReporter.LineXOfY). {0} - "?"/number, {1} - file location/"unknown file" e.g.: [xjc] [ERROR] Attempt to create a property having the same name as the reserved word "Class". [xjc] line 6 of example.xsd
ConsoleErrorReporter.LineXOfY = \ \ riga {0} di {1}

# may be a placeholder replacement for the second placeholder of ConsoleErrorReporter.LineXOfY (if the file location is unknown)
ConsoleErrorReporter.UnknownFile = file sconosciuto

Driver.Private.Usage = Opzioni di test private aggiuntive:\n\ \ -debug             :  l'esecuzione avviene in modalit\u00e0 debug (include -verbose)\n\ \ -mode <modalit\u00e0>       :  XJC viene eseguito in un'altra modalit\u00e0 di esecuzione\n\ \ -private           :  visualizza questo messaggio della Guida\nModalit\u00e0:\n\ \ code         :  genera il codice sorgente Java (valore predefinito)\n\ \ dryrun       :  compila lo schema nella memoria ma non genera il codice sorgente Java\n\ \ zip          :  genera il codice sorgente Java in un file zip specificato dall'opzione -d\n\ \ sig          :  esegue il dump del firme del codice generato\n\ \ forest       :  esegue il dump dell'insieme di strutture DOM trasformato\n
Driver.Public.Usage = Uso: xjc [-options ...] <file schema/URL/dir/jar> ... [-b <bindinfo>] ...\n\
Se viene specificato dir, verranno compilati tutti i file dello schema in essa contenuti.\n\
Se viene specificato jar, verr\u00e0 compilato il file di associazione /META-INF/sun-jaxb.episode.\n\
Opzioni:\n\
\ \ -nv                :  non esegue la convalida rigorosa degli schemi di input\n\
\ \ -extension         :  consente le estensioni del fornitore; non segue in modo rigoroso le\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ regole di compatibilit\u00e0 e App E.2 dalla specifica JAXB\n\
\ \ -b <file/dir>      :  specifica i file di associazione esterni (ogni <file> deve avere la relativa -b)\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Se viene fornita una directory, la ricerca viene eseguita in **/*.xjb\n\
\ \ -d <dir>           :  i file generati andranno in questa directory\n\
\ \ -p <pkg>           :  specifica il package di destinazione\n\
\ \ -httpproxy <proxy> :  imposta il proxy HTTP/HTTPS. Il formato \u00e8 [user[:password]@]proxyHost:proxyPort\n\
\ \ -httpproxyfile <f> :  funziona come -httpproxy ma prende l'argomento da un file per proteggere la password \n\
\ \ -classpath <arg>   :  specifica dove trovare i file delle classi utente\n\
\ \ -catalog <file>    :  specifica i file di catalogo per risolvere i riferimenti a entit\u00e0 esterne\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ supporta il formato di catalogo XML TR9401, XCatalog e OASIS.\n\
\ \ -readOnly          :  i file generati saranno in modalit\u00e0 di sola lettura\n\
\ \ -npa               :  elimina la generazione delle annotazioni a livello di package (**/package-info.java)\n\
\ \ -no-header         :  elimina la generazione di un'intestazione di file con indicatore orario\n\
\ \ -target (2.0|2.1)  :  funziona come XJC 2.0 o 2.1 e genera del codice che non usa alcuna funzione 2.2.\n\
\ \ -encoding <encoding> :  specifica la codifica di caratteri per i file di origine generati\n\
\ \ -enableIntrospection :  abilita la generazione di getter/setter booleani per abilitare le API di introspezione dei bean \n\
\ \ -contentForWildcard  :  genera la propriet\u00e0 di contenuto per i tipi con pi\u00f9 elementi derivati xs:any \n\
\ \ -xmlschema         :  tratta l'input come schema XML W3C (valore predefinito)\n\
\ \ -dtd               :  tratta l'input come DTD XML (sperimentale, non supportato)\n\
\ \ -wsdl              :  tratta l'input come WSDL e compila gli schemi al suo interno (sperimentale, non supportato)\n\
\ \ -verbose           :  be extra verbose\n\
\ \ -quiet             :  elimina l'output del compilatore\n\
\ \ -help              :  visualizza questo messaggio della Guida\n\
\ \ -version           :  visualizza le informazioni sulla versione\n\
\ \ -fullversion       :  visualizza le informazioni sulla versione completa\n\

Driver.AddonUsage = \nEstensioni:

# {0} - one of: DTD, WSDL; {1} - one of (respectively): -dtd, -wsdl
Driver.ExperimentalLanguageWarning = Si sta tentando di compilare {0}? Il supporto per {0} \u00e8 sperimentale. \u00c8 possibile abilitarlo usando l''opzione {1}.

# Not concatenated with any other String. Variable: Name of a directory (input argument of the XJC utility).
Driver.NonExistentDir = impossibile scrivere su una directory non esistente "{0}"

# Usage not found. TODO Remove
#Driver.MissingRuntimePackageName = \
#       the -use-runtime option is missing a package name

# Not concatenated with any other string (written on a separate line).
Driver.MissingModeOperand = operando mancante nell'opzione -mode

# Usage not found. TODO Remove
#Driver.MissingCompatibilityOperand = \
#       the -compatibility option is missing an operand

# Not concatenated with any other string (written on a separate line).
Driver.MissingOperand = operando mancante

# Not concatenated with any other string (written on a separate line).
Driver.MissingProxyHost = operando mancante nell'opzione -host \noppure \u00e8 stato specificato -port ma non -host

# Not concatenated with any other string (written on a separate line).
Driver.MissingProxyPort = operando mancante nell'opzione -port \noppure \u00e8 stato specificato -host ma non -port

Driver.ILLEGAL_TARGET_VERSION = "{0}" non \u00e8 una versione di destinazione valida. Sono supportate le versioni "2.0" e "2.1".

# Not concatenated with any other string (written on a separate line).
Driver.MISSING_PROXYFILE = operando mancante nell'opzione -httpproxyfile

Driver.NO_SUCH_FILE = Nessun file di questo tipo: {0}

Driver.ILLEGAL_PROXY = "{0}" non \u00e8 un formato proxy valido. Il formato \u00e8 [user[:password]@]proxyHost:proxyPort

# Not concatenated with any other string (written on a separate line).
Driver.UnrecognizedMode = modalit\u00e0 non riconosciuta {0}

# Not concatenated with any other string (written on a separate line).
Driver.UnrecognizedParameter = parametro non riconosciuto {0}

Driver.UnsupportedEncoding = codifica non supportata: {0}

Driver.MissingGrammar = grammatica non specificata

# {0} - namespace uri, {1} - local name of the attribute/element e.g.: Unexpected end of attribute {http://www.w3.org/XML/1998/namespace}:lang
Driver.NotABindingFile = non \u00e8 un file di associazione esterno. L''elemento radice deve essere ''{''http://java.sun.com/xml/ns/jaxb''}''bindings ma \u00e8 ''{''{0}''}''{1}

# Not concatenated with any other string (written on a separate line).
Driver.ParsingSchema = analisi di uno schema in corso...

Driver.ParseFailed = Analisi di uno schema non riuscita.

Driver.StackOverflow = Overflow dello stack. Si sta compilando uno schema grande che richiede pi\u00f9 risorse oppure XJC contiene un bug. Per prima cosa, estendere la dimensione dello stack usando l'opzione -Xss JVM. Se questo non risolve il problema, usare l'opzione -debug per ottenere lo stack trace e contattare Sun.

# Not concatenated with any other string (written on a separate line).
Driver.CompilingSchema = compilazione di uno schema in corso...

Driver.FailedToGenerateCode = Produzione del codice non riuscita.

# DO NOT localize the 2.3.0-SNAPSHOT string - it is a token for an mvn <properties filter>
Driver.FilePrologComment = Questo file \u00e8 stato generato dall''architettura JavaTM per XML Binding (JAXB) Reference Implementation, v2.3.0-SNAPSHOT \nVedere <a href="https://jaxb.java.net/">https://jaxb.java.net/</a> \nQualsiasi modifica a questo file andr\u00e0 persa durante la ricompilazione dello schema di origine. \nGenerato il: {0} \n

Driver.Version = xjc 2.3.0-SNAPSHOT

Driver.FullVersion = versione completa xjc "2.3.0-SNAPSHOT"

Driver.BuildID = 2.3.0-SNAPSHOT

# for JDK integration - include version in source zip
jaxb.jdk.version=@@JAXB_JDK_VERSION@@

# see java.text.SimpleDateFormat for format syntax
# DO NOT LOCALIZE, Format should not be changed, English locale is used to transform this string into a real date.
Driver.DateFormat = yyyy.MM.dd

# see java.text.SimpleDateFormat for format syntax
# Format should not be changed, English locale is used to transform this string into a real time. Letters can be translated but the user should known that java.text.SimpleDateFormat is responsible for formatting (meaning of symbols can be found at http://docs.oracle.com/javase/tutorial/i18n/format/simpleDateFormat.html).
Driver.TimeFormat = hh:mm:ss a z

# as in: "generated on <date> at <time>"
Driver.At = alle

# ERROR in this meaning is a well known level of logging and should not be translated.
Driver.ErrorMessage = [ERROR] {0}

# WARNING in this meaning is a well known level of logging and should not be translated.
Driver.WarningMessage = [WARNING] {0}

# INFO in this meaning is a well known level of logging and should not be translated.
Driver.InfoMessage = [INFO] {0}

ModelLoader.TooManySchema = Troppi file dello schema per questa lingua dello schema. Compilare un file per volta.

ModelLoader.BindingFileNotSupportedForRNC = I file di associazione esterna non sono supportati per la sintassi compatta NG RELAX.

Driver.DefaultVersion = La versione viene impostata sul valore predefinito di JAXB 2.0

Driver.DefaultPackageWarning = Specificato package Java predefinito. Non si potr\u00e0 accedere al codice generato dalle classi in qualsiasi altro package.

Driver.NotAValidFileName = "{0}" non \u00e8 un nome file valido: {1}

Driver.FailedToParse = Analisi di "{0}" non riuscita: {1}

Driver.NotAFileNorURL = "{0}" non \u00e8 un nome file n\u00e9 un URL

FIELD_RENDERER_CONFLICT = "-{0}" e "-{1}" si escludono a vicenda poich\u00e9 entrambi influiscono sulla generazione del codice

NAME_CONVERTER_CONFLICT = "-{0}" e "-{1}" si escludono a vicenda poich\u00e9 entrambi influiscono sulla generazione del codice

# {0} - file path, {1} - exception message e.g.: Failed to load "/foo/bar/Library.jar": File not found.
FAILED_TO_LOAD = Caricamento di "{0}" non riuscito: {1}

PLUGIN_LOAD_FAILURE = Caricamento di un plugin non riuscito: "{0}". Usare la propriet\u00e0 di sistema ''-Dcom.sun.tools.internal.xjc.Options.findServices=true'' per ulteriore diagnosi
