#
# 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 = localiza\u00e7\u00e3o desconhecida

# 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 = \ \ linha {0} de {1}

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

Driver.Private.Usage = Op\u00e7\u00f5es adicionais de teste privado:\n\\ \\ -debug             :  executar no modo de depura\u00e7\u00e3o (inclui -verbose)\n\\ \\ -mode <mode>       :  executar XJC em outro modo de execu\u00e7\u00e3o\n\\ \\ -private           :  exibir esta mensagem de ajuda\nModo:\n\\ \\ code         :  gerar c\u00f3digo de origem Java (default)\n\\ \\ dryrun       :  compilar o esquema na mem\u00f3ria, mas n\u00e3o gerar a origem Java\n\\ \\ zip          :  gerar c\u00f3digo de origem Java em um arquivo zip especificado pela op\u00e7\u00e3o -d\n\\ \\ sig          :  fazer dump das assinaturas do c\u00f3digo gerado\n\\ \\ forest       :  fazer dump do DOM transformado\n
Driver.Public.Usage = Uso: xjc [-options ...] <schema file/URL/dir/jar> ... [-b <bindinfo>] ...\n\
Se dir for especificado, todos os arquivos do esquema dele ser\u00e3o compilados.\n\
Se jar for especificado, o arquivo de bind /META-INF/sun-jaxb.episode ser\u00e1 compilado.\n\
Op\u00e7\u00f5es:\n\
\ \ -nv                :  n\u00e3o executar valida\u00e7\u00e3o restrita do(s) esquema(s) de entrada\n\
\ \ -extension         :  permitir extens\u00f5es do fornecedor - n\u00e3o seguir rigorosamente as\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Regras de Compatibilidade e Ap\u00eandice E.2 da Espec. JAXB\n\
\ \ -b <file/dir>      :  especifica arquivos de bind externos (cada <file> deve ter seu pr\u00f3prio -b)\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Se for fornecido um diret\u00f3rio, **/*.xjb ser\u00e1 pesquisado\n\
\ \ -d <dir>           :  os arquivos gerados ficar\u00e3o neste diret\u00f3rio\n\
\ \ -p <pkg>           :  especifica o pacote do alvo\n\
\ \ -httpproxy <proxy> :  definir proxy HTTP/HTTPS. O formato \u00e9 [user[:password]@]proxyHost:proxyPort\n\
\ \ -httpproxyfile <f> :  Funciona como -httpproxy, mas usa o argumento em um arquivo para proteger a senha \n\
\ \ -classpath <arg>   :  especifica onde localizar os arquivos de classe do usu\u00e1rio\n\
\ \ -catalog <file>    :  especifica arquivos do cat\u00e1logo para resolver refer\u00eancias da entidade externa\n\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ suporta TR9401, formato de XCatalog e do Cat\u00e1logo XML do OASIS.\n\
\ \ -readOnly          :  os arquivos gerados ficar\u00e3o no modo somente leitura\n\
\ \ -npa               :  suprime a gera\u00e7\u00e3o de anota\u00e7\u00f5es do n\u00edvel do pacote (**/package-info.java)\n\
\ \ -no-header         :  suprime a gera\u00e7\u00e3o de um cabe\u00e7alho do arquivo com timestamp\n\
\ \ -target (2.0|2.1)  :  atua como XJC 2.0 ou 2.1 e gera c\u00f3digo que n\u00e3o usa nenhum recurso 2.2.\n\
\ \ -encoding <encoding> :  especifica codifica\u00e7\u00e3o de caracteres para arquivos de origem gerados\n\
\ \ -enableIntrospection :  ativa a gera\u00e7\u00e3o correta de getters/setters Boolianos para ativar apis de Introspec\u00e7\u00e3o de Bean \n\
\ \ -contentForWildcard  :  gera a propriedade do conte\u00fado dos tipos com v\u00e1rios xs:todos elementos derivados \n\
\ \ -xmlschema         :  trata a sa\u00edda como Esquema XML de W3C (default)\n\
\ \ -dtd               :  trata a entrada como XML DTD (experimental,n\u00e3o suportada)\n\
\ \ -wsdl              :  trata a entrada como WSDL e compila esquemas dentro dela (experimental,n\u00e3o suportada)\n\
\ \ -verbose           :  verbose extra\n\
\ \ -quiet             :  suprime a sa\u00edda do compilador\n\
\ \ -help              :  exibe esta mensagem de ajuda\n\
\ \ -version           :  exibe informa\u00e7\u00f5es da vers\u00e3o\n\
\ \ -fullversion       :  exibe informa\u00e7\u00f5es da vers\u00e3o completa\n\

Driver.AddonUsage = \nExtens\u00f5es:

# {0} - one of: DTD, WSDL; {1} - one of (respectively): -dtd, -wsdl
Driver.ExperimentalLanguageWarning = Voc\u00ea est\u00e1 tentando compilar {0}? O suporte para {0} \u00e9 experimental. Voc\u00ea pode ativ\u00e1-lo usando a op\u00e7\u00e3o {1}.

# Not concatenated with any other String. Variable: Name of a directory (input argument of the XJC utility).
Driver.NonExistentDir = n\u00e3o pode gravar em um diret\u00f3rio "{0}" n\u00e3o existente

# 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 = a op\u00e7\u00e3o -mode n\u00e3o encontrou um operando

# 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 = est\u00e1 faltando um operando

# Not concatenated with any other string (written on a separate line).
Driver.MissingProxyHost = a op\u00e7\u00e3o -host n\u00e3o encontrou um operando \nou -port foi especificado, mas n\u00e3o -host

# Not concatenated with any other string (written on a separate line).
Driver.MissingProxyPort = a op\u00e7\u00e3o -port n\u00e3o encontrou um operando \nou -host foi especificado, mas n\u00e3o -port

Driver.ILLEGAL_TARGET_VERSION = "{0}" n\u00e3o \u00e9 uma vers\u00e3o do alvo v\u00e1lida. "2.0" e "2.1" s\u00e3o suportadas.

# Not concatenated with any other string (written on a separate line).
Driver.MISSING_PROXYFILE = a op\u00e7\u00e3o -httpproxyfile n\u00e3o encontrou um operando

Driver.NO_SUCH_FILE = O arquivo {0} n\u00e3o existe

Driver.ILLEGAL_PROXY = "{0}" n\u00e3o \u00e9 um formato de proxy v\u00e1lido. O formato \u00e9 [user[:password]@]proxyHost:proxyPort

# Not concatenated with any other string (written on a separate line).
Driver.UnrecognizedMode = modo n\u00e3o reconhecido {0}

# Not concatenated with any other string (written on a separate line).
Driver.UnrecognizedParameter = par\u00e2metro {0} n\u00e3o reconhecido

Driver.UnsupportedEncoding = codifica\u00e7\u00e3o n\u00e3o suportada: {0}

Driver.MissingGrammar = gram\u00e1tica n\u00e3o especificada

# {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 = n\u00e3o \u00e9 um arquivo de bind externo. O elemento-raiz deve ser "{http://java.sun.com/xml/ns/jaxb}"bindings, mas \u00e9 "{{0}}"{1}

# Not concatenated with any other string (written on a separate line).
Driver.ParsingSchema = fazendo parse de um esquema...

Driver.ParseFailed = Falha ao fazer parse de um esquema.

Driver.StackOverflow = Sobrecarga de pilha. Voc\u00ea est\u00e1 compilando um esquema maior que exige mais recursos ou o XJC tem um erro. Primeiro, aumente o tamanho da pilha usando a op\u00e7\u00e3o -Xss da JVM. Se isso n\u00e3o resolver o problema, use a op\u00e7\u00e3o -debug para obter o rastreamento da pilha e contate a Sun.

# Not concatenated with any other string (written on a separate line).
Driver.CompilingSchema = compilando um esquema...

Driver.FailedToGenerateCode = Falha ao produzir o c\u00f3digo.

# DO NOT localize the 2.3.0-SNAPSHOT string - it is a token for an mvn <properties filter>
Driver.FilePrologComment = Este arquivo foi gerado pela Arquitetura JavaTM para Implementa\u00e7\u00e3o de Refer\u00eancia (JAXB) de Bind XML, v2.3.0-SNAPSHOT \nConsulte <a href="https://jaxb.java.net/">https://jaxb.java.net/</a> \nTodas as modifica\u00e7\u00f5es neste arquivo ser\u00e3o perdidas ap\u00f3s a recompila\u00e7\u00e3o do esquema de origem. \nGerado em: {0} \n

Driver.Version = xjc 2.3.0-SNAPSHOT

Driver.FullVersion = vers\u00E3o completa de 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 = \u00e0s

# 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 = N\u00famero excessivo de arquivos do esquema para este idioma do esquema. Compile um arquivo de cada vez.

ModelLoader.BindingFileNotSupportedForRNC = Arquivos de bind externos n\u00e3o s\u00e3o suportados para a sintaxe compacta RELAX NG.

Driver.DefaultVersion = Definindo a vers\u00e3o default como JAXB 2.0

Driver.DefaultPackageWarning = Pacote Java Default especificado. Voc\u00ea n\u00e3o poder\u00e1 acessar o c\u00f3digo gerado das classes em outro pacote.

Driver.NotAValidFileName = "{0}" n\u00e3o \u00e9 um nome de arquivo: {1} v\u00e1lido

Driver.FailedToParse = Falha ao fazer parse "{0}": {1}

Driver.NotAFileNorURL = "{0}" n\u00e3o \u00e9 um nome de arquivo, nem um URL

FIELD_RENDERER_CONFLICT = "-{0}" e "-{1}" s\u00e3o mutuamente exclusivos, pois afetam a gera\u00e7\u00e3o do c\u00f3digo

NAME_CONVERTER_CONFLICT = "-{0}" e "-{1}" s\u00e3o mutuamente exclusivos, pois afetam a gera\u00e7\u00e3o do c\u00f3digo

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

PLUGIN_LOAD_FAILURE = Falha ao carregar um plug-in: "{0}". Use a propriedade do sistema ''-Dcom.sun.tools.internal.xjc.Options.findServices=true'' para diagnosticar posteriormente
