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

WSM_1001_FAILED_ASSERTION=WSM1001 : \u00E9chec de l''obtention de l''assertion de strat\u00E9gie {0}.
WSM_1002_EXPECTED_MANAGEMENT_ASSERTION=WSM1002 : assertion de strat\u00E9gie {0} attendue dans cet espace de noms.
WSM_1003_MANAGEMENT_ASSERTION_MISSING_ID=WSM1003 : l''assertion de strat\u00E9gie {0} doit avoir un attribut d''ID lorsque la gestion est activ\u00E9e.
WSM_1004_EXPECTED_XML_TAG=WSM1004 : balise <{0}> attendue mais <{1}> lue \u00E0 la place.
WSM_1005_EXPECTED_COMMUNICATION_CHILD=WSM1005 : balise CommunicationServerImplementation attendue en tant que noeud enfant de CommunicationServerImplementations.
WSM_1006_CLIENT_MANAGEMENT_ENABLED=WSM1006 : la propri\u00E9t\u00E9 de gestion de l'assertion de strat\u00E9gie ManagedClient est activ\u00E9e. Les clients ne peuvent pas \u00EAtre g\u00E9r\u00E9s et ce param\u00E8tre ne sera pas pris en compte.
WSM_1007_FAILED_MODEL_TRANSLATOR_INSTANTIATION=WSM1007 : impossible de cr\u00E9er une instance ModelTranslator.
WSM_1008_EXPECTED_INTEGER_DISPOSE_DELAY_VALUE=WSM1008 : entier attendu en tant que valeur de l''attribut endpointDisposeDelay, obtention de "{0}" \u00E0 la place.
