#
# Copyright (c) 2005, 2012, 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.
#

localized.error={0}
parsing.wsdlNotDefaultNamespace=\u9ED8\u8BA4\u540D\u79F0\u7A7A\u95F4\u5FC5\u987B\u4E3A \"{0}\"
# Not concatenated with any other string.
parsing.onlyOneOfElementOrTypeRequired=\u90E8\u5206 \"{0}\" \u4E2D\u53EA\u5141\u8BB8\u6709 \"element\" \u6216 \"type\" \u5C5E\u6027\u4E2D\u7684\u5176\u4E2D\u4E00\u4E2A
# Not concatenated with any other string.
parsing.elementOrTypeRequired=\u8B66\u544A: \u5FFD\u7565\u90E8\u5206{0}, \u90E8\u5206 \"{0}\" \u4E2D\u9700\u8981 \"element\" \u6216 \"type\" \u5C5E\u6027
parsing.invalidElement=\u5143\u7D20\u65E0\u6548: \"{0}\" (\u4F4D\u4E8E\u540D\u79F0\u7A7A\u95F4 \"{1}\" \u4E2D)
parsing.invalidAttributeValue=\u5C5E\u6027 \"{0}\" \u7684\u503C \"{1}\" \u65E0\u6548
parsing.invalidExtensionElement=\u6269\u5C55\u5143\u7D20\u65E0\u6548: \"{0}\" (\u4F4D\u4E8E\u540D\u79F0\u7A7A\u95F4 \"{1}\" \u4E2D)
parsing.invalidWsdlElement=WSDL \u5143\u7D20\u65E0\u6548: \"{0}\"
parsing.requiredExtensibilityElement=\u672A\u77E5\u7684\u5FC5\u9700\u53EF\u6269\u5C55\u6027\u5143\u7D20 \"{0}\" (\u4F4D\u4E8E\u540D\u79F0\u7A7A\u95F4 \"{1}\" \u4E2D)
parsing.tooManyElements=\"{1}\" \u5143\u7D20 \"{2}\" \u4E0B\u7684 \"{0}\" \u5143\u7D20\u8FC7\u591A
parsing.invalidOperationStyle=\u64CD\u4F5C \"{0}\" \u7684\u6837\u5F0F\u65E0\u6548
# {0} - "definitions". Not concatenated with any other string.
parsing.onlyOneTypesAllowed="{0}" \u4E2D\u53EA\u5141\u8BB8\u6709\u4E00\u4E2A "types" \u5143\u7D20
# {0} - element local name (e.g. PingType). Wrapped into an Exception. Not concatenated with any other string.
parsing.onlyOneDocumentationAllowed="{0}" \u4E2D\u53EA\u5141\u8BB8\u6709\u4E00\u4E2A "documentation" \u5143\u7D20
parsing.incorrectRootElement=\u5E94\u4E3A\u6839\u5143\u7D20 \"{2}\" (\u4F4D\u4E8E\u540D\u79F0\u7A7A\u95F4 \"{3}\" \u4E2D), \u627E\u5230\u7684\u662F\u5143\u7D20 \"{0}\" (\u4F4D\u4E8E\u540D\u79F0\u7A7A\u95F4 \"{1}\" \u4E2D)
parsing.unknownImportedDocumentType=\u6240\u5BFC\u5165\u6587\u6863\u7684\u7C7B\u578B\u672A\u77E5: {0}
# Not concatenated with any other string.
parsing.unknownNamespacePrefix=\u672A\u58F0\u660E\u540D\u79F0\u7A7A\u95F4\u524D\u7F00: \"{0}\"
parsing.invalidURI=URI \u65E0\u6548: {0}
# {0} - WSDL URL
parsing.ioExceptionWithSystemId=\u65E0\u6CD5\u89E3\u6790\u4F4D\u4E8E \"{0}\" \u4E2D\u7684\u6587\u6863
# {0} - exception message
parsing.ioException=\u89E3\u6790\u5931\u8D25: {0}
# {0} - WSDL URL, Not concatenated with any other string.
parsing.saxExceptionWithSystemId=WSDL \u6587\u4EF6\u65E0\u6548! \u65E0\u6CD5\u89E3\u6790\u4F4D\u4E8E \"{0}\" \u4E2D\u7684\u6587\u6863
# {0} - exception message, Not concatenated with any other string.
parsing.saxException=WSDL \u6587\u4EF6\u65E0\u6548! \u89E3\u6790\u5931\u8D25: {0}
# {0} - exception message, Not concatenated with any other string.
parsing.parserConfigException=WSDL \u6587\u4EF6\u65E0\u6548! \u89E3\u6790\u5931\u8D25: {0}
# {0} - exception message, Not concatenated with any other string.
parsing.factoryConfigException=WSDL \u6587\u4EF6\u65E0\u6548! \u89E3\u6790\u5931\u8D25: {0}

# Wrapped into an Exception. Not concatenated with any other string.
parsing.missingRequiredAttribute=\u7F3A\u5C11\u5143\u7D20 \"{0}\" \u7684\u5FC5\u9700\u5C5E\u6027 \"{1}\"
parsing.invalidTag=\u5E94\u4E3A\u5143\u7D20 \"{1}\", \u627E\u5230\u7684\u662F \"{0}\"
# {4} - element name
parsing.invalidTagNS=\u4F4D\u4E8E{4}\u4E2D\u7684 WSDL \u65E0\u6548: \u5E94\u4E3A\u5143\u7D20 \"{2}\" (\u4F4D\u4E8E\u540D\u79F0\u7A7A\u95F4 \"{3}\" \u4E2D), \u627E\u5230\u7684\u662F\u5143\u7D20 \"{0}\" (\u4F4D\u4E8E\u540D\u79F0\u7A7A\u95F4 \"{1}\" \u4E2D)
parsing.nonWhitespaceTextFound=\u627E\u5230\u610F\u5916\u7684\u975E\u7A7A\u683C\u6587\u672C: \"{0}\"
# Not concatenated with any other string (written on a separate line).
parsing.elementExpected=\u627E\u5230\u610F\u5916\u7684\u975E\u5143\u7D20
#
entity.duplicate=\u5B9E\u4F53\u91CD\u590D: \"{0}\"
# {0} - type of entity, {1} - entity name e.g.: duplicate "message" entity: "PingRequest", Wrapped into an Exception. Not concatenated with any other string.
entity.duplicateWithType=\"{0}\" \u5B9E\u4F53\u91CD\u590D: \"{1}\"

entity.notFoundByID=\u5B9E\u4F53 ID \u65E0\u6548: \"{0}\"
entity.notFoundByQName=\u5728 wsdl \u4E2D\u672A\u627E\u5230{0} \"{1}\": {2}
entity.notFound.portType=wsdl:portType \"{0}\" \u7531 wsdl:binding \"{1}\" \u5F15\u7528, \u4F46\u5728 wsdl \u4E2D\u672A\u627E\u5230\u5B83
entity.notFound.binding=wsdl:binding \"{0}" \u7531 wsdl:port \"{1}\" \u5F15\u7528, \u4F46\u5728 wsdl \u4E2D\u672A\u627E\u5230\u5B83

# Wrapped into an Exception. Not concatenated with any other string.
validation.missingRequiredAttribute=\u7F3A\u5C11\u5143\u7D20 \"{1}\" \u7684\u5FC5\u9700\u5C5E\u6027 \"{0}\"
validation.missingRequiredProperty=\u7F3A\u5C11\u5143\u7D20 \"{1}\" \u7684\u5FC5\u9700\u5C5E\u6027 \"{0}\"
validation.missingRequiredSubEntity=\u7F3A\u5931\u5143\u7D20 \"{1}\" \u7684\u5FC5\u9700\u7684\u5B50\u5B9E\u4F53 \"{0}\"
# Wrapped into an Exception. Not concatenated with any other string.
validation.invalidElement=\u5143\u7D20\u65E0\u6548: \"{0}\"
# Usage not found. TODO Remove
#validation.invalidComplexTypeInElement=invalid element: \"{1}\", has named complexType: \"{0}\"
validation.invalidSimpleTypeInElement=\u5143\u7D20\u65E0\u6548: \"{1}\", \u5177\u6709\u5DF2\u547D\u540D\u7684 simpleType: \"{0}\"
validation.duplicatedElement=\u5143\u7D20\u91CD\u590D: \"{0}\"
validation.duplicatePartName=WSDL \u65E0\u6548, \u4E0D\u5141\u8BB8 wsdl:message \u4E2D\u6709\u91CD\u590D\u90E8\u5206\u3002\nwsdl:message {0}\u5B58\u5728\u91CD\u590D\u7684\u90E8\u5206\u540D\u79F0: \"{1}\"
# Wrapped into an Exception. Not concatenated with any other string.
validation.invalidSubEntity=\u5143\u7D20 \"{1}\" \u7684\u5B50\u5143\u7D20 \"{0}\" \u65E0\u6548
# Wrapped into an Exception. Not concatenated with any other string.
validation.invalidAttribute=\u5143\u7D20 \"{1}\" \u7684\u5C5E\u6027 \"{0}\" \u65E0\u6548
validation.invalidAttributeValue=\u5C5E\u6027 \"{0}\" \u7684\u503C \"{1}\" \u65E0\u6548
# Usage not found. TODO Remove
#validation.invalidRange=invalid range found (min: {0}, max: {1})
validation.exclusiveAttributes=\u4E92\u65A5\u5C5E\u6027: \"{0}\", \"{1}\"
validation.incorrectTargetNamespace=\u76EE\u6807\u540D\u79F0\u7A7A\u95F4\u4E0D\u6B63\u786E (\u5E94\u4E3A: {1}, \u627E\u5230\u7684\u662F: {0})
# Usage not found. TODO Remove
#validation.unsupportedSchemaFeature=unsupported XML Schema feature: \"{0}\"
validation.shouldNotHappen=\u5185\u90E8\u9519\u8BEF ("{0}")
# Usage not found. TODO Remove
#validation.invalidToken=invalid token \"{0}\"
# Usage not found. TODO Remove
#validation.notSimpleType=not a simple type: \"{0}\"
validation.ambiguousName=\u4E0D\u660E\u786E\u7684\u64CD\u4F5C\u540D: \"{0}\"
# Usage not found. TODO Remove
#validation.invalidPrefix=undeclared namespace prefix: \"{0}\"
# {0} - number, {1} - WSDL location e.g.: Use of SOAP Encoding is not supported. SOAP extension element on line 945 in file:/foo/bar.wsdl has use="encoded"
validation.unsupportedUse.encoded="\u4E0D\u652F\u6301\u4F7F\u7528 SOAP \u7F16\u7801\u3002\n{1}\u4E2D\u7684\u7B2C {0} \u884C\u4E0A\u7684 SOAP \u6269\u5C55\u5143\u7D20\u5305\u542B use=\"encoded\" "
# {0}, {2} - element / attribute name, {1} - element name. Not concatenated with any other string.
warning.faultEmptyAction=\u5FFD\u7565 \"{2}\" \u64CD\u4F5C\u7684 \"{0}\" {1}\u5143\u7D20\u4E2D\u7684\u7A7A\u64CD\u4F5C, \u6539\u7528\u9ED8\u8BA4\u503C
# Not concatenated with any other string.
warning.inputOutputEmptyAction=\u5FFD\u7565 \"{1}\" \u64CD\u4F5C\u7684{0}\u5143\u7D20\u4E2D\u7684\u7A7A\u64CD\u4F5C, \u6539\u7528\u9ED8\u8BA4\u503C

#wsi compliant WSDL warnings
warning.wsi.r2001=\u4E0D\u662F WSI-BP \u517C\u5BB9\u7684 WSDL (R2001, R2002)\u3002wsdl:import \u53EA\u80FD\u5BFC\u5165 WSDL \u6587\u6863\u3002\u5B83\u5C1D\u8BD5\u5BFC\u5165\u7684\u662F: \"{0}\"
warning.wsi.r2002=\u4E0D\u662F WSI-BP \u517C\u5BB9\u7684 WSDL (R2002)\u3002wsdl:import \u4E0D\u80FD\u7528\u4E8E\u5BFC\u5165\u5D4C\u5165\u5728 WSDL \u6587\u6863\u4E2D\u7684 XML \u6A21\u5F0F\u3002\u5E94\u4E3A WSDL \u540D\u79F0\u7A7A\u95F4: {0}, \u627E\u5230\u7684\u662F: {1}
warning.wsi.r2003=\u4E0D\u662F WSI-BP \u517C\u5BB9\u7684 WSDL (R2003)\u3002xsd:import \u53EA\u80FD\u5728 xsd:schema \u5143\u7D20\u4E2D\u4F7F\u7528\u3002
warning.wsi.r2004=\u4E0D\u662F WSI-BP \u517C\u5BB9\u7684 WSDL (R2001, R2004)\u3002xsd:import \u4E0D\u80FD\u5BFC\u5165\u5185\u5D4C\u5728 WSDL \u6587\u6863\u4E2D\u7684 XML \u6A21\u5F0F\u5B9A\u4E49\u3002

#Parser
Parsing.ParseFailed = \t\u65E0\u6CD5\u89E3\u6790 WSDL\u3002

Parsing.NotAWSDL=\u65E0\u6CD5\u83B7\u53D6 WSDL \u7EC4\u4EF6, \u53EF\u80FD{0}\u4E0D\u662F\u6709\u6548\u7684 WSDL \u6587\u4EF6\u3002

AbstractReferenceFinderImpl.UnableToParse = \t\u65E0\u6CD5\u89E3\u6790 "{0}": {1}

# Not concatenated with any other string.
Parser.NotABindingFile = \t\u4E0D\u662F\u5916\u90E8\u7ED1\u5B9A\u6587\u4EF6\u3002\u6839\u5143\u7D20\u5FC5\u987B\u4E3A ''{''http://java.sun.com/xml/ns/jaxws''}'' \u7ED1\u5B9A, \u4F46\u5B9E\u9645\u4E3A ''{''{0}''}''{1}


#Internalizer
Internalizer.TwoVersionAttributes = \tjaxws:version \u548C\u7248\u672C\u540C\u65F6\u5B58\u5728
Internalizer.IncorrectVersion = \tJAXWS \u7248\u672C\u5C5E\u6027\u5FC5\u987B\u4E3A "2.0"

Internalizer.VersionNotPresent = \tJAXWS \u7248\u672C\u5C5E\u6027\u5FC5\u987B\u5B58\u5728

internalizer.targetNotAnElement= \t\u76EE\u6807\u8282\u70B9\u4E0D\u662F\u5143\u7D20
internalizer.targetNotFound= \t\u672A\u627E\u5230 wsdlLocation \u7684\u76EE\u6807: {0}

Internalizer.IncorrectSchemaReference= \t"{0}" \u4E0D\u662F\u6B64\u7F16\u8BD1\u7684\u4E00\u90E8\u5206\u3002\u8FD9\u662F\u5426\u5C5E\u4E8E "{1}" \u7684\u9519\u8BEF?

internalizer.XPathEvaluationError = XPath \u9519\u8BEF: {0}
internalizer.XPathEvaluatesToNoTarget = "{0}" \u7684 XPath \u6C42\u503C\u4EA7\u751F\u7A7A\u76EE\u6807\u8282\u70B9
internalizer.XPathEvaulatesToTooManyTargets = "{0}" \u7684 XPath \u6C42\u503C\u751F\u6210\u4E86\u8FC7\u591A\u7684 ({1}) \u76EE\u6807\u8282\u70B9
internalizer.XPathEvaluatesToNonElement = "{0}" \u7684 XPath \u6C42\u503C\u5FC5\u987B\u751F\u6210\u5143\u7D20\u3002
invalid.customization.namespace=\u7531\u4E8E\u5B9A\u5236\u8BBE\u7F6E \"{0}\" \u6CA1\u6709\u540D\u79F0\u7A7A\u95F4, \u56E0\u6B64\u5C06\u5176\u5FFD\u7565\u3002\u5B83\u5FC5\u987B\u5C5E\u4E8E\u5B9A\u5236\u8BBE\u7F6E\u540D\u79F0\u7A7A\u95F4\u3002

# {0} - wsdl document location, {1} - namespace and local name of a element e.g.: Not a WSDL document: http://foo.org/bar?wsdl, it gives "{http://www.w3.org/1999/xhtml}html", retrying with MEX...
invalid.wsdl.with.dooc="\u4E0D\u662F WSDL \u6587\u6863: {0}, \u5B83\u63D0\u4F9B\u7684\u662F \"{1}\", \u6B63\u5728\u4F7F\u7528 MEX \u91CD\u8BD5..."
invalid.wsdl=WSDL {0}\u65E0\u6548, \u5E94\u4E3A{1}, \u5728\u884C {3} \u627E\u5230\u7684\u662F{2}
# Concatenated with: Server returned HTTP response code: {code} for URL: {url} e.g.: Server returned HTTP response code: 500 for URL: http://foo/bar/mex retrying with MEX...
try.with.mex= {0} \n\n\u6B63\u5728\u4F7F\u7528 MEX \u91CD\u8BD5...
file.not.found={0}\u4E0D\u53EF\u8BBF\u95EE
parsing.unableToGetMetadata= {0}\n\n{1}
failed.noservice=failed.noservice=\u5728\u63D0\u4F9B\u7684 WSDL \u4E2D\u627E\u4E0D\u5230 wsdl:service: \n\n{0}\u9700\u8981\u81F3\u5C11\u63D0\u4F9B\u4E00\u4E2A WSDL, \u8BE5 WSDL \u81F3\u5C11\u5177\u6709\u4E00\u4E2A\u670D\u52A1\u5B9A\u4E49\u3002
