#
# Copyright (c) 1997, 2013, 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.
#

#nested
# Wrapped into an Exception. {0} - localizable exception message of another exception
nestedSerializationError=erro de serializa\u00E7\u00E3o: {0}
# Wrapped into an Exception. {0} - localizable exception message of another exception
nestedDeserializationError=erro de desserializa\u00E7\u00E3o: {0}
nestedEncodingError=erro de codifica\u00E7\u00E3o: {0}

noSuchContentId=N\u00E3o h\u00E1 anexo para o ID de conte\u00FAdo "{0}"

#EncoderDecoder
exception.notfound=classe de exce\u00E7\u00E3o {0} n\u00E3o encontrada no modelo!
exception.incorrectType=tipo incorreto. Esperava java.lang.Exception; encontrou {0}
# Usage not found. TODO Remove
#incorrect.messageinfo=can't write object! unexpected type: {0}
# Usage not found. TODO Remove
#unknown.object=don\'t know how to write object: {0}
xsd.unknownPrefix=prefixo desconhecido \"{0}\"
xsd.unexpectedElementName=nome do elemento inesperado: esperado={0}, real:{1}

failed.to.read.response=Falha ao ler uma resposta: {0}
