#
# Copyright (c) 1997, 2011, 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>] ...\nSe viene specificato dir, verranno compilati tutti i file dello schema in essa contenuti.\nSe viene specificato jar, verr\u00e0 compilato il file di associazione /META-INF/sun-jaxb.episode.\nOpzioni:\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\ \ -relaxng           :  tratta l'input come NG RELAX (sperimentale, non supportato)\n\ \ -relaxng-compact   :  tratta l'input come sintassi compatta NG RELAX (sperimentale, non supportato)\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, RELAX NG, RELAX NG compact syntax, WSDL; {1} - one of (respectively): -dtd, -relaxng, -relaxng-compact, -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.2.8-b130911.1802 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.2.8-b130911.1802 \nVedere <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nQualsiasi modifica a questo file andr\u00e0 persa durante la ricompilazione dello schema di origine. \nGenerato il: {0} \n

Driver.Version = xjc 2.2.8-b130911.1802

Driver.FullVersion = versione completa xjc "2.2.8-b130911.1802"

Driver.BuildID = 2.2.8-b130911.1802

# 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
