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

NOT_A_QNAME = {0}\uC740(\uB294) \uC801\uD569\uD55C QName\uC774 \uC544\uB2D9\uB2C8\uB2E4.

# Not concatenated with any other string.
UNRECOGNIZED_TYPE_NAME = \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uC720\uD615 \uC774\uB984: {0}

UNRECOGNIZED_TYPE_NAME_MAYBE = \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uC720\uD615 \uC774\uB984: {0}. {1}\uC744(\uB97C) \uC0AC\uC6A9\uD558\uB824\uACE0 \uD55C \uAC83\uC785\uB2C8\uAE4C?

UNRESOLVED_IDREF = "{0}"\uC740(\uB294) \uC815\uC758\uB418\uC9C0 \uC54A\uC740 ID\uC785\uB2C8\uB2E4.

# Printed after [ERROR]: string.
UNEXPECTED_ELEMENT = \uC608\uC0C1\uCE58 \uC54A\uC740 \uC694\uC18C(URI: "{0}", \uB85C\uCEEC: "{1}")\uC785\uB2C8\uB2E4. \uD544\uC694\uD55C \uC694\uC18C\uB294 {2}\uC785\uB2C8\uB2E4.

UNEXPECTED_TEXT = \uC608\uC0C1\uCE58 \uC54A\uC740 "{0}" \uD14D\uC2A4\uD2B8

UNABLE_TO_CREATE_MAP = \uC774 \uD544\uB4DC\uC758 \uC720\uD615\uC740 {0}\uC774\uC9C0\uB9CC JAXB\uAC00 \uC774 \uD544\uB4DC\uC5D0 \uC9C0\uC815 \uAC00\uB2A5\uD55C \uC778\uC2A4\uD134\uC2A4\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC0DD\uC131\uC790\uC5D0 \uC778\uC2A4\uD134\uC2A4\uB97C \uC0DD\uC131\uD558\uAC70\uB098 HashMap\uC5D0\uC11C \uC9C0\uC815 \uAC00\uB2A5\uD55C \uC720\uD615\uC744 \uC0AC\uC6A9\uD558\uC2ED\uC2DC\uC624.

UNINTERNED_STRINGS = \uC5B8\uB9C8\uC15C\uB7EC\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4 URI \uBC0F \uB85C\uCEEC \uC774\uB984\uC5D0 \uB300\uD574 intern() \uBA54\uC18C\uB4DC\uB97C \uD638\uCD9C\uD574\uC57C \uD569\uB2C8\uB2E4.
