#
# Copyright (c) 1997, 2021 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
#


# Not concatenated with any other string (written on a separate line).
ILLEGAL_ENTRY = entr\u00e9e "{0}" interdite, les entr\u00e9es doivent \u00eatre au format "ClassName" ou "OuterClass.InnerClass", et non"ClassName.class" ou "fully.qualified.ClassName"

# {0} - class name, {1} - resource location e.g. error loading class "Foo" listed in foo/bar/jaxb.index, make sure that entries are accessable on CLASSPATH and of the form "ClassName" or "OuterClass.InnerClass", not "ClassName.class" or "fully.qualified.ClassName"
ERROR_LOADING_CLASS = erreur lors du chargement de la classe "{0}" list\u00e9e dans {1}, assurez-vous que les entr\u00e9es sont accessibles sur CLASSPATH et sont au format "ClassName" ou "OuterClass.InnerClass", et non "ClassName.class" ou "fully.qualified.ClassName"

INVALID_PROPERTY_VALUE = {1} n''est pas une valeur valide pour la propri\u00e9t\u00e9 "{0}"

# Not concatenated with any other string (written on a separate line).
UNSUPPORTED_PROPERTY = la propri\u00e9t\u00e9 ''{0}'' n''est pas prise en charge

#{0} - package name. e.g.: "foo.bar" doesn't contain ObjectFactory.class or jaxb.index
BROKEN_CONTEXTPATH = "{0}" ne contient pas ObjectFactory.class ou jaxb.index

NO_DEFAULT_CONSTRUCTOR_IN_INNER_CLASS = "{0}" est une classe interne et ne peut donc jamais comporter de constructeur sans argument par d\u00e9faut. Ajoutez ''static''.

INVALID_TYPE_IN_MAP = La mappe contient un type incorrect
