#
# 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.
#

#
# don't modify nor delete anything for backward compatibility
#

# {0} - namespace uri, {1} - local name of the attribute/element e.g.: Unexpected end of attribute {http://www.w3.org/XML/1998/namespace}:lang
ContentHandlerEx.UnexpectedEnterElement = Unerwartetes Element ''{''{0}''}'':{1}

# {0} - namespace uri, {1} - local name of the attribute/element e.g.: Unexpected end of attribute {http://www.w3.org/XML/1998/namespace}:lang
ContentHandlerEx.UnexpectedLeaveElement = Unerwartetes Ende von Element ''{''{0}''}'':{1}

# {0} - namespace uri, {1} - local name of the attribute/element e.g.: Unexpected end of attribute {http://www.w3.org/XML/1998/namespace}:lang
ContentHandlerEx.UnexpectedEnterAttribute = Unerwartetes Attribut ''{''{0}''}'':{1}

# {0} - namespace uri, {1} - local name of the attribute/element e.g.: Unexpected end of attribute {http://www.w3.org/XML/1998/namespace}:lang
ContentHandlerEx.UnexpectedLeaveAttribute = Unerwartetes Ende von Attribut ''{''{0}''}'':{1}

ContentHandlerEx.UnexpectedText = Unerwarteter Text "{0}"

# Wrapped into an InternalError. e.g.: java.lang.InternalError: compiler error(unexpectedLeaveChild)
ContentHandlerEx.UnexpectedLeaveChild = Compilerfehler (unexpectedLeaveChild)

SAXUnmarshallerHandlerImpl.UnexpectedRootElement = unerwartetes Root-Element {0}

# Usage not found. TODO Remove
#SAXUnmarshallerHandlerImpl.UnexpectedRootElement2 = \
#       unexpected root element (uri:"{0}", local:"{1}"). Expected elements are {2}

Util.UndefinedPrefix = unerwartetes Pr\u00E4fix: {0}

# Not concatenated with any other string (written on a separate line).
Unmarshaller.NullReader = Reader darf nicht null sein\t

# Not concatenated with any other string (written on a separate line).
Unmarshaller.IllegalReaderState = Reader muss auf ein START_ELEMENT-Ereignis gesetzt sein und kein {0}-Ereignis
