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

#
# Message resource file
#



ERR_UNDECLARED_PREFIX = \u672A\u58F0\u660E\u524D\u7F00 "{0}"

ERR_UNEXPECTED_EXTENSION_BINDING_PREFIXES = \u5FC5\u987B\u5728\u6839\u5143\u7D20\u4E2D\u58F0\u660E extensionBindingPrefixes \u5C5E\u6027

ERR_VENDOR_EXTENSION_DISALLOWED_IN_STRICT_MODE = \u4E25\u683C\u6A21\u5F0F\u4E2D\u4E0D\u5141\u8BB8\u6709\u4F9B\u5E94\u5546\u6269\u5C55\u7ED1\u5B9A (jaxb:extensionBindingPrefixes)\u3002\u8BF7\u4F7F\u7528 -extension\u3002

ERR_UNSUPPORTED_EXTENSION = \u4E0D\u652F\u6301\u7ED1\u5B9A\u540D\u79F0\u7A7A\u95F4 "{0}"\u3002\u60A8\u662F\u5426\u6253\u7B97 "{1}"?

ERR_SUPPORTED_EXTENSION_IGNORED = \u7531\u4E8E\u7ED1\u5B9A\u58F0\u660E\u540D\u79F0\u7A7A\u95F4 "{0}" \u4E0D\u662F\u7531 jaxb:extensionBindingPrefixes \u5C5E\u6027\u6307\u5B9A\u7684, \u56E0\u6B64\u5C06\u5FFD\u7565\u8BE5\u540D\u79F0\u7A7A\u95F4\u3002

ERR_RELEVANT_LOCATION = \u4EE5\u4E0B\u4F4D\u7F6E\u4E0E\u4E0A\u4E00\u9519\u8BEF\u6709\u5173


ERR_CLASS_NOT_FOUND = \u627E\u4E0D\u5230\u7C7B\u578B "{0}"\u3002\u5728\u4E0D\u77E5\u9053\u6B64\u7C7B\u578B\u7684\u6B63\u786E\u7EE7\u627F\u5206\u5C42\u7ED3\u6784\u7684\u60C5\u51B5\u4E0B, XJC \u53EF\u80FD\u65E0\u6CD5\u6B63\u786E\u751F\u6210\u67D0\u4E9B\u7B7E\u540D\u3002\u8BF7\u901A\u8FC7 -classpath \u9009\u9879\u4F7F\u6B64\u7C7B\u53EF\u7528\u3002

DUPLICATE_PROPERTY = \u5C5E\u6027 "{0}" \u5DF2\u5B9A\u4E49\u3002\u8BF7\u4F7F\u7528 &lt;jaxb:property> \u89E3\u51B3\u6B64\u51B2\u7A81\u3002

DUPLICATE_ELEMENT = \u5143\u7D20 "{0}" \u663E\u793A\u5728\u591A\u4E2A\u5C5E\u6027\u4E2D\u3002

# Usage not found. Assuming the intention was to use it together with DUPLICATE_ELEMENT but ERR_RELEVANT_LOCATION is used instead.
DUPLICATE_PROPERTY_LOC = (\u4E0E\u4E0A\u4E00\u9519\u8BEF\u76F8\u5173) \u5728\u6B64\u5904\u6307\u5B9A\u4E86\u5176\u4ED6\u5B9A\u4E49\u3002

PROPERTY_CLASS_IS_RESERVED = \u5C5E\u6027\u540D "Class" \u4FDD\u7559\u4F9B java.lang.Object \u4F7F\u7528\u3002

ERR_ILLEGAL_CUSTOMIZATION_TAGNAME = "{0}" \u4E0D\u662F\u6709\u6548\u7684\u5B9A\u5236\u8BBE\u7F6E\u3002

ERR_PLUGIN_NOT_ENABLED = \u4F7F\u7528 "{1}" \u5B9A\u5236\u8BBE\u7F6E\u65F6, \u9700\u8981 "-{0}" \u5F00\u5173\u624D\u80FD\u542F\u7528\u6B64\u63D2\u4EF6\u3002
