# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

contextConfig.applicationMissing=Le fichier web.xml de l''application est absent, utilisation des param\u00e8tres par d\u00e9faut
contextConfig.applicationParse=Erreur d''\u00e9valuation (parse) dans le fichier web.xml de l''application \u00e0 {0}
contextConfig.applicationPosition=S''est produite \u00e0 la ligne {0} colonne {1}
contextConfig.authenticatorConfigured=Configuration d''un authentificateur (authenticator) pour la m\u00e9thode {0}
contextConfig.authenticatorInstantiate=Impossible d''instancier un authentificateur (authenticator) pour la classe {0}
contextConfig.authenticatorMissing=Impossible de configurer un authentificateur (authenticator) pour la m\u00e9thode {0}
contextConfig.authenticatorResources=Impossible de charger la liste de correspondance des authentificateurs (authenticators)
contextConfig.cce=L''objet donn\u00e9e \u00e9v\u00e8nement cycle de vie (Lifecycle event data object) {0} n''est pas un Contexte
contextConfig.defaultPosition=S''est produite \u00e0 la ligne {0} colonne {1}
contextConfig.jspFile.error=Le fichier JSP {0} doit commencer par un ''/''
contextConfig.jspFile.warning=ATTENTION: Le fichier JSP {0} doit commencer par un  ''/'' dans l''API Servlet 2.4
contextConfig.missingRealm=Aucun royaume (realm) n''a \u00e9t\u00e9 configur\u00e9 pour r\u00e9aliser l''authentification
contextConfig.role.auth=Le nom de r\u00f4le de s\u00e9curit\u00e9 {0} est utilis\u00e9 dans un <auth-constraint> sans avoir \u00e9t\u00e9 d\u00e9fini dans <security-role>
contextConfig.role.link=Le nom de r\u00f4le de s\u00e9curit\u00e9 {0} est utilis\u00e9 dans un <role-link> sans avoir \u00e9t\u00e9 d\u00e9fini dans <security-role>
contextConfig.role.runas=Le nom de r\u00f4le de s\u00e9curit\u00e9 {0} est utilis\u00e9 dans un <run-as> sans avoir \u00e9t\u00e9 d\u00e9fini dans <security-role>
contextConfig.start="ContextConfig": Traitement du "START"
contextConfig.stop="ContextConfig": Traitement du "STOP"
contextConfig.unavailable=Cette application est marqu\u00e9e comme non disponible suite aux erreurs pr\u00e9c\u00e9dentes
embedded.noEngines=Aucun moteur (engine) n''a encore \u00e9t\u00e9 d\u00e9fini
engineConfig.cce=L''objet donn\u00e9e \u00e9v\u00e8nement cycle de vie (Lifecycle event data object) {0} n''est pas un moteur (engine)
engineConfig.start="EngineConfig": Traitement du "START"
engineConfig.stop="EngineConfig": Traitement du "STOP"
hostConfig.cce=L''objet donn\u00e9e \u00e9v\u00e8nement cycle de vie (Lifecycle event data object) {0} n''est pas un h\u00f4te
hostConfig.deployDescriptor=D\u00e9ploiement du descripteur de configuration {0}
hostConfig.deployDescriptor.error=Erreur lors du d\u00e9ploiement du descripteur de configuration {0}
hostConfig.deployDir=D\u00e9ploiement du r\u00e9pertoire {0} de l''application web
hostConfig.deployDir.error=Erreur lors du d\u00e9ploiement du r\u00e9pertoire {0} de l''application web
hostConfig.deployWar=D\u00e9ploiement de l''archive {0} de l''application web
hostConfig.deployWar.error=Erreur lors du d\u00e9ploiement de l''archive {0} de l''application web
hostConfig.start="HostConfig": Traitement du "START"
hostConfig.stop="HostConfig": Traitement du "STOP"
hostConfig.undeploy=Repli (undeploy) de l''application web ayant pour chemin de contexte {0}
userConfig.database=Exception lors du chargement de la base de donn\u00e9es utilisateur
userConfig.deploy=D\u00e9ploiement de l''application web pour l''utilisateur {0}
userConfig.deploying=D\u00e9ploiement des applications web utilisateur
userConfig.error=Erreur lors du d\u00e9ploiement de l''application web pour l''utilisateur {0}
userConfig.start="UserConfig": Traitement du "START"
userConfig.stop="UserConfig": Traitement du "STOP"
