#
# Copyright (c) 1997, 2022 Oracle and/or its affiliates. All rights reserved.
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Distribution License v. 1.0, which is available at
# http://www.eclipse.org/org/documents/edl-v10.php.
#
# SPDX-License-Identifier: BSD-3-Clause
#



#
# 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 = \u4e88\u671f\u3057\u306a\u3044\u8981\u7d20'{'{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 = \u4e88\u671f\u3057\u306a\u3044\u8981\u7d20\u306e\u7d42\u308f\u308a'{'{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 = \u4e88\u671f\u3057\u306a\u3044\u5c5e\u6027'{'{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 = \u4e88\u671f\u3057\u306a\u3044\u5c5e\u6027\u306e\u7d42\u308f\u308a'{'{0}'}':{1}

ContentHandlerEx.UnexpectedText = \u4e88\u671f\u3057\u306a\u3044\u30c6\u30ad\u30b9\u30c8"{0}"

# Wrapped into an InternalError. e.g.: java.lang.InternalError: compiler error(unexpectedLeaveChild)
ContentHandlerEx.UnexpectedLeaveChild = \u30b3\u30f3\u30d1\u30a4\u30eb\u30fb\u30a8\u30e9\u30fc(unexpectedLeaveChild)
	
SAXUnmarshallerHandlerImpl.UnexpectedRootElement = \u4e88\u671f\u3057\u306a\u3044\u30eb\u30fc\u30c8\u8981\u7d20{0}

# Usage not found. TODO Remove
#SAXUnmarshallerHandlerImpl.UnexpectedRootElement2 = \
#	unexpected root element (uri:"{0}", local:"{1}"). Expected elements are {2}
	
Util.UndefinedPrefix = \u672a\u5b9a\u7fa9\u306e\u63a5\u982d\u8f9e: {0}

# Not concatenated with any other string (written on a separate line).
Unmarshaller.NullReader = \u30ea\u30fc\u30c0\u30fc\u306fnull\u306b\u3067\u304d\u307e\u305b\u3093

# Not concatenated with any other string (written on a separate line).
Unmarshaller.IllegalReaderState = \u30ea\u30fc\u30c0\u30fc\u306f{0}\u30a4\u30d9\u30f3\u30c8\u3067\u306f\u306a\u304f\u3001START_ELEMENT\u306b\u5b58\u5728\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059
	
