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



BGMBuilder.NoGlobalElement = Schema enth\u00E4lt keine globale Elementdeklaration.

UnusedCustomizationChecker.WarnUnusedExpectedContentTypes = Ein xmime:expectedContentTypes-Attribut ist in einem ung\u00FCltigen Element vorhanden

BGMBuilder.MultipleSchemaBindings = Mehrere <schemaBindings> sind f\u00FCr den Ziel-Namespace "{0}" definiert

BGMBuilder.MultipleSchemaBindings.Location = Ein weiteres <schemaBindings> ist hier definiert



ClassSelector.ClassNameIsRequired = Aus dem Schema kann kein Name abgeleitet werden. Ein Namensattribut, das f\u00FCr die <class>-Anpassung angegeben ist.

ClassSelector.IncorrectClassName = Der angegebene Name ''{0}'' ist keine g\u00FCltige Java-ID.

ClassSelector.IncorrectPackageName = Der Packagename ''{1}'', der f\u00FCr dieses Schema verwendet wird, ist kein g\u00FCltiger Packagename.

# {0} - name-identifier-format-enum
ClassSelector.JavadocHeading = <p>Java-Klasse f\u00FCr {0}.\n\n<p>Das folgende Schemafragment gibt den erwarteten Content an, der in dieser Klasse enthalten ist.

ClassSelector.JavadocLineUnknown = unbekannt

ClassSelector.ReservedClassName = Versuch, eine Klasse zu erstellen, die denselben Namen wie das reservierte Wort "{0}" hat.


CollisionInfo.CollisionInfo = Der Feldname "{0}" wird von zwei verschiedenen Teilen eines Schemas verwendet. Siehe: \n{1}\n{2}

CollisionInfo.UnknownFile = unbekannte Datei

# Concatenated with CollisionInfo.CollisionInfo (CollisionInfo.CollisionInfo + CollisionInfo.LineXOfY + CollisionInfo.LineXOfY) e.g.: The field name "FieldName" is used by two different parts of a schema. See: line X of file:Schema.xsd line Y of file:Schema2.xsd
CollisionInfo.LineXOfY = Zeile {0} von {1}


ConversionFinder.CannotBeTypeSafeEnum = Eine Typesafe-Enumerationsanpassung ist f\u00FCr einen einfachen Typ angegeben, der keiner Typesafe-Enumeration zugeordnet werden kann.
ConversionFinder.CannotBeTypeSafeEnum.Location = Die relevante einfache Typdeklaration wird in diesem Verzeichnis angegeben
ConversionFinder.NoEnumNameAvailable = Ein Namensattribut ist erforderlich, um einen anonymen einfachen Typ an eine Typesafe-Enumeration anzupassen
ConversionFinder.NoEnumFacet= Enumerationsklassenanpassung ist f\u00FCr einen Typ angegeben, der kein Enumerations-Facet hat.
ERR_ILLEGAL_EXPECTED_MIME_TYPE = Der erwartete MIME-Typ "{0}" kann nicht geparst werden. {1}.


DatatypeBuilder.DatatypeError = Fehler bei einfachem Typ: {0}






DefaultParticleBinder.UnableToGenerateNameFromModelGroup = Ein Eigenschaftsname kann nicht aus einer Modellgruppe generiert werden. Eine Anpassung ist erforderlich.

# {0} - CollisionInfo.CollisionInfo is injected with parameters field name, location at first schema, location at second schema e.g.: Gets the rest of the content model. You are getting this "catch-all" property because of the following reason: The field name "OverviewURL" is used by two different parts of a schema. See: line 392 of file:/C:/Development/Projects/jUDDI_v3/uddi-ws/src/main/resources/uddi_v3.xsd line 390 of file:/C:/Development/Projects/jUDDI_v3/uddi-ws/src/main/resources/uddi_v3.xsd To get rid of this property, apply a property customization to one of both of the following declarations to change their names: Gets the value of the content property.
DefaultParticleBinder.FallbackJavadoc = Ruft das restliche Contentmodell ab. \n\n<p>\nSie rufen diese "catch-all"-Eigenschaft aus folgendem Grund ab: \n{0}\n<p>\nUm diese Eigenschaft zu entfernen, wenden Sie eine Eigenschaftenanpassung f\u00FCr eine\nder beiden folgenden Deklarationen an, um deren Namen zu \u00E4ndern: \n







FieldBuilder.IncorrectFixedValue = Der in dem festen Attribut "{0}" angegebene Wert ist kein g\u00FCltiger Wert f\u00FCr den Datentyp

FieldBuilder.IncorrectDefaultValue = Der in dem Standardattribut "{0}" angegebene Wert ist kein g\u00FCltiger Wert f\u00FCr den Datentyp

FieldBuilder.ConflictBetweenUserTypeAndActualType.AttUse = "{0}" wird von einer Anpassung angegeben, dieses Attribut hat jedoch einen inkompatiblen Typ "{1}"

FieldBuilder.ConflictBetweenUserTypeAndActualType.AttUse.Source = Die relevante Anpassung wird in diesem\tVerzeichnis angegeben

FieldBuilder.Javadoc.NilProperty = Diese Eigenschaft wird verwendet, um <a href="http://www.w3.org/TR/2001/REC-xmlschema-0-20010502/#Nils">the xsi:nil feature</a> des W3C XML-Schemas zu kontrollieren. \nWenn diese Eigenschaft auf "True" festgelegt wird, ist die Ausgabe &lt;{0} xsi:nil="True" /> ungeachtet der Werte der anderen Eigenschaften.

FieldBuilder.Javadoc.ValueObject = Verwenden Sie get/set f\u00FCr den komplexen Typwert, der mit diesem Element verkn\u00FCpft ist.\n Beim Unmarshalling eines Dokuments, das xsi:type enth\u00E4lt, w\u00FCrde die get-{1}-Methode eine Instanz der abgeleiteten Klassen von ''{''@link {0}''}'' zur\u00FCckgeben. Wenn Sie eine Instanz der abgeleiteten Klassen mit "set" festlegen, w\u00FCrden Sie eine Instanz mit xsi:type beim Marshalling in XML erhalten.


SimpleTypeBuilder.UnnestedJavaTypeCustomization = <javaType>-Anpassung in diesem Kontext muss verschachtelt sein (JAXB-Spezifikation, Abschnitt 6.8.1): \n\t<property>\n\t  <baseType>\n\t    <javaType ...>\n\t  </baseType>\n\t</property>

UnusedCustomizationChecker.UnacknolwedgedCustomization = Compiler konnte diese {0}-Anpassung nicht ber\u00FCcksichtigen. Sie ist dem falschen Ort zugeordnet oder ist mit anderen Bindings inkonsistent.

UnusedCustomizationChecker.UnacknolwedgedCustomization.Relevant = (die obige Anpassung ist dem folgenden Verzeichnis in dem Schema zugeordnet)

ERR_ENUM_MEMBER_NAME_COLLISION = Zwei Enumerations-Member ergeben denselben Konstantennamen {0}

# Not concatenated with any other String (written on a separate line) but printed after ERR_ENUM_MEMBER_NAME_COLLISION, followed by a line with the position of the problem in a particular file
ERR_ENUM_MEMBER_NAME_COLLISION_RELATED = Die andere Enumeration ist in diesem Verzeichnis definiert

WARN_ENUM_MEMBER_SIZE_CAP = Einfacher Typ "{0}" war Enum wegen EnumMemberSizeCap-Grenzwert nicht zugeordnet. Anzahl Facets: {1}, aktueller Grenzwert: {2}. Sie k\u00F6nnen das Anpassungsattribut "typesafeEnumMaxMembers" verwenden, um den Grenzwert zu erweitern.

ERR_CANNOT_GENERATE_ENUM_NAME = Aus dem Enumerationswert "{0}" kann kein Konstantenname generiert werden. Geben Sie einen Konstantennamen mit <jaxb:typesafeEnumMember name="..."/> an.

# Wrapped into an Exception. Not concatenated with any other string.
ERR_MULTIPLE_GLOBAL_BINDINGS = nur eine globalBindings-Anpassung ist in einer gesamten Kompilierung zul\u00E4ssig

# Not concatenated with any other String (written on a separate line) but printed after ERR_MULTIPLE_GLOBAL_BINDINGS, followed by a line with the position of the problem in a particular file, e.g. parsing a schema... \n [ERROR] only one globalBindings customization is allowed in a whole compilation \n line 8 of file:/C:/kohsuke/Sun/JAXB/jaxb-ri/sandbox/issue98/base.xjb \n [ERROR] (related to above) but one is already given at this location \n line 8 of file:/C:/kohsuke/Sun/JAXB/jaxb-ri/sandbox/issue98/sub1.xjb
ERR_MULTIPLE_GLOBAL_BINDINGS_OTHER = in diesem Verzeichnis ist jedoch bereits eine Anpassung angegeben

ERR_REFERENCE_TO_NONEXPORTED_CLASS = {0} befindet sich in einem referenzierten Schema und enth\u00E4lt die entsprechende Java-Klasse nicht, die mit der <jaxb:class ref="..."/>-Anpassung angegeben wird. Deshalb kann sie nicht von au\u00DFen referenziert werden.

# Not concatenated with any other string (written on a separate line) but printed after ERR_REFERENCE_TO_NONEXPORTED_CLASS.
ERR_REFERENCE_TO_NONEXPORTED_CLASS_MAP_FALSE = Das Schema f\u00FCr Namespace "{0}" (das die obige Komponente enth\u00E4lt) ist nur zur Referenz durch diese Anpassung ausgelegt.

# Not concatenated with any other string (written on a separate line) but printed after ERR_REFERENCE_TO_NONEXPORTED_CLASS and ERR_REFERENCE_TO_NONEXPORTED_CLASS_MAP_FALSE.
ERR_REFERENCE_TO_NONEXPORTED_CLASS_REFERER = Die problematische Schemakomponente wird von dieser Komponente referenziert: {0}

WARN_DEFAULT_VALUE_PRIMITIVE_TYPE = Standardwert f\u00FCr primitiven Typ "{0}" kann nicht generiert werden.
