You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/08/15 13:40:53 UTC

[tomcat] 03/05: Back-port additions and updates to the French i18n messages

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 67ff0e791c0063f25f6cbad1817ed14ea8ce0f0e
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 14:35:52 2019 +0100

    Back-port additions and updates to the French i18n messages
---
 java/javax/el/LocalStrings_fr.properties           |  52 ++++++
 java/javax/servlet/LocalStrings_fr.properties      |   4 +
 .../catalina/core/LocalStrings_fr.properties       | 193 +++++++++++++++++++--
 .../catalina/deploy/LocalStrings_fr.properties     |  25 +++
 .../ha/authenticator}/LocalStrings_fr.properties   |   6 +-
 .../ha/context}/LocalStrings_fr.properties         |   6 +-
 .../catalina/ha/deploy/LocalStrings_fr.properties  |  52 ++++++
 .../catalina/ha/session/LocalStrings_fr.properties |  90 ++++++++++
 .../catalina/ha/tcp/LocalStrings_fr.properties     |  42 +++++
 .../catalina/loader/LocalStrings_fr.properties     |  54 +++++-
 .../catalina/manager/LocalStrings_fr.properties    | 115 ++++++++++--
 .../manager/host/LocalStrings_fr.properties        |  91 ++++++++++
 .../catalina/mapper/LocalStrings_fr.properties     |  31 ++++
 .../catalina/mbeans/LocalStrings_fr.properties     |   5 +-
 .../catalina/realm/LocalStrings_fr.properties      |  71 +++++++-
 .../catalina/security/LocalStrings_fr.properties   |   8 +-
 .../catalina/session/LocalStrings_fr.properties    |  27 ++-
 .../catalina/startup/LocalStrings_fr.properties    | 119 ++++++++++++-
 .../storeconfig}/LocalStrings_fr.properties        |   6 +-
 .../tribes/group/LocalStrings_fr.properties        |  28 +++
 .../group/interceptors/LocalStrings_fr.properties  |  82 +++++++++
 .../catalina/tribes/io/LocalStrings_fr.properties  |  27 +++
 .../tribes/jmx}/LocalStrings_fr.properties         |  10 +-
 .../tribes/membership/LocalStrings_fr.properties   |  56 ++++++
 .../tribes/tipis/LocalStrings_fr.properties        |  53 ++++++
 .../tribes/transport}/LocalStrings_fr.properties   |   8 +-
 .../transport/bio/LocalStrings_fr.properties       |  40 +++++
 .../transport/nio/LocalStrings_fr.properties       |  57 ++++++
 .../tribes/util}/LocalStrings_fr.properties        |   9 +-
 .../catalina/util/LocalStrings_fr.properties       |  33 +++-
 .../catalina/valves/LocalStrings_fr.properties     | 110 +++++++++---
 java/org/apache/coyote/LocalStrings_fr.properties  |  53 ++++++
 .../apache/coyote/ajp/LocalStrings_fr.properties   |  34 ++++
 .../coyote/http11/LocalStrings_fr.properties       |  35 ++++
 .../http11/filters/LocalStrings_fr.properties      |  27 +++
 .../http11/upgrade/LocalStrings_fr.properties      |  36 ++++
 .../apache/coyote/http2/LocalStrings_fr.properties | 168 ++++++++++++++++++
 .../jasper/resources/LocalStrings_fr.properties    |  11 ++
 .../net => dbcp/dbcp2}/LocalStrings_fr.properties  |  10 +-
 .../apache/tomcat/util/LocalStrings_fr.properties  |  30 ++++
 .../util/{net => buf}/LocalStrings_fr.properties   |   9 +-
 .../util/codec/binary}/LocalStrings_fr.properties  |   8 +-
 .../tomcat/util/compat}/LocalStrings_fr.properties |   6 +-
 .../{net => descriptor}/LocalStrings_fr.properties |   5 +-
 .../descriptor/tld}/LocalStrings_fr.properties     |   5 +-
 .../util/descriptor/web/LocalStrings_fr.properties |  66 +++++++
 .../util/digester}/LocalStrings_fr.properties      |   6 +-
 .../tomcat/util/http/LocalStrings_fr.properties    |  39 +++++
 .../util/http/parser/LocalStrings_fr.properties    |  39 +++++
 .../tomcat/util/net/LocalStrings_fr.properties     | 138 ++++++++++++++-
 .../tomcat/util/scan}/LocalStrings_fr.properties   |  14 +-
 .../util/threads/res/LocalStrings_fr.properties    |   1 +
 webapps/docs/changelog.xml                         |   4 +
 53 files changed, 2136 insertions(+), 118 deletions(-)

diff --git a/java/javax/el/LocalStrings_fr.properties b/java/javax/el/LocalStrings_fr.properties
new file mode 100644
index 0000000..5057d0c
--- /dev/null
+++ b/java/javax/el/LocalStrings_fr.properties
@@ -0,0 +1,52 @@
+# 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.
+
+beanNameELResolver.beanReadOnly=Le nom de bean [{0}] est en lecture seule
+
+elProcessor.defineFunctionInvalidClass=La classe [{0}] n''est pas publique
+elProcessor.defineFunctionInvalidMethod=La méthode [{0}] sur la classe [{1}] n''est pas une méthode statique publique
+elProcessor.defineFunctionInvalidParameterList=La liste de paramètres [{0}] pour la méthode [{1}] de la classe [{2}] n''est pas valide
+elProcessor.defineFunctionInvalidParameterTypeName=Le type [{0}] du paramètre de la méthode [{1}] sur la classe [{2}] n''est pas valide
+elProcessor.defineFunctionNoMethod=Une méthode statique et publique [{0}] n''a pas pu être trouvée sur la classe [{1}]
+elProcessor.defineFunctionNullParams=On ou plusieurs paramètres d'entrée sont null
+
+expressionFactory.cannotCreate=Impossible de créer une ExpressionFactory de type [{0}]
+expressionFactory.cannotFind=Impossible de trouver une ExpressionFactory de type [{0}]
+expressionFactory.readFailed=Impossible de lire [{0}]
+
+importHandler.ambiguousImport=La classe [{0}] n''a pas pu être importée car elle entre en conflit avec [{1}] qui a déjà été importée
+importHandler.ambiguousStaticImport=L''import statique [{0}] ne peut pas être traité parce qu''il est en conflit avec [{1}] qui a déjà été importé
+importHandler.classNotFound=La classe [{0}] n''a pu être importée, vu qu''on ne l''a pas trouvée
+importHandler.invalidClass=La classe [{0}] doit être publique, non abstraite, et ne pas être une interface
+importHandler.invalidClassName=Le nom de la classe à importer [{0}] doit comprendre un paquet
+importHandler.invalidClassNameForStatic=La classe [{0}] spécifiée pour l''importation statique [{1}] n''est pas valide
+importHandler.invalidStaticName=Le nom de la méthode statique ou champ à importer [{0}] doit inclure une calsse
+importHandler.staticNotFound=L''importation statique [{0}] n''a pas été trouvée dans la classe [{1}] pour [{2}]
+
+lambdaExpression.tooFewArgs=Seuls [{0}] arguments ont été fournis pour une expression lambda qui en demande au moins [{1}]
+
+objectNotAssignable=Impossible d''ajouter un objet du type [{0}] à un tableau d''objets de type [{1}]
+propertyNotFound=La propriété [{1}] n''a pas été trouvée sur le type [{0}]
+propertyNotReadable=La propriété [{1}] n''est pas lisible sur le type [{0}]
+propertyNotWritable=La propriété [{1}] ne peut pas être écrite pour le type [{0}]
+propertyReadError=Erreur lors de la lecture de [{1}] sur le type [{0}]
+propertyWriteError=Erreur d''écriture [{1}] sur le type [{0}]
+
+staticFieldELResolver.methodNotFound=Aucune méthode publique et statique nommée [{0}] n''a été trouvée dans la classe [{1}]
+staticFieldELResolver.notFound=Un champ statique et public nommé [{0}] n''a pas pu être trouvé sur la classe [{1}]
+staticFieldELResolver.notWriteable=L''écriture dans les champs statiques (champ [{0}] dans la classe [{1}] dans le cas présent) est interdite
+
+util.method.ambiguous=Impossible de trouver une méthode non ambiguë: {0}.{1}({2})
+util.method.notfound=Méthode non trouvée: {0}.{1}({2})
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/javax/servlet/LocalStrings_fr.properties
index 7363303..603b694 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/javax/servlet/LocalStrings_fr.properties
@@ -15,5 +15,9 @@
 
 err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
 
+httpConstraintElement.invalidRolesDeny=Des rôles ne peuvent pas être spécifiés lorsque DENY est utilisé
+
+httpMethodConstraintElement.invalidMethod=Méthode HTTP invalide
+
 value.false=false
 value.true=true
diff --git a/java/org/apache/catalina/core/LocalStrings_fr.properties b/java/org/apache/catalina/core/LocalStrings_fr.properties
index 0405e55..9939ec7 100644
--- a/java/org/apache/catalina/core/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/core/LocalStrings_fr.properties
@@ -13,15 +13,83 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-applicationContext.attributeEvent=Exception lancée par l''écouteur (listener) d''évènement attributs
+applicationContext.addFilter.ise=Des filtres ne peuvent plus être ajoutés au contexte [{0}] car il a déjà été initialisé
+applicationContext.addJspFile.iae=Le fichier JSP [{0}] est invalide
+applicationContext.addListener.iae.cnfe=Incapable de créer une instance de type [{0}]
+applicationContext.addListener.iae.init=Impossible d''ajouter une instance du type [{0}] comme écouteur
+applicationContext.addListener.iae.sclNotAllowed=Il est impossible d'ajouter un ServletContextListener après qu'un ait été appelé
+applicationContext.addListener.iae.wrongType=Le type spécifié [{0}] n''est pas un type attendu de "listener"
+applicationContext.addListener.ise=Des Listener ne peuvent plus être ajoutés au contexte [{0}] car il a déjà été initialisé
+applicationContext.addRole.ise=Vous ne pouvez pas ajouter de rôles au contexte [{0}], parce qu''il a déjà été initialisé
+applicationContext.addServlet.ise=Des Servlets ne peuvent plus être ajoutés au contexte [{0}] car il a déjà été initialisé
+applicationContext.attributeEvent=Exception lancée par l'écouteur (listener) d'évènement attributs
+applicationContext.illegalDispatchPath=La tentative d''obtenir un dispatcher de requêtes avec le chemin illégal [{0}] a été refusée car il contenait une tentative de traversée de répertoire encodée
+applicationContext.invalidFilterName=Impossible d''ajouter la définition du filtre à cause d''un nom de filtre invalide [{0}]
+applicationContext.invalidServletName=Impossible d''ajouter la définition de la servlet à cause de son nom invalide [{0}]
+applicationContext.lookup.error=Impossible de trouver la ressource [{0}] dans le contexte [{1}]
+applicationContext.mapping.error=Erreur lors du mapping
 applicationContext.requestDispatcher.iae=Le chemin [{0}] ne commence pas par le caractère "/"
+applicationContext.resourcePaths.iae=Le chemin [{0}] ne démarre pas avec un caractère "/"
+applicationContext.role.iae=Un rôle individuel à déclarer pour le contexte [{0}] ne peut être null ou une chaîne vide
+applicationContext.roles.iae=Le tableaux de rôles à déclarer pour le contexte [{0}] ne peut pas être null
 applicationContext.setAttribute.namenull=le nom ne peut être nul
+applicationContext.setInitParam.ise=les paramètres d''initialisation ne peuvent pas être configurés sur le contexte [{0}] car il a déjà été initialisé
+applicationContext.setRequestEncoding.ise=L''encodage de la requête ne peut pas être configuré sur le contexte [{0}] car il a déjà été initialisé
+applicationContext.setResponseEncoding.ise=L''encodage de la réponse ne peut pas être configuré sur le contexte [{0}] car il a déjà été initialisé
+applicationContext.setSessionTimeout.ise=Le timeout de session ne peut pas être changé pour le contexte [{0}] car il a déjà été initialisé
+applicationContext.setSessionTracking.iae.invalid=Le mode de suivi de la session [{0}] demandé par le contexte [{1}] n''est pas supporté par ce contexte
+applicationContext.setSessionTracking.iae.ssl=Les modes de suivi de session pour le contexte [{0}]  incluent SSL et au moins un autre mode.  SSL ne peut pas être configuré avec d''autres modes.
+applicationContext.setSessionTracking.ise=Les modes de suivi de session ("session tracking") du contexte [{0}] ne peuvent être définis pendant que le contexte est en cours d''exécution
 
 applicationDispatcher.allocateException=Exception d''allocation pour la servlet [{0}]
 applicationDispatcher.deallocateException=Exception de désallocation pour la servlet [{0}]
-applicationDispatcher.forward.ise=Impossible d''utiliser faire-suivre (forward) après que la réponse ait été envoyée
+applicationDispatcher.forward.ise=Impossible d'utiliser faire-suivre (forward) après que la réponse ait été envoyée
 applicationDispatcher.isUnavailable=La servlet [{0}] est actuellement indisponible
 applicationDispatcher.serviceException="Servlet.service()" pour la servlet [{0}] a lancé une exception
+applicationDispatcher.specViolation.request=La ServletRequest d'origine ou la ServletRequest d'origine enrobée n'a pas été passée au RequestDispatcher en violation de SRV.8.2 et SRV.14.2.5.1
+applicationDispatcher.specViolation.response=La ServletResponse originale ou la ServletResponse enveloppée (wrapped) n'a pas été transmise au RequestDispatcher, en violation de SRV.8.2 et SRV.14.2.5.1
+
+applicationFilterConfig.jmxRegisterFail=L''enregistrement JMX a échoué pour le filtre de type [{0}] et nommé [{0}]
+applicationFilterConfig.jmxUnregister=Le désenregistrement JMX est terminé pour le filtre de type [{0}] nommé [{1}]
+applicationFilterConfig.jmxUnregisterFail=Le désenregistrement JMX du filtre de type [{0}] nommé [{1}] a échoué
+applicationFilterConfig.preDestroy=Echec lors de l''appel de preDestroy pour le filtre nommé [{0}] de type [{1}]
+applicationFilterConfig.release=Impossible de détruite le filtre nommé [{0}] de type [{1}]
+
+applicationFilterRegistration.nullInitParam=Impossible de fixer le paramètre d''initialisation du filtre, à cause d''un nom ou d''une valeur nulle, nom [{0}], valeur [{1}]
+applicationFilterRegistration.nullInitParams=Impossible de fixer les paramètres d''initialisation du filtre, à cause d''un nom ou d''une valeur nulle, nom [{0}], valeur [{1}]
+
+applicationHttpRequest.fragmentInDispatchPath=Le fragment dans le chemin de dispatch [{0}] a été enlevé
+
+applicationPushBuilder.methodInvalid=La méthode HTTP pour une requête push doit être à la fois être sans danger et pouvoir être mise en cache, mais [{0}] ne correspond pas
+applicationPushBuilder.methodNotToken=Les méthodes HTTP doivent être des "token", mais [{0}] contient un caractère invalide dans un token.
+
+applicationServletRegistration.setServletSecurity.iae=Contrainte nulle spécifiée pour le Servlet [{0}] déployé dans le contexte avec le nom [{1}]
+applicationServletRegistration.setServletSecurity.ise=Les contraintes de sécurité ne peuvent pas être ajoutées au Servlet [{0}] déployé dans le contexte [{1}] car le contexte a déjà été initialisé
+
+applicationSessionCookieConfig.ise=La propriété [{0}] ne peut pas être ajoutée au SessionCookieConfig pour le contexte [{1}] car le contexte a déjà été initialisé
+
+aprListener.aprDestroy=Echec de l'arrêt de la librairie Apache Tomcat Native basée sur APR
+aprListener.aprInit=La librairie Apache Tomcat Native basée sur APR qui permet des performances optimales dans les environnements de production n''a pas été trouvée sur le java.library.path: [{0}]
+aprListener.aprInitDebug=La librairie Apache Tomcat Native basée sur APR n''a pas été trouvée en utilisant les noms [{0}] dans le java.library.path [{1}], les erreurs retournées sont [{2}]
+aprListener.aprInitError=La librairie Apache Tomcat Native basée sur APR n''a pas pu être chargée, l''erreur retournée est [{0}]
+aprListener.config=Configuration de APR/OpenSSL: useAprConnector [{0}], useOpenSSL [{1}]
+aprListener.currentFIPSMode=Mode FIPS actuel: [{0}]
+aprListener.enterAlreadyInFIPSMode=AprLifecycleListener est configuré pour forcer le mode FIPS mais la librairie est déjà en mode FIPS [{0}]
+aprListener.flags=Fonctionnalités d''APR: IPv6 [{0}], sendfile [{1}], accept filters [{2}], random [{3}]
+aprListener.initializeFIPSFailed=Echec d'entrée en mode FIPS
+aprListener.initializeFIPSSuccess=Entrée avec succès en mode FIPS
+aprListener.initializedOpenSSL=OpenSSL a été initialisé avec succès [{0}]
+aprListener.initializingFIPS=Initialisation du mode FIPS...
+aprListener.requireNotInFIPSMode=AprLifecycleListener est configuré pour demander que la librarie soit déjà en mode FIPS et elle ne l'était pas
+aprListener.skipFIPSInitialization=Déjà en mode FIPS, l'initialisation de FIPS n'est pas effectuée
+aprListener.sslInit=Impossible d'initialiser le SSLEngine
+aprListener.tcnInvalid=Une version incompatible [{0}] de la librairie Apache Tomcat Native basée sur APR est installée, alors que Tomcat nécessite la version [{1}]
+aprListener.tcnValid=Chargement de la librairie Apache Tomcat Native [{0}] en utilisant APR version [{1}]
+aprListener.tcnVersion=Un version ancienne [{0}] de la bibliothèque Apache Tomcat Native basée sur APR est installée, alors que Tomcat recommande au minimum la version [{1}]
+aprListener.tooLateForFIPSMode=Ne peut pas passer en mode FIPS, SSL a déjà été initialisé
+aprListener.tooLateForSSLEngine=Impossible d'appeler setSSEEngine, SSL a déjà été initialisé
+aprListener.tooLateForSSLRandomSeed=setSSLRandomSeed impossible: SSL a déjà été initialisé
+aprListener.wrongFIPSMode=Valuer inattendue de l''option FIPSMode de AprLifecycleListener: [{0}]
 
 asyncContextImpl.asyncDispachError=Erreur lors d'un dispatch asynchrone
 asyncContextImpl.dispatchingStarted=Une opération de dispatch asynchrone a déjà été appelée, plusieurs dispatch au cours d'un même cycle asynchrone n'est pas autorisé
@@ -34,74 +102,161 @@ asyncContextImpl.request.ise=Il est illégal d'appeler getRequest() après que c
 asyncContextImpl.requestEnded=La requête associée avec l'AsyncContext est déjà terminée
 asyncContextImpl.response.ise=Il est illégal d'appeler getResponse() après que complete() ou n'importe laquelle des méthodes de dispatch a été appelée
 
+containerBase.backgroundProcess.cluster=Une exception s''est produite lors du traitement d''arrière plan du cluster [{0}]
+containerBase.backgroundProcess.realm=Exception lors du traitement d''arrière plan du realm [{0}]
+containerBase.backgroundProcess.unexpectedThreadDeath=Mort inattendue du fil d''exécution d''arrière-plan ("background thread") [{0}]
+containerBase.backgroundProcess.valve=Exception lors du traitement d''arrière plan de la valve [{0}]
+containerBase.nullName=Le nom d'un conteneur ne peut être null
+containerBase.threadedStartFailed=Un conteneur fils a échoué pendant son démarrage
+containerBase.threadedStopFailed=Erreur lors de l'arrêt d'un conteneur fils
+
+defaultInstanceManager.invalidInjection=Annotation invalide pour l'injection d'une resource méthode
+defaultInstanceManager.restrictedClass=L''accès à la classe à accès restreint [{0}] est interdit, une application web doit être marquée comme étant privilégiée pour pouvoir la charger
+defaultInstanceManager.restrictedContainerServlet=L''accès à la classe [{0}] est interdit. C''est une classe restreinte qui (implémente l''interface ContainerServlet). Une application web doit être privilégiée pour pouvoir la charger.
+defaultInstanceManager.restrictedFiltersResource=Le fichier de propriétés contenant la liste des filtres restreints n''a pas été trouvée [{0}]
+defaultInstanceManager.restrictedListenersResource=Le fichier de propriétés concernant les écouteurs à accès restreint n''a pas été trouvé [{0}]
+defaultInstanceManager.restrictedServletsResource=Le fichier de propriétés contenant la liste des Servlets restreints n''a pas été trouvée [{0}]
+defaultInstanceManager.restrictedWrongValue=Mauvaise valeur dans le fichier de propriété [{0}] contenant la liste des classes à accès restreint pour le nom de classe [{1}], valeur attendue: [restricted], valeur donnée: [{2}]
+
 filterChain.filter=L'exécution du filtre (Filter) a lancé une exception
 filterChain.servlet=L'exécution de la servlet a lancé une exception
 
+jreLeakListener.authPolicyFail=Erreur en essayant de prévenir une fuite de mémoire dans la classe javax.security.auth.Policy
+jreLeakListener.classToInitializeFail=Echec du chargement de la classe [{0}] pendant le démarrage de Tomcat, effectué pour empêcher de possibles fuites de mémoire
+jreLeakListener.gcDaemonFail=Echec de la création du thread GC Daemon durant le démarrage de Tomcat pour éviter une fuite de mémoire, cela est normal sur toutes les JVMs non Oracle
+jreLeakListener.jarUrlConnCacheFail=Échec de la désactivation du cache par défaut des URL de connexion de JAR
+jreLeakListener.ldapPoolManagerFail=Echec de la création de la classe com.sun.jndi.ldap.LdapPoolManager durant le démarrage de Tomcat pour éviter une fuite de mémoire, cela est normal sur toutes les JVMs non Oracle
+jreLeakListener.xmlParseFail=Erreur en essayant de prévenir une fuite de mémoire lors du traitement de contenu XML
+
+naming.addEnvEntry=Ajout de l''entrée d''environnement [{0}]
+naming.addResourceEnvRef=Ajout de la référence de ressource d''environnement [{0}]
 naming.bindFailed=Echec lors du liage à l''objet: [{0}]
 naming.invalidEnvEntryType=L''entrée environnement [{0}] a un type invalide
 naming.invalidEnvEntryValue=L''entrée environnement [{0}] a une valeur invalide
+naming.jmxRegistrationFailed=Echec d''enregistrement dans JMX: [{0}]
 naming.namingContextCreationFailed=La création du contexte de nommage (naming context) a échoué : [{0}]
 naming.unbindFailed=Echec lors du déliage à l''objet : [{0}]
+naming.wsdlFailed=fichier wsdl [{0}] non trouvé
+
+noPluggabilityServletContext.notAllowed=La section 4.4 de la spécification Servlet 3.0 ne permet pas à cette méthode d'être appelée à partir d'un ServletContextListener qui n'a pas été déclaré dans web.xml, un web-fragment.xml, ou annoté avec @WebListener
+
+pushBuilder.noPath=Il est interdit d'appeler push() avant de fixer un chemin
 
 standardContext.applicationListener=Erreur lors de la configuration de la classe d''écoute de l''application (application listener) [{0}]
-standardContext.applicationSkipped=L''installation des écouteurs (listeners) de l''application a été sautée suite aux erreurs précédentes
+standardContext.applicationSkipped=L'installation des écouteurs (listeners) de l'application a été sautée suite aux erreurs précédentes
+standardContext.backgroundProcess.instanceManager=Exception lors du traitement d''arrière plan du gestionnaire d''instances [{0}]
+standardContext.backgroundProcess.loader=Exception lors du traitement d''arrière plan du loader [{0}]
+standardContext.backgroundProcess.manager=Exception lors du traitement d''arrière plan du gestionnaire de sessions [{0}]
+standardContext.backgroundProcess.resources=Exception lors du traitement d''arrière plan des ressources [{0}]
+standardContext.cluster.noManager=Aucun gestionnaire de session trouvé, vérification de l''utilisation éventuelle du gestionnaire de session fourni par le cluster; cluster configuré: [{0}], application distribuable: [{1}]
+standardContext.configurationFail=Un ou plusieurs composants ont marqué ce contexte comme n'étant pas correctement configuré
+standardContext.cookieProcessor.null=Il est interdit de mettre un CookieProcessor null pour un contexte
+standardContext.duplicateListener=L''écouteur [{0}] est déjà configuré pour le contexte, la double déclaration a été ignorée
 standardContext.errorPage.error=La position de la page d''erreur (ErrorPage) [{0}] doit commencer par un ''/''
-standardContext.errorPage.required=La page d''erreur (ErrorPage) ne peut être nulle
-standardContext.errorPage.warning=ATTENTION: La position de la page d''erreur (ErrorPage) [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
-standardContext.filterMap.either=L''association de filtre (filter mapping) doit indiquer soit une <url-pattern> soit une <servlet-name>
+standardContext.errorPage.required=La page d'erreur (ErrorPage) ne peut être nulle
+standardContext.errorPage.warning=WARNING: La position de la page d''erreur (ErrorPage) [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
+standardContext.extensionValidationError=Erreur lors de la validation des extensions requises par l'application
+standardContext.filterFail=Un ou plusieurs filtres n'ont pas pu démarrer, les détails sont dans le fichier log du conteneur
+standardContext.filterMap.either=L'association de filtre (filter mapping) doit indiquer soit une <url-pattern> soit une <servlet-name>
 standardContext.filterMap.name=L''association de filtre (filter mapping) indique un nom de filtre inconnu [{0}]
 standardContext.filterMap.pattern=<url-pattern> [{0}] invalide dans l''association de filtre (filter mapping)
 standardContext.filterStart=Exception au démarrage du filtre [{0}]
-standardContext.isUnavailable=Cette application n''est pas disponible actuellement
+standardContext.invalidWrapperClass=[{0}] n''est pas une sous-classe de StandardWrapper
+standardContext.isUnavailable=Cette application n'est pas disponible actuellement
+standardContext.listenerFail=Un ou plusieurs écouteurs n'ont pas pu démarrer, les détails sont dans le fichier de log du conteneur
 standardContext.listenerStart=Exception lors de l''envoi de l''évènement contexte initialisé (context initialized) à l''instance de classe d''écoute (listener) [{0}]
 standardContext.listenerStop=Exception lors de l''envoi de l''évènement contexte détruit (context destroyed) à l''instance de classe d''écoute [{0}]
-standardContext.loginConfig.errorPage=La forme de page d''erreur (form error page) [{0}] doit commencer par un ''/''
-standardContext.loginConfig.errorWarning=ATTENTION: La forme de page d''erreur (form error page) [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
-standardContext.loginConfig.loginPage=La forme de page de connexion (form login page) [{0}] doit commencer par un ''/''
-standardContext.loginConfig.loginWarning=ATTENTION: La forme de page de connexion (form login page) [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
+standardContext.loadOnStartup.loadException=Le Servlet [{1}] dans l''application web [{0}] a retourné une exception lors de son chargement
+standardContext.loginConfig.errorPage=La page d''erreur de Form [{0}] doit commencer par un ''/''
+standardContext.loginConfig.errorWarning=La page d''erreur de Form [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
+standardContext.loginConfig.loginPage=La page de connexion du formulaire [{0}] doit commencer par un ''/''
+standardContext.loginConfig.loginWarning=WARNING: La page de connexion du formulaire [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
 standardContext.loginConfig.required="LoginConfig" ne peut être nul
+standardContext.manager=Configuré un gestionnaire de la classe [{0}]
+standardContext.managerFail=Echec lors du démarrage du gestionnaire de sessions
+standardContext.namingResource.destroy.fail=Echec de destruction des anciennes ressources JNDI
+standardContext.namingResource.init.fail=Echec d'initialisation des nouvelles ressources JNDI
+standardContext.noResourceJar=Les JARs de ressources ne sont pas supportés, le JAR trouvé à [{0}] ne sera pas utilisé pour fournir des ressources statiques pour le contexte nommé [{1}]
 standardContext.notStarted=Le contexte [{0}] n''a pas encore été démarré
 standardContext.notWrapper=Le fils du contexte (child of context) doit être un enrobeur (wrapper)
 standardContext.parameter.duplicate=Paramètre d''initialisation de contexte dupliqué [{0}]
 standardContext.parameter.required=Le nom de paramètre ainsi que la valeur du paramètre sont requis
+standardContext.pathInvalid=Un chemin de contexte doit être soit une chaîne vide soit commencer par un ''/'' et ne pas finir par un ''/'', le chemin [{0}] ne répond pas à ces conditions et a été changé en [{1}]
+standardContext.postconstruct.duplicate=La méthode post construct est définie en double dans la classe [{0}]
+standardContext.postconstruct.required=A la fois le nom complet qualifié et le nom de la méthode sont requis
+standardContext.predestroy.duplicate=Définition dupliquée de la méthode de destruction "pre" pour la classe [{0}]
+standardContext.predestroy.required=Les noms qualifiés de la classe et de la méthode sont tous deux requis
 standardContext.reloadingCompleted=Le rechargement de ce contexte est terminé
 standardContext.reloadingStarted=Le rechargement du contexte [{0}] a démarré
 standardContext.requestListener.requestInit=Une exception lors de l''envoi de requête a initié un évènement cycle de vie (lifecycle event) pour l''instance de classe à l''écoute (listener) [{0}]
+standardContext.resourcesInit=Erreur d'initialisation des ressources statiques
 standardContext.resourcesStart=Erreur lors du démarrage des ressources statiques
+standardContext.resourcesStop=Erreur lors de l'arrêt des ressources statiques
+standardContext.sciFail=Erreur lors du traitement de ServletContainerInitializer
+standardContext.securityConstraint.mixHttpMethod=Il n'est pas permis de combiner <http-method> et <http-method-omission> dans la même collection de resources web
 standardContext.securityConstraint.pattern=<url-pattern> [{0}] invalide d''après les contraintes de sécurité (security constraint)
+standardContext.servletFail=Un ou plusieurs Servlets n'ont pas pu démarrer, les détails sont dans le fichier log du conteneur
 standardContext.servletMap.name=L''association de servlet (servlet mapping) indique un nom de servlet inconnu [{0}]
 standardContext.servletMap.pattern=<url-pattern> [{0}] invalide dans l''association de servlet (servlet mapping)
 standardContext.startFailed=Erreur de démarrage du contexte [{0}] suite aux erreurs précédentes
 standardContext.startingContext=Exception lors du démarrage du contexte [{0}]
+standardContext.stop.asyncWaitInterrupted=Une interruption a été reçue en attendant unloadDelay millisecondes pour permettre aux requêtes asynchrones en cours de se terminer, l'arrêt du contexte va se poursuivre sans délai supplémentaire
 standardContext.stoppingContext=Exception à l''arrêt du Context [{0}]
-standardContext.urlPattern.patternWarning=ATTENTION: Le modèle (pattern) URL [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
+standardContext.threadBindingListenerError=Une erreur s''est produite dans l''écouteur de l’''association de thread configuré pour le contexte [{0}]
+standardContext.unknownCookieEncoding=L''encodage inconnu [{0}] a été spécifié pour setCookieEncoding(String) dont le défaut UTF-8 sera utilisé à la place
+standardContext.urlPattern.patternWarning=WARNING: Le modèle (pattern) d''URL [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
+standardContext.webappClassLoader.missingProperty=Impossible de fixer la propriété [{0}] du chargeur de classes de l''application web à [{1}] car cette propriété n''existe pas
+standardContext.workCreateException=Impossible de déterminer le chemin absolu pour le répertoire de travail à partir du répertoire [{0}] et de CATALINA_HOME [{1}] pour le contexte [{2}]
+standardContext.workCreateFail=Impossible de créer le répertoire de travail [{0}] pour le contexte [{1}]
+standardContext.workPath=Impossible d''obtenir le chemin de travail pour le contexte [{0}]
 
+standardContextValve.acknowledgeException=Impossible de confirmer la requête avec une réponse 100 (continuer)
+
+standardEngine.jvmRouteFail=Impossible de fixer la jvmRoute de l'Engine à partir d'une propriété système
 standardEngine.noHost=Aucune hôte (host) ne correspond au nom de serveur [{0}]
-standardEngine.notHost=Le fils d''un moteur (child of an Engine) doit être un hôte
+standardEngine.notHost=Le fils d'un moteur (child of an Engine) doit être un hôte
 standardEngine.notParent=Un moteur (engine) ne peut avoir de conteneur parent (container)
 
+standardHost.clientAbort=Le client distant a abandonné la requête, IOException: [{0}]
 standardHost.invalidErrorReportValveClass=Impossible de charger la classe valve de rapport d''erreur: [{0}]
-standardHost.noContext=Aucun contexte n''est configuré pour traiter cette requête
-standardHost.notContext=Le fils d''un hôte (child of a Host) doit être un contexte
-standardHost.nullName=Le nom d''hôte est requis
+standardHost.noContext=Aucun contexte n'est configuré pour traiter cette requête
+standardHost.notContext=Le fils d'un hôte (child of a Host) doit être un contexte
+standardHost.nullName=Le nom d'hôte est requis
+standardHost.problematicAppBase=Utiliser une chaîne vide pour l''appBase de l''hôte [{0}] la fera correspondre à CATALINA_BASE, ce qui causera des problèmes
+
+standardHostValue.customStatusFailed=La page d''erreur personnalisée [{0}] n''a pu être redirigée correctement
 
+standardServer.accept.timeout=Le socket qui écoute en attendant la commande d''arrêt a rencontré un délai d''attente dépassé inattendu [{0}] millisecondes après l''appel à accept()
+standardServer.shutdownViaPort=Une commande d'arrêt valide a été reçue sur le port d'arrêt, arrêt de l'instance du serveur
+standardServer.storeConfig.notAvailable=Aucune implémentation de StoreConfig n''a été enregistrée comme un MBean nommé [{0}], et aucune configuration n''a donc été enregistrée. Un MBean adéquat est normalement référencé via le StoreConfigLifecycleListener
+
+standardService.engine.startFailed=Impossible de démarrer l'Engine associé
+standardService.engine.stopFailed=Echec de l'arrêt du moteur associé
+standardService.mapperListener.startFailed=Impossible de démarrer le MapperListener associé
+standardService.mapperListener.stopFailed=Impossible d'arrêter le MapperListener associé
 standardService.start.name=Démarrage du service [{0}]
 standardService.stop.name=Arrêt du service [{0}]
 
-standardWrapper.allocate=Erreur d''allocation à une instance de servlet
+standardWrapper.allocate=Erreur d'allocation à une instance de servlet
 standardWrapper.allocateException=Exception lors de l''allocation pour la servlet [{0}]
 standardWrapper.deallocateException=Exception à la désallocation pour la servlet [{0}]
 standardWrapper.destroyException="Servlet.destroy()" de la servlet [{0}] a généré une exception
+standardWrapper.destroyInstance=InstanceManager.destroy() pour le Servlet [{0}] a renvoyé une exception
 standardWrapper.initException="Servlet.init()" pour la servlet [{0}] a généré une exception
 standardWrapper.instantiate=Erreur à l''instantiation de la classe servlet [{0}]
 standardWrapper.isUnavailable=La servlet [{0}] est actuellement indisponible
-standardWrapper.notChild=L''enrobeur de conteneur (wrapper container) peut ne pas avoir de conteneurs fils
+standardWrapper.notChild=L'enrobeur de conteneur (wrapper container) ne peut pas avoir de conteneurs fils
 standardWrapper.notClass=Aucune classe servlet n''a été spécifiée pour la servlet [{0}]
-standardWrapper.notContext=Le conteneur parent d''un enrobeur (wrapper) doit être un contexte
+standardWrapper.notContext=Le conteneur parent d'un enrobeur (wrapper) doit être un contexte
 standardWrapper.notFound=Servlet [{0}] n''est pas disponible.
 standardWrapper.notServlet=La classe [{0}] n''est pas une servlet
 standardWrapper.releaseFilters=Exception des filtres de sortie (release filters) pour la servlet [{0}]
 standardWrapper.serviceException="Servlet.service()" pour la servlet [{0}] a généré une exception
+standardWrapper.serviceExceptionRoot=Servlet.service() du Servlet [{0}] dans le contexte au chemin [{1}] a retourné une exception [{2}] avec la cause
 standardWrapper.unavailable=La servlet [{0}] est marqué comme indisponible
 standardWrapper.unloadException=La servlet [{0}] a généré une exception "unload()"
 standardWrapper.unloading=Impossible d''allouer la servlet [{0}] car elle a été déchargée
+standardWrapper.waiting=Attente de la désallocation de [{0}] instance(s) du Servlet [{1}]
+
+threadLocalLeakPreventionListener.containerEvent.error=Exception lors du traitement de l''évènement du conteneur [{0}]
+threadLocalLeakPreventionListener.lifecycleEvent.error=Exception lors du traitement de l''évènement [{0}] du cycle de vie du composant
diff --git a/java/org/apache/catalina/deploy/LocalStrings_fr.properties b/java/org/apache/catalina/deploy/LocalStrings_fr.properties
new file mode 100644
index 0000000..5824a19
--- /dev/null
+++ b/java/org/apache/catalina/deploy/LocalStrings_fr.properties
@@ -0,0 +1,25 @@
+# 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.
+
+namingResources.cleanupCloseFailed=Impossible d''invoquer la méthode [{0}] de la ressource [{1}] dans le conteneur [{2}] donc aucun nettoyage n''a été effectué pour cette ressource
+namingResources.cleanupCloseSecurity=Incapacité de récupérer la méthode [{0}] pour la resource [{1}] dans le conteneur [{2}]. Aucun nettoyage effectué pour cette resource.
+namingResources.cleanupNoClose=La ressource [{0}] du container [{1}] n''a pas de [{2}] méthode donc aucun nettoyage de la ressource n''a pu être effectué
+namingResources.cleanupNoContext=Impossible de récupérer le contexte de nommage JNDI dans le conteneur [{0}] donc aucun nettoyage de ce conteneur n''a pu être effectué
+namingResources.cleanupNoResource=Impossible de récupérer la ressource JNDI [{1}] dans le conteneur [{2}] donc aucun nettoyage de la ressource n'a pu être effectué
+namingResources.ejbLookupLink=La référence à un EJB [{0}] spéficie à la fois un ejb-link and et un lookup-name
+namingResources.envEntryLookupValue=L''entrée d''environnement [{0}] spécifie à la fois un lookup-name et une valeur
+namingResources.mbeanCreateFail=Échec de création d''un MBean pour la resource nommée ("naming resource") [{0}]
+namingResources.mbeanDestroyFail=Echec de destruction du mbean de la ressource [{0}]
+namingResources.resourceTypeFail=La ressource JNDI nommée [{0}] est de type [{1}] mais ce type est inconsistant avec le(s) type(s) de cible d''injection configuré(s) pour cette ressource
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/catalina/ha/authenticator/LocalStrings_fr.properties
similarity index 82%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/catalina/ha/authenticator/LocalStrings_fr.properties
index 7363303..900300e 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/ha/authenticator/LocalStrings_fr.properties
@@ -13,7 +13,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
-
-value.false=false
-value.true=true
+clusterSingleSignOn.clusterLoad.fail=Exception ClusterSingleSignOn pendant clusterLoad
+clusterSingleSignOn.nocluster=Il n'y a pas de cluster pour ClusterSingleSignOn
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/catalina/ha/context/LocalStrings_fr.properties
similarity index 77%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/catalina/ha/context/LocalStrings_fr.properties
index 7363303..c1b0afa 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/ha/context/LocalStrings_fr.properties
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
+applicationContext.setAttribute.namenull=Le nom ne peut être null
 
-value.false=false
-value.true=true
+replicatedContext.startFailed=Echec de démarrage du ReplicatedContext: [{0}]
+replicatedContext.startUnable=Impossible de démarrer le ReplicatedContext: [{0}]
diff --git a/java/org/apache/catalina/ha/deploy/LocalStrings_fr.properties b/java/org/apache/catalina/ha/deploy/LocalStrings_fr.properties
new file mode 100644
index 0000000..efdded8
--- /dev/null
+++ b/java/org/apache/catalina/ha/deploy/LocalStrings_fr.properties
@@ -0,0 +1,52 @@
+# 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.
+
+farmWarDeployer.alreadyDeployed=l''application web [{0}] est déjà déployée
+farmWarDeployer.deleteFail=Pas réussi à supprimer [{0}]
+farmWarDeployer.deployEnd=Le déploiement de [{0}] est terminé
+farmWarDeployer.fileCopyFail=Impossible de copier depuis [{0}] vers [{1}]
+farmWarDeployer.hostOnly=Le FarmWarDeployer ne fonctionne qu'en tant que sous-élément d'un "host cluster" !
+farmWarDeployer.hostParentEngine=FarmWarDeployer peut fonctionner uniquement si le parent de [{0}] est un moteur
+farmWarDeployer.mbeanNameFail=Impossible de construire le nom d''objet du mbean pour le moteur [{0}] et l''hôte [{1}]
+farmWarDeployer.modInstall=Installation en cours pour la webapp [{0}] depuis [{1}]
+farmWarDeployer.modInstallFail=Incapable d'installer le fichier WAR
+farmWarDeployer.msgIoe=Incapable de lire le message de déploiement dans la ferme
+farmWarDeployer.msgRxDeploy=Recu le chemin de déploiement [{0}] du cluster, war [{1}]
+farmWarDeployer.msgRxUndeploy=Réception d''un retrait de cluster ("cluster undeployment") du chemin [{0}]
+farmWarDeployer.removeFailLocal=Impossible d''enlever localement de [{0}]
+farmWarDeployer.removeFailRemote=La suppression locale de [{0}] a échouée, l''autre gestionnaire (manager) a l''app en fonction !
+farmWarDeployer.removeLocal=Retrait de l''application web [{0}]
+farmWarDeployer.removeLocalFail=Impossible d'enlever le fichier WAR
+farmWarDeployer.removeStart=Retrait de l''application web [{0}] dans tout le cluster
+farmWarDeployer.removeTxMsg=Envoi à tout le cluster du déploiement à partir de [{0}]
+farmWarDeployer.renameFail=Echec du renommage de [{0}] en [{1}]
+farmWarDeployer.sendEnd=Envoi du chemin de déploiement du war au cluster, war [{1}] terminé
+farmWarDeployer.sendFragment=Envoi du chemin du fragment du war du cluster [{0}], war [{1}] vers [{2}]
+farmWarDeployer.sendStart=Envoi du déploiement war en cluster chemin [{0}], war [{1}] démarré
+farmWarDeployer.servicingDeploy=L''application [{0}] est en cours de maintenance, mettez de nouveau à jour la date du fichier war [{1}]
+farmWarDeployer.servicingUndeploy=L''application [{0}] est en maintenance et ne peut être retirée du node backup du cluster
+farmWarDeployer.started=Le FarmWarDeployer du cluster a démarré
+farmWarDeployer.stopped=Le FarmWarDeployer du cluster a été arrêté
+farmWarDeployer.undeployEnd=Retrait de [{0}] terminé
+farmWarDeployer.undeployLocal=Le contexte local [{0}] est retiré
+farmWarDeployer.watchDir=Le déploiement du cluster surveille [{0}] pour des modifications
+
+fileNewFail=Impossible de créer [{0}]
+
+warWatcher.cantListWatchDir=Incapacité de lister les fichiers dans le répertoire WatchDir [{0}]: vérifiez qu''il s''agit d''un répertoire et qu''il a la permission de lecture.
+warWatcher.checkWarResult=WarInfo.check() a retourné [{0}] pour [{1}]
+warWatcher.checkingWar=Vérification du fichier WAR [{0}]
+warWatcher.checkingWars=Vérification des WARs dans [{0}]
+warWatcher.listedFileDoesNotExist=[{0}] a été détecté dans [{1}] mais n''existe pas, les permissions du répertoire pourraient être incorrectes
diff --git a/java/org/apache/catalina/ha/session/LocalStrings_fr.properties b/java/org/apache/catalina/ha/session/LocalStrings_fr.properties
new file mode 100644
index 0000000..0f1d545
--- /dev/null
+++ b/java/org/apache/catalina/ha/session/LocalStrings_fr.properties
@@ -0,0 +1,90 @@
+# 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.
+
+backupManager.noCluster=pas de groupe (cluster) associé à ce contexte: [{0}]
+backupManager.startFailed=Impossible de démarrer le BackupManager: [{0}]
+backupManager.startUnable=Impossible de démarrer le BackupManager: [{0}]
+backupManager.stopped=Le gestionnaire de session [{0}] s''est arrêté
+
+clusterSessionListener.noManager=Le gestionnaire de session du contexte n''existe pas: [{0}]
+
+deltaManager.createMessage.access=Gestionnaire de session [{0}]: création du message de session [{1}] d''accès
+deltaManager.createMessage.accessChangePrimary=Gestionnaire de session [{0}] : création du message de session [{1}] accès pour changer le primaire
+deltaManager.createMessage.allSessionData=Gestionnaire de session [{0}] envoyé toutes les données de session
+deltaManager.createMessage.allSessionTransfered=Gestionnaire de session [{0}] envoi du message signalant le transfert de toutes les données de session
+deltaManager.createMessage.delta=Gestionnaire de session [{0}]: création du message [{0}] de requête delta
+deltaManager.createMessage.expire=Gestionnaire de session [{0}]: création du message [{1}] d''expiration de session
+deltaManager.createMessage.unableCreateDeltaRequest=Impossible de sérialiser la requête delta pour l''id de session [{0}]
+deltaManager.createSession.newSession=Crée une DeltaSession avec Id [{0}] Nombre total=[{1}]
+deltaManager.dropMessage=Gestionnaire de session [{0}] : Abandon du message [{1}] dans GET_ALL_SESSIONS début de la phase de sync [{2}] date du message [{3}]
+deltaManager.expireSessions=Gestionnaire de session [{0}] expiration des sessions lors de l''arrêt
+deltaManager.foundMasterMember=Le membre maître [{1}] a été trouvé pour la réplication du contexte [{0}]
+deltaManager.loading.cnfe=Exception ClassNotFoundException lors du chargement des sessions persistantes : [{0}]
+deltaManager.loading.existing.session=la session existante [{0}] est surchargée
+deltaManager.loading.ioe=IOException lors du chargement des session persistées: [{0}]
+deltaManager.managerLoad=Exception lors du chargement des sessions depuis le stockage persistant
+deltaManager.noCluster=Démarrage, pas de cluster associé à ce contexte [{0}]
+deltaManager.noContextManager=Gestionnaire de session [{0}]: En réponse à l''envoi d''un message demandant toutes les données des sessions à [{0}], un message indiquant l''absence d''un gestionnaire de sessions correspondant à été reçu au bout de [{2}] ms
+deltaManager.noMasterMember=Démarrage sans autre membre pour le contexte [{0}] du domaine [{1}]
+deltaManager.noMembers=Gestionnaire de session [{0}] : pas de transfert d''état, il n''y a pas de membres actifs dans le cluster
+deltaManager.noSessionState=Gestionnaire de session [{0}] : pas de statut de session envoyé à [{1}] reçu, délai d''attente maximum de [{2}] ms.
+deltaManager.receiveMessage.accessed=Gestionnaire de session [{0}] : reçu un accès à la session [{1}]
+deltaManager.receiveMessage.allSessionDataAfter=Gestionnaire de session [{0}] : l''état de la session a été désérialisé
+deltaManager.receiveMessage.allSessionDataBegin=Gestionnaire de session [{0}] : : reçu les données d''état des sessions
+deltaManager.receiveMessage.createNewSession=Gestionnaire de session [{0}] : reçu la création de la session [{1}]
+deltaManager.receiveMessage.delta=Gestionnaire de session [{0}] : reçu le delta de session [{1}]
+deltaManager.receiveMessage.delta.unknown=Gestionnaire de session [{0}] : reçu un delta pour une session inconnue [{1}]
+deltaManager.receiveMessage.error=Gestionnaire de session [{0}] : impossible de recevoir un message par le canal TCP
+deltaManager.receiveMessage.eventType=Gestionnaire de session [{0}] : recu un SessionMessage de type=[{1}] de [{2}]
+deltaManager.receiveMessage.expired=Gestionnaire de session [{0}] : reçu l''expiration de la session [{1}]
+deltaManager.receiveMessage.noContextManager=Gestionnaire de session [{0}] a reçu d''un nœud [{1}:{2}] sans gestionnaire de contexte
+deltaManager.receiveMessage.transfercomplete=Gestionnaire de session [{0}] reçu du nœud [{1}:{2}] l''état de la session a été transféré
+deltaManager.receiveMessage.unloadingAfter=Gestionnaire de session [{0}] : fin du déchargement des sessions
+deltaManager.receiveMessage.unloadingBegin=Gestionnaire de session [{0}] : début du déchargement des sessions
+deltaManager.registerCluster=Enregistrement du gestionnaire [{0}] dans l''élément du cluster [{1}] avec le nom [{2}]
+deltaManager.sendMessage.newSession=Gestionnaire de session [{0}] : envoi de la nouvelle session [{1}]
+deltaManager.sessionReceived=Gestionnaire de session [{0}]: l''état de session envoyé à [{0}] a été reçu en [{2}] ms
+deltaManager.startClustering=Démarrage du gestionnaire du cluster à [{0}]
+deltaManager.stopped=Le gestionnaire de session [{0}] s''arrête
+deltaManager.unableSerializeSessionID=Impossible de sérialiser le sessionID [{0}]
+deltaManager.unloading.ioe=IOException lors de la sauvegarde des sessions persistantes: [{0}]
+deltaManager.waitForSessionState=Gestionnaire de session [{0}], demande de l''état de session depuis [{1}], cette opération fera un timeout si l''état de la session n''a pas été reçu en moins de [{2}] secondes
+
+deltaRequest.invalidAttributeInfoType=Info d''attribut invalide = [{0}]
+deltaRequest.removeUnable=N'a pas pu enlever l'élément:
+deltaRequest.showPrincipal=Le principal [{0}] est associé à la session [{1}]
+deltaRequest.ssid.mismatch=L'id de session ne correspond pas, la requête delta ne sera pas exécutée
+deltaRequest.ssid.null=L'id de session est null pour setSessionId
+deltaRequest.wrongPrincipalClass=Un ClusterManager n''accepte que des GenericPrincipal. Votre realm a utilisé la classe de "principal" [{0}]
+
+deltaSession.notifying=Notification du cluster de l''expiration de la session: primaire=[{0}] sessionId [{1}]
+deltaSession.readSession=readObject() charge la session [{0}]
+deltaSession.writeSession=writeObject() stocke la session [{0}]
+
+jvmRoute.cannotFindSession=Impossible de trouver la session [{0}]
+jvmRoute.changeSession=Changé la session de [{0}] vers [{1}]
+jvmRoute.failover=Un changement de serveur a été détecté avec une jvmRoute différente, route originale: [{0}] nouvelle: [{1}] pour l''id de session [{2}]
+jvmRoute.foundManager=Trouvé le gestionnaire de session du cluster [{0}] à [{1}]
+jvmRoute.missingJvmRouteAttribute=Pas d'attribut jvmRoute configuré sur le moteur
+jvmRoute.noCluster=La JvmRouterBinderValve est configurée mais le cluster n'est pas activé, la bascule vers un autre serveur fonctionnera tout de même à condition qu'un PersistentManager soit utilisé
+jvmRoute.notFoundManager=Gestionnaire de cluster ("Cluster Manager") non trouvé à [{0}]
+jvmRoute.set.orignalsessionid=Fixe l''id de session d''origine dans l''attribut de requête [{0}] valeur: [{1}]
+jvmRoute.turnoverInfo=Temps de vérification de turnover [{0}] ms
+jvmRoute.valve.started=La JvmRouteBinderValve a démarrée
+jvmRoute.valve.stopped=JvmRouteBinderValve s'est arrêté
+
+standardSession.notSerializable=Impossible de sérialiser l''attribut de session [{0}] pour la session [{1}]
+standardSession.removeAttribute.ise=removeAttribute : session déjà invalidée
+standardSession.setAttribute.namenull=setAttribute: le paramètre nom ne peut pas être null
diff --git a/java/org/apache/catalina/ha/tcp/LocalStrings_fr.properties b/java/org/apache/catalina/ha/tcp/LocalStrings_fr.properties
new file mode 100644
index 0000000..4603e17
--- /dev/null
+++ b/java/org/apache/catalina/ha/tcp/LocalStrings_fr.properties
@@ -0,0 +1,42 @@
+# 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.
+
+ReplicationValve.crossContext.add=Ajout du conteneur de réplication de la session multi contexte au ThreadLocal de replicationValve
+ReplicationValve.crossContext.registerSession=enregistrement de la session multi contexte id=[{0}] du contexte [{1}]
+ReplicationValve.crossContext.remove=Retrait du conteneur de réplication de la session multi contexte au ThreadLocal de replicationValve
+ReplicationValve.crossContext.sendDelta=Envoi du delta de la session multi contexte du contexte [{0}]
+ReplicationValve.filter.failure=Incapacité de compiler le filtre=[{0}]
+ReplicationValve.filter.loading=Chargement du filtre de requête [{0}]
+ReplicationValve.invoke.uri=Invocation de la requête de réplication sur [{0}]
+ReplicationValve.nocluster=Aucun cluster de configuré pour cette requête
+ReplicationValve.resetDeltaRequest=Le cluster se suffit à lui-même: réinitialisation du delta de la requête de session [{0}]
+ReplicationValve.send.failure=Impossible d'effectuer la requête de réplication
+ReplicationValve.send.invalid.failure=Incapable d'envoyer le message invalide de la session [id={0}] sur le cluster
+ReplicationValve.session.found=Le Contexte [{0}] a touvé la session [{1}] mais ce n''est pas une ClusterSession.
+ReplicationValve.session.indicator=Contexte [{0}] : la primarité de la session [{1}] dans l''attribut de requête [{2}] est [{3}].
+ReplicationValve.session.invalid=Contexte [{0}]: la session demandée [{1}] est invalide, non répliquée, ou enlevée sur ce nœud
+ReplicationValve.stats=Temps de requête moyen= [{0}] ms pour le Cluster le temps ajouté est de=[{1}] ms pour [{2}] requêtes [{3}] requêtes d''envoi [{4}] requêtes multi contextes et [{5}] requêtes fitrées (Total requêtes=[{6}] ms total requêtes du cluster=[{7}] ms)
+
+simpleTcpCluster.clustermanager.cloneFailed=Impossible de cloner le gestionnaire du cluster, le org.apache.catalina.ha.session.DeltaManager par défaut sera utilisé
+simpleTcpCluster.clustermanager.notImplement=Le gestionnaire ("Manager") [{0}] n''implémente pas ClusterManager. Son ajout au cluster a été abandonné.
+simpleTcpCluster.member.addFailed=Impossible de se connecter au système de réplication
+simpleTcpCluster.member.added=Membre de réplication ajouté : [{0}]
+simpleTcpCluster.member.disappeared=Le membre recu a disparu: [{0}]
+simpleTcpCluster.member.removeFailed=Impossible d'enlever un nœud du cluster du système de réplication
+simpleTcpCluster.sendFailed=Impossible d'envoyer un message à travers l'expéditeur du cluster
+simpleTcpCluster.start=Le cluster va démarrer
+simpleTcpCluster.startUnable=Impossible de démarre le cluster
+simpleTcpCluster.stopUnable=Incapable d'arrêter le cluster
+simpleTcpCluster.unableSend.localMember=Impossible d''envoyer un message au membre local [{0}]
diff --git a/java/org/apache/catalina/loader/LocalStrings_fr.properties b/java/org/apache/catalina/loader/LocalStrings_fr.properties
index eb3f75b..7cba29f 100644
--- a/java/org/apache/catalina/loader/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/loader/LocalStrings_fr.properties
@@ -13,9 +13,59 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+webappClassLoader.addExportsRmi=Quand Java 9 est utilisé, il faut utiliser "--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED" sur la ligne de commande de la JVM pour activer la détection de fuites de mémoire des cibles RMI; sinon cet avertissement peut être supprimé en désactivant cette détection
+webappClassLoader.addExportsThreadLocal=Quand Java 9 est utilisé, il faut utiliser "--add-opens=java.base/java.lang=ALL-UNNAMED" sur la ligne de commande de la JVM pour activer la détection de fuites de mémoire des ThreadLocal; sinon cet avertissement peut être supprimé en désactivant cette détection
+webappClassLoader.addPermisionNoCanonicalFile=Impossible d’obtenir le chemin de fichier canonique pour l''URL [{0}]
+webappClassLoader.addPermisionNoProtocol=Le protocole [{0}] dans l''URL [{1}] n''est pas supporté donc aucune permission de lecture n''a été assignée pour les ressources situées à cette URL
+webappClassLoader.addTransformer=Ajout d''un transformateur de fichier de class [{0}] pour l''application web [{1}]
+webappClassLoader.addTransformer.duplicate=Ajout en double ignoré du transformateur de fichiers de classe [{0}] à l''application web [{1}]
+webappClassLoader.addTransformer.illegalArgument=L''application web [{0}] a essayé d''ajouter un transformateur de fichiers de classe null
+webappClassLoader.checkThreadLocalsForLeaks=L''application web [{0}] a crée un ThreadLocal avec une clé de type [{1}] (valeur [{2}]) et une valeur de type [{3}] (valeur [{4}]) mais ne l''a pas supprimé lorsqu''elle a été arrêtée, les threads seront graduellement renouvelés pour éviter une probable fuite de mémoire
+webappClassLoader.checkThreadLocalsForLeaks.badKey=Impossible de déterminer une représentation sous forme de chaîne de caractères d''une clé du type [{0}]
+webappClassLoader.checkThreadLocalsForLeaks.badValue=Impossible de déterminer la représentation sous forme de chaîne de caractère de la valeur du type [{0}]
+webappClassLoader.checkThreadLocalsForLeaks.unknown=Inconnu
+webappClassLoader.checkThreadLocalsForLeaksFail=Echec de vérfication des références ThreadLocal pour l''application web [{0}]
+webappClassLoader.checkThreadLocalsForLeaksNone=L''application web [{0}] a crée un ThreadLocal avec une clé de type [{1}] (valeur [{2}]) et une valeur de type [{3}] (valeur [{4}]) mais comme les clés n''ont que des références faibles dans la structure des ThreadLocal cela ne causera pas de fuite de mémoire
+webappClassLoader.checkThreadLocalsForLeaksNull=L''application web [{0}] a crée un ThreadLocal avec une clé de type [{1}] (valeur [{2}]), ce ThreadLocal a correctement été fixé à null et la valeur sera enlevée par la GC
+webappClassLoader.checkThreadsHttpClient=Trouvé une thread utilisé par HttpClient pour maintenir les connections actives, corrigé en associant le thread avec le chargeur de classe parent
+webappClassLoader.clearJdbc=L''application web [{0}] a enregistré un pilote JDBC [{1}], mais ne l''a pas désenregistré avant l''arrêt de l''application.  Pour éviter une fuite de mémoire, le pilote JDBC a été désenregistré de force.
+webappClassLoader.clearObjectStreamClassCachesFail=Impossible d''effacer les références faibles de ObjectStreamClass$Caches pour l''application web [{0}]
+webappClassLoader.clearReferencesResourceBundlesCount=[{0}] références à un bundle de ressources (ResourceBundle) ont été retirées du cache de l''application web [{1}].
+webappClassLoader.clearReferencesResourceBundlesFail=Echec du nettoyage des références de ResourceBundle pour l''application web [{0}]
+webappClassLoader.clearRmi=Trouvé une cible RMI avec une classe squelette de classe [{0}] et une valeur [{1}], celle ci a été enlevée de force pour prévenir ue fuite de mémoir
+webappClassLoader.clearRmiFail=Impossible d''effacer le chargeur de classes de contexte référencé depuis sun.rmi.transport.Target pour l''application web [{0}]
+webappClassLoader.clearRmiInfo=Impossible de trouver la classe sun.rmi.transport.Target pour nettoyer le chargeur de classes du contexte pour l''application web [{0}], c''est normal pour les JVMs non Oracle
+webappClassLoader.getThreadGroupError=Impossible d''obtenir le parent pour le ThreadGroup [{0}], il ne sera pas possible de vérifier tous les threads pour des fuites de mémoire
+webappClassLoader.illegalJarPath=Une entrée invalide du JAR a été détectée avec le nom [{0}]
+webappClassLoader.jarsAdded=Un ou plusieurs JARs ont été ajoutés à l''application web [{0}]
+webappClassLoader.jarsModified=Un ou plusieurs JARs ont été modifiés dans l''application web [{0}]
+webappClassLoader.jarsRemoved=Un ou plusieurs JARs ont été enlevés de l''application web [{0}]
+webappClassLoader.javaseClassLoaderNull=L'attribut j2seClassLoader ne doit pas être null
+webappClassLoader.jdbcRemoveFailed=Le désenregistrement du pilote JDBC a échoué pour l''application web [{0}]
+webappClassLoader.loadedByThisOrChildFail=Impossible de vérifier complètement les entrées d''une instance de [{0}] pour des fuites de mémoire potentielles dans le contexte [{1}]
+webappClassLoader.readError=Erreur lors de la lecture de la resource : impossible de charger [{0}].
+webappClassLoader.removeTransformer=Enlevé le transformateur de fichiers de classe [{0}] de l''application web [{1}]
+webappClassLoader.resourceModified=La ressource [{0}] a été modifiée, la date de dernière modification était [{1}] et est désormais [{2}]
+webappClassLoader.stackTrace=L''application web [{0}] semble avoir démarré un thread nommé [{1}] mais ne l''a pas arrêté, ce qui va probablement créer une fuite de mémoire; la trace du thread est: {2}
+webappClassLoader.stackTraceRequestThread=Une requête de l''application web [{0}] est toujours en cours, ce qui causera certainement une fuite de mémoire, vous pouvez contrôler le temps alloué en utilisant l''attribut unloadDelay de l''implémentation standard de Context; trace du fil d’exécution de la requête: [{2}]
+webappClassLoader.stopThreadFail=Impossible de terminer le thread nommé [{0}] pour l''application [{1}]
+webappClassLoader.stopTimerThreadFail=Echec de l''arrêt du TimerThread nommé [{0}] pour l''application web [{1}]
+webappClassLoader.stopped=Impossible de charger [{0}], ce chargeur de classes a déjà été arrêté
+webappClassLoader.superCloseFail=Echec lors de l'appel de close() dans la superclasse
+webappClassLoader.transformError=Erreur d''instrumentation: impossible de transformer la classe [{0}] parce que son format est illégal
+webappClassLoader.validationErrorJarPath=Incapable de valider l''entrée de JAR de nom [{0}]
+webappClassLoader.warnTimerThread=L''application [{0}] semble avoir démarré un TimerThread nommé [{1}] en utilisant java.util.Timer mais ne l''a pas stoppé, le timer ainsi que le thread associé ont été arrêtés pour éviter une fuite de mémoire
+webappClassLoader.wrongVersion=(impossible de charger la classe [{0}])
+
+webappClassLoaderParallel.registrationFailed=L'enregistrement de org.apache.catalina.loader.ParallelWebappClassLoader comme pouvant charger des classes en parallèle a échoué
+
 webappLoader.classDeploy=Déploiement des fichiers classes [{0}] vers [{1}]
-webappLoader.deploy=Déploiement des classes des réceptacles (class repositories) vers le dossier de travail (work directory) [{0}]
+webappLoader.copyFailure=Echec lors de la copie des ressources
+webappLoader.deploy=Déploiement des classes des réceptacles (class repositories) vers le répertoire de travail [{0}]
 webappLoader.jarDeploy=Déploiement du JAR [{0}] vers [{1}]
-webappLoader.reloadable=Impossible de mettre la propriété de rechargement (reloadable property) à [{0}]
+webappLoader.mkdirFailure=Impossible de créer le répertoire de destination pour copier les ressources
+webappLoader.readFailure=Impossible de lire la ressource [{0}]
+webappLoader.reloadable=Impossible de mettre la propriété rechargeable à [{0}]
+webappLoader.setContext.ise=Il est interdit de définir le Context lorsque le chargeur de classes a déjà été démarré
 webappLoader.starting=Démarrage de ce chargeur (loader)
 webappLoader.stopping=Arrêt de ce chargeur (loader)
diff --git a/java/org/apache/catalina/manager/LocalStrings_fr.properties b/java/org/apache/catalina/manager/LocalStrings_fr.properties
index 02933fd..a164d9d 100644
--- a/java/org/apache/catalina/manager/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/manager/LocalStrings_fr.properties
@@ -15,7 +15,7 @@
 
 htmlManagerServlet.appsAvailable=Fonctionnelle
 htmlManagerServlet.appsExpire=Expirer les sessions
-htmlManagerServlet.appsName=Nom d''affichage
+htmlManagerServlet.appsName=Nom d'affichage
 htmlManagerServlet.appsPath=Chemin
 htmlManagerServlet.appsReload=Recharger
 htmlManagerServlet.appsSessions=Sessions
@@ -24,6 +24,30 @@ htmlManagerServlet.appsStop=Arrêter
 htmlManagerServlet.appsTasks=Commandes
 htmlManagerServlet.appsTitle=Applications
 htmlManagerServlet.appsUndeploy=Retirer
+htmlManagerServlet.appsVersion=Version
+htmlManagerServlet.configReloadButton=Relire
+htmlManagerServlet.configSslHostName=Nom d'hôte TLS (optionnel)
+htmlManagerServlet.configSslReloadTitle=Relisant les fichiers de configuration TLS
+htmlManagerServlet.configTitle=Configuration
+htmlManagerServlet.connectorStateAliveSocketCount=Nombre de sockets connectés:
+htmlManagerServlet.connectorStateBytesRecieved=Octets reçus:
+htmlManagerServlet.connectorStateBytesSent=Octets envoyés:
+htmlManagerServlet.connectorStateErrorCount=Nombre d'erreurs:
+htmlManagerServlet.connectorStateHint=P: Traitement et préparation de la requête S: Service F: Fin R: Prêt K: Connecté
+htmlManagerServlet.connectorStateMaxProcessingTime=Temps de traitement maximal:
+htmlManagerServlet.connectorStateMaxThreads=Nombre de threads maximum:
+htmlManagerServlet.connectorStateProcessingTime=Temps de traitement:
+htmlManagerServlet.connectorStateRequestCount=Nombre de requêtes:
+htmlManagerServlet.connectorStateTableTitleBRecv=Octets Reçus
+htmlManagerServlet.connectorStateTableTitleBSent=Octets Envoyés
+htmlManagerServlet.connectorStateTableTitleClientAct=Client (Réel)
+htmlManagerServlet.connectorStateTableTitleClientForw=Client (Forwardé)
+htmlManagerServlet.connectorStateTableTitleRequest=Requête
+htmlManagerServlet.connectorStateTableTitleStage=Etape
+htmlManagerServlet.connectorStateTableTitleTime=Temps
+htmlManagerServlet.connectorStateTableTitleVHost=Hôte virtuel (VHost)
+htmlManagerServlet.connectorStateThreadBusy=Nombre de threads utilisés:
+htmlManagerServlet.connectorStateThreadCount=Nombre de threads actuel:
 htmlManagerServlet.deployButton=Deployer
 htmlManagerServlet.deployConfig=URL du fichier XML de configuration:
 htmlManagerServlet.deployPath=Chemin de context (requis):
@@ -35,58 +59,119 @@ htmlManagerServlet.deployUploadFile=Choisir le fichier WAR à téléverser
 htmlManagerServlet.deployUploadInServerXml=ECHEC - Fichier WAR [{0}] ne peut être téléversé lorsque le contexte est défini dans server.xml
 htmlManagerServlet.deployUploadNoFile=ECHEC - Téléversement a échoué, aucun fichier
 htmlManagerServlet.deployUploadNotWar=ECHEC - Fichier à téléverser, [{0}], doit être un .war
-htmlManagerServlet.deployUploadWarExists=ECHEC - Fichier War [{0}] déjê existant sur le serveur
+htmlManagerServlet.deployUploadWarExists=ECHEC - Fichier War [{0}] déjà existant sur le serveur
 htmlManagerServlet.deployWar=URL vers WAR ou répertoire:
+htmlManagerServlet.diagnosticsLeak=Vérifiez si une application web a causé une fuite de mémoire lors de son arrêt, rechargement ou déchargement
+htmlManagerServlet.diagnosticsLeakButton=Trouver des fuites
+htmlManagerServlet.diagnosticsLeakWarning=Le diagnostic doit démarrer une collecte complète de la mémoire, utilisez le avec précaution dans un environnement de production
+htmlManagerServlet.diagnosticsSsl=Diagnostics de configuration TLS du connecteur
+htmlManagerServlet.diagnosticsSslConnectorCertsButton=Certificats
+htmlManagerServlet.diagnosticsSslConnectorCertsText=Entrez la liste des hôtes virtuels TLS et la chaîne de certificats pour chacun.
+htmlManagerServlet.diagnosticsSslConnectorCipherButton=Chiffres
+htmlManagerServlet.diagnosticsSslConnectorCipherText=Lister les hôtes virtuels TLS configurés et les chiffres utilisés par chacun
+htmlManagerServlet.diagnosticsSslConnectorTrustedCertsButton=Certificats de confiance
+htmlManagerServlet.diagnosticsSslConnectorTrustedCertsText=Lister les hôtes virtuels TLS configurés et les certificats de confiance utilisés par chacun
+htmlManagerServlet.diagnosticsTitle=Diagnostics
 htmlManagerServlet.expire.explain=inactives depuis &ge;
 htmlManagerServlet.expire.unit=minutes
+htmlManagerServlet.findleaksList=Les applications suivantes ont été arrêtées (redémarrées, retirées), mais certaines de leurs classes sont toujours présentes en mémoire, cela pourrait donc causer une fuite de mémoire (utiliser un profileur pour le confirmer):
+htmlManagerServlet.findleaksNone=Aucune application n'a apparemment causé de fuite de mémoire en l'arrêtant, en la rechargeant ou en la retirant
 htmlManagerServlet.helpHtmlManager=Aide HTML Gestionnaire
 htmlManagerServlet.helpHtmlManagerFile=../docs/html-manager-howto.html
 htmlManagerServlet.helpManager=Aide Gestionnaire
 htmlManagerServlet.helpManagerFile=../docs/manager-howto.html
+htmlManagerServlet.jvmFreeMemory=Mémoire disponible:
+htmlManagerServlet.jvmMaxMemory=Mémoire maximale:
+htmlManagerServlet.jvmTableTitleInitial=Initial
+htmlManagerServlet.jvmTableTitleMaximum=Maximum
+htmlManagerServlet.jvmTableTitleMemoryPool=Pool mémoire
+htmlManagerServlet.jvmTableTitleTotal=Total
+htmlManagerServlet.jvmTableTitleType=Type
+htmlManagerServlet.jvmTableTitleUsed=Utilisé
+htmlManagerServlet.jvmTotalMemory=Mémoire totale:
 htmlManagerServlet.list=Lister les applications
 htmlManagerServlet.manager=Gestionnaire
 htmlManagerServlet.messageLabel=Message:
 htmlManagerServlet.noManager=-
+htmlManagerServlet.noVersion=Aucun spécifié
+htmlManagerServlet.osAvailableMemory=Mémoire disponible:
+htmlManagerServlet.osFreePageFile=Fichier de page disponible:
+htmlManagerServlet.osKernelTime=Temps noyau du processus:
+htmlManagerServlet.osMemoryLoad=Charge mémoire:
+htmlManagerServlet.osPhysicalMemory=Mémoire physique:
+htmlManagerServlet.osTotalPageFile=Fichier de page total:
+htmlManagerServlet.osUserTime=Temps utilisateur du processus:
+htmlManagerServlet.serverHostname=Nom d'hôte
+htmlManagerServlet.serverIPAddress=Adresse IP
 htmlManagerServlet.serverJVMVendor=Fournisseur de la JVM
 htmlManagerServlet.serverJVMVersion=Version de la JVM
-htmlManagerServlet.serverOSArch=Architecture d''OS
-htmlManagerServlet.serverOSName=Nom d''OS
-htmlManagerServlet.serverOSVersion=Version d''OS
+htmlManagerServlet.serverOSArch=Architecture d'OS
+htmlManagerServlet.serverOSName=Nom d'OS
+htmlManagerServlet.serverOSVersion=Version d'OS
 htmlManagerServlet.serverTitle=Serveur
 htmlManagerServlet.serverVersion=Version de serveur
-htmlManagerServlet.title=Gestionnaire d''applications WEB Tomcat
+htmlManagerServlet.title=Gestionnaire d'applications WEB Tomcat
 
 managerServlet.alreadyContext=ECHEC - l''application existe déjà dans le chemin [{0}]
+managerServlet.certsNotAvailable=L'information sur les certificats ne peut pas être obtenu de ce connecteur au cours de son exécution
+managerServlet.deleteFail=ECHEC - Impossible de supprimer [{0}], ce qui pourrait causer des problèmes
 managerServlet.deployFailed=ECHEC - Echec au déploiement de l''application pour le chemin de contexte [{0}]
 managerServlet.deployed=OK - Application déployée pour le chemin de contexte [{0}]
 managerServlet.deployedButNotStarted=ECHEC - Application déployée pour le chemin de contexte [{0}] mais le démarrage du contexte a échoué
 managerServlet.exception=ECHEC - L''exception [{0}] a été rencontrée
+managerServlet.findleaksFail=ECHEC - Echec de la recherche de fuites, car l'hôte n'est pas un StandardHost
+managerServlet.findleaksList=OK - De possibles fuites de mémoire ont été trouvées dans les applications suivantes:
+managerServlet.findleaksNone=OK - Aucune fuite de mémoire trouvée
+managerServlet.inService=ECHEC - Une opération de gestion est déjà en cours pour l''application [{0}]
+managerServlet.invalidCommand=ECHEC - Des paramètres incorrects ont été fournis pour la commande [{0}]
 managerServlet.invalidPath=ECHEC - Un chemin de contexte invalide [{0}] a été spécifié
 managerServlet.listed=OK - Applications listées pour l''hôte virtuel (virtual host) [{0}]
 managerServlet.listitem={0}:{1}:{2}:{3}
-managerServlet.noCommand=ECHEC - Aucune commande n''a été spécifiée
+managerServlet.mkdirFail=ECHEC - Le répertoire [{0}] n''a pas pu être créé
+managerServlet.noCommand=ECHEC - Aucune commande n'a été spécifiée
 managerServlet.noContext=ECHEC - Aucun contexte n''existe pour le chemin [{0}]
-managerServlet.noGlobal=ECHEC - Aucune ressource JNDI globale n''est disponible
+managerServlet.noGlobal=ECHEC - Aucune ressource JNDI globale n'est disponible
 managerServlet.noManager=ECHEC - Aucun gestionnaire n''existe pour le chemin [{0}]
-managerServlet.noSelf=ECHEC - Le gestionnaire ne peut se recharger, se retirer, s''arrêter, ou se déployer lui-même
-managerServlet.noWrapper=Le conteneur n''a pas appelé "setWrapper()" pour cette servlet
+managerServlet.noSelf=ECHEC - Le gestionnaire ne peut se recharger, se retirer, s'arrêter, ou se déployer lui-même
+managerServlet.noWrapper=Le conteneur n'a pas appelé "setWrapper()" pour cette servlet
 managerServlet.notDeployed=ECHEC - Le contexte [{0}] est défini dans server.xml et ne peut être retiré
+managerServlet.notSslConnector=SSL n'est pas activé pour ce connecteur
+managerServlet.objectNameFail=ECHEC - Le nom d''objet [{0}] n''a pas pu être enregistré pour le Servlet de Gestion
+managerServlet.postCommand=ECHEC - Tentative d''utilisation de la commande [{0}] via une requête GET, mais POST est requis
 managerServlet.reloaded=OK - L''application associée au chemin de contexte [{0}] a été rechargée
 managerServlet.resourcesAll=OK - Liste des ressources globales de tout type
 managerServlet.resourcesType=OK - Liste des ressources globales de type [{0}]
 managerServlet.saveFail=ECHEC - La sauvegarde de la configuration a échoué: [{0}]
 managerServlet.saved=OK - Configuration serveur sauvegardée
 managerServlet.savedContext=OK - Configuration du contexte [{0}] sauvegardée
-managerServlet.sessiondefaultmax=Interval par défaut de maximum de session inactive [{0}] minutes
+managerServlet.serverInfo=OK - Informations sur le serveur\n\
+Version de Tomcat: [{0}]\n\
+Nom de l''OS: [{1}]\n\
+Version de l''OS: [{2}]\n\
+Architecture de l''OS: [{3}]\n\
+Version de la JVM: [{4}]\n\
+Fournisseur de la JVM: [{5}]
+managerServlet.sessiondefaultmax=La valeur par défaut du délai d''inactivité maximum d''une sessions est de [{0}] minutes
 managerServlet.sessions=OK - Information de session pour l''application au chemin de contexte [{0}]
-managerServlet.sessiontimeout=[{0}] minutes: [{1}] sessions
-managerServlet.sessiontimeout.expired=[{0}] minutes: [{1}] sessions were expired
-managerServlet.sessiontimeout.unlimited=unlimited time: [{0}] sessions
+managerServlet.sessiontimeout=Inactivité pendant [{0}] minutes: [{1}] sessions
+managerServlet.sessiontimeout.expired=Inactivité pendant [{0}] minutes: [{1}] sessions ont été expirées
+managerServlet.sessiontimeout.unlimited=Délai illimité: [{0}] sessions
+managerServlet.sslConnectorCerts=OK - Information sur le connecteur et la chaîne de certificats
+managerServlet.sslConnectorCiphers=OK - Information sur le connecteur et les chiffres SSL
+managerServlet.sslConnectorTrustedCerts=OK - Information sur le Connecteur / Certificat de confiance
+managerServlet.sslReload=OK - La configuration TLS de [{0}] a été rechargée
+managerServlet.sslReloadAll=OK - Configuration TLS rechargée pour tous les hôtes virtuels TLS
+managerServlet.sslReloadFail=ECHEC - Echec lors du rechargement de la configuration TLS
 managerServlet.startFailed=ECHEC - L''application pour le chemin de contexte [{0}] n''a pas pu être démarrée
 managerServlet.started=OK - Application démarrée pour le chemin de contexte [{0}]
 managerServlet.stopped=OK - Application arrêtée pour le chemin de contexte [{0}]
-managerServlet.undeployed=OK - L''application associée au chemin de contexte [{0}] a été retirée
+managerServlet.storeConfig.invalidMBean=ECHEC - Le mbean de StoreConfig n''a pas pu être trouvé, [{0}] n''est pas un nom valide
+managerServlet.storeConfig.noMBean=ECHEC - Pas de mbean StoreConfig enregistré à [{0}], l''enregistrement est effectué par StoreConfigLifecycleListener
+managerServlet.threaddump=OK - Etat des threads de la JVM
+managerServlet.trustedCertsNotConfigured=Aucun certificat de confiance n'est configuré pour cet hôte virtuel
+managerServlet.undeployed=OK - Application non déployée pour le chemin de contexte [{0}]
 managerServlet.unknownCommand=ECHEC - Commande inconnue [{0}]
+managerServlet.vminfo=OK - Informations sur la VM
 
 statusServlet.complete=Etat complet du serveur
 statusServlet.title=Etat du serveur
diff --git a/java/org/apache/catalina/manager/host/LocalStrings_fr.properties b/java/org/apache/catalina/manager/host/LocalStrings_fr.properties
new file mode 100644
index 0000000..1efcdc9
--- /dev/null
+++ b/java/org/apache/catalina/manager/host/LocalStrings_fr.properties
@@ -0,0 +1,91 @@
+# 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.
+
+hostManagerServlet.add=add: Ajouter l''hôte [{0}]
+hostManagerServlet.addFailed=ECHEC - L''hôte [{0}] n''a pas pu être ajouté
+hostManagerServlet.addSuccess=OK - L''hôte [{0}] a été ajouté
+hostManagerServlet.alreadyHost=ECHEC - Un hôte existe déjà pour le nom [{0}]
+hostManagerServlet.alreadyStarted=ECHEC - L''hôte [{0}] est déjà démarré
+hostManagerServlet.alreadyStopped=ECHEC - L''hôte [{0}] est déjà arrêté
+hostManagerServlet.appBaseCreateFail=ECHEC - Echec de création du répertoire de base (appBase) [{0}] de l''hôte [{1}]
+hostManagerServlet.cannotRemoveOwnHost=ECHEC - Impossible de retirer son propre hôte
+hostManagerServlet.cannotStartOwnHost=ECHEC - Ne peut pas démarrer son propre hôte
+hostManagerServlet.cannotStopOwnHost=ECHEC - Impossible d'arrêter son propre hôte
+hostManagerServlet.configBaseCreateFail=ECHEC - N''a pas pu trouver le configBase de l''hôte [{0}]
+hostManagerServlet.exception=ECHEC - Exception [{0}]
+hostManagerServlet.invalidHostName=ECHEC - Un nom d''hôte [{0}] invalide a été spécifié
+hostManagerServlet.list=list: Liste des hôte pour le moteur [{0}]
+hostManagerServlet.listed=OK - Liste des hôtes
+hostManagerServlet.listitem=[{0}]:[{1}]
+hostManagerServlet.managerXml=ECHEC - "manager.xml" n'a pas pu être installé
+hostManagerServlet.noCommand=ECHEC - Aucune commande n'a été spécifiée
+hostManagerServlet.noHost=ECHEC - Le nom d''hôte [{0}] n''existe pas
+hostManagerServlet.noWrapper=Le conteneur n'a pas appelé setWrapper() pour ce Servlet
+hostManagerServlet.persist=persist: Persister la configuration actuelle
+hostManagerServlet.persistFailed=ECHEC - N'a pas pu persister la configuration
+hostManagerServlet.persisted=OK - Configuration persistée
+hostManagerServlet.postCommand=ECHEC - Essai d''utilisation de GET pour la commande [{0}] mais POST est nécessaire
+hostManagerServlet.remove=supprimer: suppression de l''hôte [{0}]
+hostManagerServlet.removeFailed=ECHEC - N''a pas pu retirer l''hôte [{0}]
+hostManagerServlet.removeSuccess=OK - L''hôte [{0}] a été enlevé
+hostManagerServlet.start=start: Démarrage de l''hôte [{0}]
+hostManagerServlet.startFailed=ECHEC - Impossible de démarrer l''hôte [{0}]
+hostManagerServlet.started=OK - L''hôte [{0}] est démarré
+hostManagerServlet.stop=stop: Arrêt de l''hôte [{0}]
+hostManagerServlet.stopFailed=ECHEC - L''arrêt de l''hôte [{0}] a échoué
+hostManagerServlet.stopped=OK - L''hôte [{0}] est arrêté
+hostManagerServlet.unknownCommand=ECHEC - Commande inconnue [{0}]
+
+htmlHostManagerServlet.addAliases=Alias:
+htmlHostManagerServlet.addAppBase=Répertoire de base:
+htmlHostManagerServlet.addAutoDeploy=Déploiement automatique
+htmlHostManagerServlet.addButton=Ajouter
+htmlHostManagerServlet.addCopyXML=Copier le XML
+htmlHostManagerServlet.addDeployOnStartup=Déploiement au démarrage
+htmlHostManagerServlet.addDeployXML=Déployer le XML
+htmlHostManagerServlet.addHost=Hôte
+htmlHostManagerServlet.addManager=App gestionnaire
+htmlHostManagerServlet.addName=Nom:
+htmlHostManagerServlet.addTitle=Ajouter un hôte virtuel (Virtual Host)
+htmlHostManagerServlet.addUnpackWARs=Décompresser les WARs
+htmlHostManagerServlet.helpHtmlManager=Aide HTML du manager d'hôte
+htmlHostManagerServlet.helpHtmlManagerFile=../docs/html-host-manager-howto.html
+htmlHostManagerServlet.helpManager=Aide du Gestionnaire d'Hôtes
+htmlHostManagerServlet.helpManagerFile=../docs/host-manager-howto.html
+htmlHostManagerServlet.hostAliases=Alias de l'hôte
+htmlHostManagerServlet.hostName=Nom d'hôte
+htmlHostManagerServlet.hostTasks=Commandes
+htmlHostManagerServlet.hostThis=Gestionnaire d'Hôtes installé, commandes désactivées
+htmlHostManagerServlet.hostsPersist=Persister
+htmlHostManagerServlet.hostsRemove=Retirer
+htmlHostManagerServlet.hostsStart=Démarrer
+htmlHostManagerServlet.hostsStop=Arrêt
+htmlHostManagerServlet.list=Liste des Hôtes Virtuels
+htmlHostManagerServlet.manager=Gestionaire d'hôte ("Host Manager")
+htmlHostManagerServlet.messageLabel=Message:
+htmlHostManagerServlet.persistAll=Enregistrer la configuration, y compris les hôtes virtuels, dans server.xml et les fichiers context.xml pour chaque application
+htmlHostManagerServlet.persistAllButton=Tout
+htmlHostManagerServlet.persistTitle=Persister la configuration
+htmlHostManagerServlet.serverJVMVendor=Fournisseur de la JVM
+htmlHostManagerServlet.serverJVMVersion=Version de la JVM
+htmlHostManagerServlet.serverOSArch=Architecture du système
+htmlHostManagerServlet.serverOSName=Nom de l''OS
+htmlHostManagerServlet.serverOSVersion=Version de l'OS
+htmlHostManagerServlet.serverTitle=Information sur le serveur
+htmlHostManagerServlet.serverVersion=Version de Tomcat
+htmlHostManagerServlet.title=Gestionnaire d'Hôtes Virtuels de Tomcat
+
+statusServlet.complete=Etat complet du serveur
+statusServlet.title=Etat du serveur
diff --git a/java/org/apache/catalina/mapper/LocalStrings_fr.properties b/java/org/apache/catalina/mapper/LocalStrings_fr.properties
new file mode 100644
index 0000000..737a125
--- /dev/null
+++ b/java/org/apache/catalina/mapper/LocalStrings_fr.properties
@@ -0,0 +1,31 @@
+# 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.
+
+mapper.addHost.sameHost=L''enregistrement en double de l''hôte [{0}] est ignoré
+mapper.addHost.success=Enregistré l''hôte [{0}]
+mapper.addHostAlias.sameHost=L''enregistrement en double de l''alias [{0}] de l''hôte [{1}] est ignoré
+mapper.addHostAlias.success=L''alias [{0}] pour le hôte [{1}] a été enregistré
+mapper.duplicateHost=L''hôte [{0}] est en double et sera ignoré, le nom est déjà utilisé par l''hôte [{1}]
+mapper.duplicateHostAlias=L''alias [{0}] de l''hôte [{1}] est en double et sera ignoré, le nom est déjà utilisé par l''hôte [{2}]
+mapper.removeWrapper=Retire l''enrobeur du contexte [{0}] avec le chemin [{1}]
+
+mapperListener.pauseContext=Enregistrement du contexte [{0}] comme étant en cours de rechargement dans le service [{1}]
+mapperListener.registerContext=Enregistrement du contexte [{0}] pour le service [{1}]
+mapperListener.registerHost=Enregistrement de l''hôte [{0}] dans le domaine [{1}] pour le service [{2}]
+mapperListener.registerWrapper=Enregistrement du wrapper [{0}] dans le contexte [{1}] pour le service [{2}]
+mapperListener.unknownDefaultHost=L''hôte par défaut [{0}] est inconnu dans le service [{1}], Tomcat ne sera pas capable de traiter les requêtes HTTP/1.0 qui ne spécifient pas de nom d''hôte
+mapperListener.unregisterContext=Retrait du Context [{0}] pour le service [{1}]
+mapperListener.unregisterHost=Retrait de l''hôte [{0}] dans le domaine [{1}] pour le service [{2}]
+mapperListener.unregisterWrapper=Désenregitrement du wrapper [{0}] dans le contexte [{1}] pour le service [{2}]
diff --git a/java/org/apache/catalina/mbeans/LocalStrings_fr.properties b/java/org/apache/catalina/mbeans/LocalStrings_fr.properties
index 2f9f921..6de3f67 100644
--- a/java/org/apache/catalina/mbeans/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/mbeans/LocalStrings_fr.properties
@@ -14,7 +14,10 @@
 # limitations under the License.
 
 jmxRemoteLifecycleListener.createRegistryFailed=Création du répertoire RMI impossible pour le serveur [{0}] utilisant le port [{1}]
-jmxRemoteLifecycleListener.createServerFailed=Le connecteur serveur JMX pour le serveur [{0}] n''a pas pu être créé n''a pas démarré
+jmxRemoteLifecycleListener.createServerFailed=Le connecteur serveur JMX pour le serveur [{0}] n''a pas pu être créé ou n''a pas pu démarrer
 jmxRemoteLifecycleListener.destroyServerFailed=Le connecteur serveur JMX pour le serveur [{0}] n''a pas pu être stoppé
+jmxRemoteLifecycleListener.invalidRmiBindAddress=Adresse d''association du RMI invalide [{0}]
 jmxRemoteLifecycleListener.invalidURL=L''URL demandée pour le serveur [{0}], [{1}], est incorrect
 jmxRemoteLifecycleListener.start=L''écouteur distant JMX a configuré le répertoire sur le port [{0}] et le serveur sur le port [{1}] pour le serveur [{2}]
+
+mBeanFactory.managerContext=Un gestionnaire de sessions ne peut être ajouté qu'à un contexte
diff --git a/java/org/apache/catalina/realm/LocalStrings_fr.properties b/java/org/apache/catalina/realm/LocalStrings_fr.properties
index b465228..9608bb2 100644
--- a/java/org/apache/catalina/realm/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/realm/LocalStrings_fr.properties
@@ -13,35 +13,90 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+combinedRealm.addRealm=Ajout du royaume [{0}], [{1}] royaumes au total
+combinedRealm.authFail=Echec d''authentification de l''utilisateur [{0}] avec le domaine [{1}]
+combinedRealm.authStart=Tentative d''authentifier l''utilisateur [{0}] avec le royaume [{1}]
+combinedRealm.authSuccess=Authentifié l''utilisateur [{0}] avec le domaine [{1}]
+combinedRealm.getPassword=La méthode getPassword() ne doit jamais être appelée
+combinedRealm.getPrincipal=La méthode getPrincipal() ne devrait jamais être appelée
+combinedRealm.realmStartFail=Impossible de démarrer le royaume [{0}]
+combinedRealm.unexpectedMethod=Un appel de méthode inattendu à été effectué sur le royaumes combiné
+
+credentialHandler.invalidStoredCredential=Le royaume a fourni des identifiants [{0}] invalides à comparer avec ceux fournis par le client
+credentialHandler.unableToMutateUserCredential=Impossible de muter les identifiants fournis par l'utilisateur, cela veut habituellement dire que la configuration de CredentialHandler est invalide
+
+dataSourceRealm.authenticateFailure=Le nom d''utilisateur [{0}] n''a pas été authentifié
+dataSourceRealm.authenticateSuccess=Le nom d''utilisateur [{0}] a été authentifié avec succès
+dataSourceRealm.close=Exception lors de la fermeture de la connection vers la base de données
+dataSourceRealm.exception=Exception lors de l'anthentification
+dataSourceRealm.getPassword.exception=Exception lors de la récupération du mot de passe pour [{0}]
+dataSourceRealm.getRoles.exception=Exception lors de la récupération des rôles de [{0}]
+
+jaasCallback.username=Nom d''utilisateur renvoyé [{0}]
+
 jaasRealm.accountExpired=le nom d''utilisateur [{0}] N''A PAS été authentifié car le compte a expiré
+jaasRealm.authenticateFailure=Le nom d''utilisateur [{0}] n''a pas été authentifié avec succès
 jaasRealm.authenticateSuccess=le nom d''utilisateur [{0}] a été authentifié avec succès
+jaasRealm.beginLogin=La connection avec le JAASRealm a demandé le nom d''utilisateur [{0}] en utilisant le LoginContext de l''application [{1}]
+jaasRealm.checkPrincipal=Vérification du principal [{0}] [{1}]
 jaasRealm.credentialExpired=le nom d''utilisateur [{0}] N''A PAS été authentifié car son crédit a expiré (expired credential)
 jaasRealm.failedLogin=le nom d''utilisateur [{0}] N''A PAS été authentifié car son contrôle d''accès (login) a échoué
+jaasRealm.loginContextCreated=Le LoginContext JAAS a été crée pour le nom d''utilisateur [{0}]
 jaasRealm.loginException=Exception lors de l''authentification par login du nom d''utilisateur [{0}]
+jaasRealm.rolePrincipalAdd=Ajout du rôle Pincipal [{0}] aux rôles du principal de l''utilisateur
+jaasRealm.rolePrincipalFailure=Aucun principal avec un rôle valide trouvé
+jaasRealm.unexpectedError=Erreur inattendue
+jaasRealm.userPrincipalFailure=Aucun principal valide trouvé
+jaasRealm.userPrincipalSuccess=Le principal [{0}] est une classe utilisateur valide, elle sera utilisée comme principal de l''utilisateur
 
 jdbcRealm.authenticateFailure=le nom d''utilisateur [{0}] N''A PAS été authentifié
 jdbcRealm.authenticateSuccess=le nom d''utilisateur [{0}] a été authentifié avec succès
 jdbcRealm.close=Exception lors de la fermeture de la connexion à la base de données
-jdbcRealm.exception=Exception pendant le traitement de l''authentification
-jdbcRealm.open=Exception lors de l''ouverture de la base de données
+jdbcRealm.exception=Exception pendant le traitement de l'authentification
+jdbcRealm.open=Exception lors de l'ouverture de la base de données
+jdbcRealm.open.invalidurl=Le pilote [{0}] ne supporte pas l''URL [{1}]
 
 jndiRealm.authenticateFailure=Le nom d''utilisateur [{0}] N''A PAS été authentifié
 jndiRealm.authenticateSuccess=Le nom d''utilisateur [{0}] a été authentifié avec succès
-jndiRealm.close=Exception lors de la fermeture de la connexion au serveur d''accès (directory server)
-jndiRealm.exception=Exception pendant le traitement de l''authentification
-jndiRealm.open=Exception lors de l''ouverture de la connexion au serveur d''accès (directory server)
+jndiRealm.cipherSuites=La suite de chiffres [{0}] a été activée pour la connection TLS
+jndiRealm.close=Exception lors de la fermeture de la connexion au serveur d'accès (directory server)
+jndiRealm.emptyCipherSuites=Une chaîne vide est donnée comme suite de chiffres, la suite de chiffres par défaut sera utilisée
+jndiRealm.exception=Exception pendant le traitement de l'authentification
+jndiRealm.exception.retry=Erreur pendant l'authentification, nouvel essai
+jndiRealm.invalidHostnameVerifier=[{0}] n''est pas un nom de classe valide pour un HostnameVerifier
+jndiRealm.invalidSslProtocol=Le protocole fourni [{0}] est invalide, il doit être parmi [{1}]
+jndiRealm.invalidSslSocketFactory=[{0}] n''est pas un nom de classe valide pour une SSLSocketFactory
+jndiRealm.negotiatedTls=La connection TLS a été négociée en utilisant le protocole [{0}]
+jndiRealm.open=Exception lors de l'ouverture de la connexion au serveur d'accès (directory server)
+jndiRealm.tlsClose=Exception en fermant la réponse TLS
+
+lockOutRealm.authLockedUser=Une tentative d''authentification a été effectuée pour l''utilisateur verrouillé ("locked user") [{0}]
+lockOutRealm.removeWarning=L''utilisateur [{0}] a été enlevé du cache des utilisateurs en échec après [{1}] secondes pour garder la taille du cache dans les limites définies
+
+mdCredentialHandler.unknownEncoding=L''encodage [{0}] n''est pas supporté donc la configuration actuelle [{1}] va continuer à être utilisée
 
 memoryRealm.authenticateFailure=le nom d''utilisateur [{0}] N''A PAS été authentifié
 memoryRealm.authenticateSuccess=le nom d''utilisateur [{0}] a été authentifié avec succès
 memoryRealm.loadExist=Le fichier base de données mémoire (memory database) [{0}] ne peut être lu
 memoryRealm.loadPath=Chargement des utilisateurs depuis le fichier base de données mémoire (memory database) [{0}]
 memoryRealm.readXml=Exception lors de la lecture du fichier base de données mémoire (memory database)
+memoryRealm.xmlFeatureEncoding=Exception lors de la configuration du Digester pour permettre des noms d'encodage Java dans les fichiers XML, seuls le noms IANA seront supportés
+
+pbeCredentialHandler.invalidKeySpec=Impossible de générer une clé basée sur le mot de passe
 
-realmBase.algorithm=L''algorithme d''empreinte de message (message digest) [{0}] indiqué est invalide
+realmBase.algorithm=L''algorithme de hachage de message [{0}] indiqué est invalide
 realmBase.authenticateFailure=Le nom d''utilisateur [{0}] N''A PAS été authentifié
 realmBase.authenticateSuccess=Le nom d''utilisateur [{0}] a été authentifié avec succès
-realmBase.digest=Erreur lors du traitement des empreintes (digest) des crédits utilisateur (user credentials)
-realmBase.forbidden=L''accès à la ressource demandée a été interdit
+realmBase.cannotGetRoles=Impossible d''obtenir les rôles du principal [{0}]
+realmBase.createUsernameRetriever.ClassCastException=La classe [{0}] n''est pas un X509UsernameRetriever.
+realmBase.createUsernameRetriever.newInstance=Impossible de créer un objet du type [{0}]
+realmBase.credentialHandler.customCredentialHandler=Impossible donner la valeur [{1}] à la propriété [{0}] cas un CredentialHandler personnalisé a été configuré
+realmBase.delegatedCredentialFail=Impossible d''obtenir les identifiants délégués pour l''utilisateur [{0}]
+realmBase.digest=Erreur lors du hachage de l''identifiant utilisateur
+realmBase.forbidden=L'accès à la ressource demandée a été interdit
+realmBase.gotX509Username=Obtenu le nom d''utilisateur dans le certificat X509: [{0}]
+realmBase.gssContextNotEstablished=Erreur d'implémentation de l'authenticateur: le contexte de sécurité passé n'est pas complètement établi
+realmBase.gssNameFail=Impossible d'extraire le nom du GSSContext qui a été établi
 realmBase.hasRoleFailure=Le nom d''utilisateur [{0}] N''A PAS de rôle [{1}]
 realmBase.hasRoleSuccess=Le nom d''utilisateur [{0}] a pour rôle [{1}]
 
diff --git a/java/org/apache/catalina/security/LocalStrings_fr.properties b/java/org/apache/catalina/security/LocalStrings_fr.properties
index 4effd99..189e6aa 100644
--- a/java/org/apache/catalina/security/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/security/LocalStrings_fr.properties
@@ -13,4 +13,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-SecurityUtil.doAsPrivilege=Une exception s''est produite lors de l''exécution du bloc "PrivilegedExceptionAction".
+SecurityListener.checkUmaskFail=Tentative de démarrage avec un paramètre umask [{0}}, qui a été bloquée par l'écouteur org.apache.catalina.security.SecurityListener (configuré habituellement dans CATALINA_BASE/conf/server.xml) car l'umask doit être au moins aussi restreint que [{1}]
+SecurityListener.checkUmaskNone=Pas de définition du "umask" trouvée dans la propriété système [{0}]. Il apparaît toutefois que Tomcat tourne sur une plateforme qui supporte l''utilisation de umask. La propriété système est typiquement définie dans CATALINA_HOME/bin/catalina.sh. Le Lifecycle Listener org.apache.catalina.security.SecurityListener (généralement configuré dans CATALINA_BASE/conf/server.xml) s''attend à un umask au moins aussi restrictif que [{1}]
+SecurityListener.checkUmaskParseFail=Impossible de traiter la valeur [{0}] comme un umask valide
+SecurityListener.checkUmaskSkip=Impossible de déterminer le "umask".  Il semble que Tomcat tourne ici sous Windows, donc évitez la vérification du "umask".
+SecurityListener.checkUserWarning=Tentative de démarrage avec l'utilisateur [{0}}, qui a été bloquée par l'écouteur org.apache.catalina.security.SecurityListener (configuré habituellement dans CATALINA_BASE/conf/server.xml)
+
+SecurityUtil.doAsPrivilege=Une exception s'est produite lors de l'exécution du bloc "PrivilegedExceptionAction".
diff --git a/java/org/apache/catalina/session/LocalStrings_fr.properties b/java/org/apache/catalina/session/LocalStrings_fr.properties
index 41152af..5ed0af4 100644
--- a/java/org/apache/catalina/session/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/session/LocalStrings_fr.properties
@@ -18,22 +18,37 @@ JDBCStore.checkConnectionClassNotFoundException=La classe du driver JDBC n''a pa
 JDBCStore.checkConnectionDBClosed=La connexion à la base de données est nulle ou a été trouvée fermée. Tentative de réouverture.
 JDBCStore.checkConnectionDBReOpenFail=La tentative de réouverture de la base de données a échoué. La base de données est peut-être arrêtée.
 JDBCStore.checkConnectionSQLException=Une exception SQL s''est produite [{0}]
+JDBCStore.close=Exception lors de la fermeture de la connection vers la base de donnée [{0}]
+JDBCStore.commitSQLException=Une SQLException a été retournée lors du commit de la connection avant sa fermeture
 JDBCStore.loading=Chargement de la Session [{0}] depuis la base de données [{1}]
+JDBCStore.missingDataSourceName=Aucun nom JNDI valide n'a été donné.
 JDBCStore.removing=Retrait de la Session [{0}] de la base de données [{1}]
 JDBCStore.saving=Sauvegarde de la Session [{0}] vers la base de données [{1}]
+JDBCStore.wrongDataSource=Impossible d''ouvrir la DataSource JNDI [{0}]
 
+fileStore.createFailed=Impossible de créer le répertoire [{0}] pour stocker les données de session
+fileStore.deleteFailed=Impossible d''effacer le fichier [{0}] qui empêche la création du support de stockage de sessions
 fileStore.loading=Chargement de la Session [{0}] depuis le fichier [{1}]
 fileStore.removing=Retrait de la Session [{0}] du fichier [{1}]
 fileStore.saving=Sauvegarde de la Session [{0}] vers le fichier [{1}]
 
+managerBase.container.noop=Les gestionnaires de session ajoutés à des conteneurs qui ne sont pas des contextes ne seront jamais utilisés
+managerBase.contextNull=Le contexte (Context) doit être mis à une valeur non-nulle avant l'usage du Manager
 managerBase.createSession.ise="createSession": Trop de sessions actives
+managerBase.sessionAttributeNameFilter=L''attribut de session nommé [{0}] sera sauté car il ne correspond pas au filtre sur les noms [{1}]
+managerBase.sessionAttributeValueClassNameFilter=L''attribut de session nommé [{0}] a été passé parce que le type [{1}] de la valeur ne correspond pas au filtre [{2}]
 managerBase.sessionTimeout=Réglage du délai d''inactivité (timeout) de session invalide [{0}]
+managerBase.setContextNotNew=Il est illégal d'appeler setContext() pour changer le contexte associé avec un gestionnaire (Manager) si le genstionnaire n'est pas dans l'état nouveau
 
 persistentManager.backupMaxIdle=Sauvegarde de la session [{0}] vers le stockage (Store), en attente pour [{1}] secondes
-persistentManager.deserializeError=Erreur lors de la désérialisation de la session [{0}]: [{1}]
+persistentManager.deserializeError=Erreur lors de la désérialisation de la session [{0}]
 persistentManager.loading=Chargement de [{0}] sessions persistantes
 persistentManager.serializeError=Erreur lors de la sérialisation de la session [{0}]: [{1}]
+persistentManager.storeKeysException=Incapacité de déterminer la liste des ID de session, pour les sessions dans le magasin de sessions.  Supposant le magasin vide.
+persistentManager.storeSizeException=Impossible de déterminer le nombre de sessions dans le magasin de sessions, le magasin doit être vide.
 persistentManager.swapIn=Basculement depuis le stockage (swap in) de la session [{0}]
+persistentManager.swapInException=Exception dans la Store lors du swapIn: [{0}]
+persistentManager.swapInInvalid=La session échangée [{0}] est invalide
 persistentManager.swapMaxIdle=Basculement de la session [{0}] vers le stockage (Store), en attente pour [{1}] secondes
 persistentManager.swapTooManyActive=Basculement vers stockage (swap out) de la session [{0}], en attente pour [{1}] secondes trop de sessions actives
 persistentManager.tooManyActive=Trop de sessions actives, [{0}], à la recherche de sessions en attente pour basculement vers stockage (swap out)
@@ -44,19 +59,25 @@ standardManager.loading.exception="Exception" lors du chargement de sessions per
 standardManager.managerLoad=Exception au chargement des sessions depuis le stockage persistant (persistent storage)
 standardManager.managerUnload=Exception au déchargement des sessions vers le stockage persistant (persistent storage)
 standardManager.unloading=Sauvegarde des sessions ayant persisté vers [{0}]
+standardManager.unloading.debug=Déchargement des session persistées
+standardManager.unloading.nosessions=Aucune session persistée à décharger
 
-standardSession.attributeEvent=L''écouteur d''évènement Attribut de Session (attribute event listener) a généré une exception
+standardSession.attributeEvent=L'écouteur d'évènement Attribut de Session (attribute event listener) a généré une exception
+standardSession.bindingEvent=L'écouteur d'évènements d'association de session a renvoyé une exception
 standardSession.getAttribute.ise="getAttribute": Session déjà invalidée
 standardSession.getAttributeNames.ise="getAttributeNames": Session déjà invalidée
 standardSession.getCreationTime.ise="getCreationTime": Session déjà invalidée
+standardSession.getIdleTime.ise=getIdleTime: la session a déjà été invalidée
 standardSession.getLastAccessedTime.ise="getLastAccessedTime": Session déjà invalidée
 standardSession.getThisAccessedTime.ise="getThisAccessedTime": Session déjà invalidée
 standardSession.getValueNames.ise="getValueNames": Session déjà invalidée
 standardSession.invalidate.ise="invalidate": Session déjà invalidée
 standardSession.isNew.ise="isNew": Session déjà invalidée
+standardSession.logoutfail=Exception lors de la déconnection de l'utilisateur, lors de l'expiration de la session
+standardSession.notDeserializable=Impossible de désérialiser l''attribut de session [{0}] pour la session [{1}]
 standardSession.notSerializable=Impossible de sérialiser l''attribut de session [{0}] pour la session [{1}]
 standardSession.removeAttribute.ise="removeAttribute": Session déjà invalidée
-standardSession.sessionEvent=L''écouteur d''évènement de session (session event listener) a généré une exception
+standardSession.sessionEvent=L'écouteur d'évènement de session (session event listener) a généré une exception
 standardSession.setAttribute.iae="setAttribute": Attribut [{0}] non sérialisable
 standardSession.setAttribute.ise="setAttribute": Session déjà invalidée
 standardSession.setAttribute.namenull="setAttribute": le nom de paramètre ne peut être nul
diff --git a/java/org/apache/catalina/startup/LocalStrings_fr.properties b/java/org/apache/catalina/startup/LocalStrings_fr.properties
index 11199f2..b736089 100644
--- a/java/org/apache/catalina/startup/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_fr.properties
@@ -13,45 +13,150 @@
 # 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ètres par défaut
+catalina.configFail=Impossible de charger la configuration du serveur depuis [{0}]
+catalina.noCluster=le RuleSet du cluster n''a pas été trouvé à cause de [{0}], la configuration du cluster est désactivée
+catalina.serverStartFail=Le composant Server requis n'a pas démarré, en conséquence Tomcat ne peut démarrer.
+catalina.shutdownHookFail=Le crochet d'arrêt a rencontré une erreur en tentant d'arrêter le serveur
+catalina.stopServer=Pas de port d'arrêt configuré, l'arrêt du serveur se fera via un signal du système d'exploitation; le serveur est en cours d'exécution
+
+connector.noSetExecutor=Le connecteur [{0}] ne supporte pas les exécuteurs externes, la méthode setExecutor(java.util.concurrent.Executor) n''a pas été trouvée
+connector.noSetSSLImplementationName=Le connecteur [{0}] ne supporte pas le changement de l''implémentation SSL, car la méthode setSslImplementationName(String) n''a pas été trouvée
+
+contextConfig.altDDNotFound=fichier alt-dd [{0}] pas trouvé
+contextConfig.annotationsStackOverflow=Impossible de finir l''analyse des annotations de l''application web [{0}] à cause d''une StackOverflowError, les causes possibles sont une valeur trop petite pour -Xss et des dépendances d''héritage cycliques; la hiérarchie de classe qui était traitée était [{1}]
+contextConfig.applicationMissing=Le fichier web.xml de l'application est absent, utilisation des paramètres par défaut
 contextConfig.applicationParse=Erreur d''évaluation (parse) dans le fichier web.xml de l''application à [{0}]
 contextConfig.applicationPosition=S''est produite à la ligne [{0}] colonne [{1}]
+contextConfig.applicationStart=Traitement du fichier web.xml de l''application à [{0}]
+contextConfig.applicationUrl=Impossible de déterminer l'URL pour le fichier d'application web.xml
 contextConfig.authenticatorConfigured=Configuration d''un authentificateur (authenticator) pour la méthode [{0}]
 contextConfig.authenticatorInstantiate=Impossible d''instancier un authentificateur (authenticator) pour la classe [{0}]
 contextConfig.authenticatorMissing=Impossible de configurer un authentificateur (authenticator) pour la méthode [{0}]
 contextConfig.authenticatorResources=Impossible de charger la liste de correspondance des authentificateurs (authenticators)
+contextConfig.badUrl=Impossible de traiter le descripteur de contexte [{0}]
+contextConfig.baseError=Impossible de déterminer la localisation de la configuration globale, habituellement $CATALINA_BASE/conf
 contextConfig.cce=L''objet donnée évènement cycle de vie (Lifecycle event data object) [{0}] n''est pas un Contexte
+contextConfig.contextClose=Erreur lors de la fermeture de context.xml
+contextConfig.contextMissing=context.xml manquant: [{0}]
+contextConfig.contextParse=Erreur de traitement de context.xml pour [{0}]
+contextConfig.defaultError=Erreur de traitement du web.xml par défaut appelé [{0}] à [{1}]
+contextConfig.defaultMissing=Fichier web.xml global non trouvé
 contextConfig.defaultPosition=S''est produite à la ligne [{0}] colonne [{1}]
+contextConfig.destroy=ContextConfig: Destruction
+contextConfig.fileUrl=Impossible de créer un objet fichier à partir de l''URL [{0}]
+contextConfig.fixDocBase=Exception durant la fixation du "docBase" pour le contexte [{0}]
+contextConfig.init=ContextConfig: Initialisation
+contextConfig.inputStreamFile=Impossible de traiter les annotations du fichier [{0}]
+contextConfig.inputStreamJar=Impossible de traiter l''entrée [{0}] du JAR [{1}] pour les annotations
+contextConfig.inputStreamWebResource=Incapable de traiter les annotations de la ressource web [{0}]
+contextConfig.invalidSci=Le ServletContainerInitializer [{0}] n''a pas pu être crée
+contextConfig.invalidSciHandlesTypes=Impossible de charger la classe [{0}] pour la vérifier avec l''annotation @HandlesTypes d''un ou plusieurs ServletContainerInitializer
+contextConfig.jarFile=Impossible de traiter les annotations du JAR [{0}]
 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 été configuré pour réaliser l''authentification
+contextConfig.jspFile.warning=WARNING: Le fichier JSP [{0}] doit commencer par un  ''/'' dans l''API Servlet 2.4
+contextConfig.missingRealm=Aucun royaume (realm) n'a été configuré pour réaliser l'authentification
+contextConfig.processAnnotationsDir.debug=Balayage du répertoire pour trouver des fichiers de classe avec annotations [{0}]
+contextConfig.processAnnotationsJar.debug=Analyse du fichier jars pour des classes annotées avec [{0}]
+contextConfig.processAnnotationsWebDir.debug=Balayage du répertoire d''applications web, pour fichiers de classe avec annotations [{0}]
+contextConfig.resourceJarFail=Echec du traitement du JAR trouvé à l''URL [{0}] pour les ressources statiques qui devront être incluses dans le contexte avec le nom [{1}]
 contextConfig.role.auth=Le nom de rôle de sécurité [{0}] est utilisé dans un <auth-constraint> sans avoir été défini dans <security-role>
 contextConfig.role.link=Le nom de rôle de sécurité [{0}] est utilisé dans un <role-link> sans avoir été défini dans <security-role>
 contextConfig.role.runas=Le nom de rôle de sécurité [{0}] est utilisé dans un <run-as> sans avoir été défini dans <security-role>
-contextConfig.start="ContextConfig": Traitement du "START"
+contextConfig.sci.debug=Impossible de traiter le ServletContainerInitializaer pour [{0}], c''est probablement dû au fait que la classe dans l''annotation @HandlesTypes est manquante
+contextConfig.sci.info=Impossible de traiter le ServletContainerInitializaer pour [{0}], c''est probablement dû au fait que la classe dans l''annotation @HandlesTypes est manquante (activer le niveau de log DEBUG pour voir la trace complète)
+contextConfig.servletContainerInitializerFail=Impossible de détecter les ServletContainerInitializers pour le contexte nommé [{0}]
+contextConfig.start=ContextConfig: Traitement du "START"
 contextConfig.stop="ContextConfig": Traitement du "STOP"
 contextConfig.unavailable=Cette application est marquée comme non disponible suite aux erreurs précédentes
+contextConfig.unknownUrlProtocol=Le protocole de l''URL [{0}] n''a pas été reconnu pendant le traitement des annotations, l''URL [{1}] a été ignorée
+contextConfig.urlPatternValue=A la fois les attributs urlPatterns et la valeur ont été fixés pour l''annotation [{0}] de la classe [{1}]
+contextConfig.webinfClassesUrl=Impossible de déterminer l''URL pour [{0}]
+contextConfig.xmlSettings=Le contexte [{0}] va traiter les fichiers web.xml et le web-fragment.xml avec la validation [{1}] et namespaceAware [{2}]
 
-embedded.noEngines=Aucun moteur (engine) n''a encore été défini
+embedded.authenticatorNotInstanceOfValve=L'Authenticator spécifié n'est pas une valve
+embedded.noEngines=Aucun moteur (engine) n'a encore été défini
+embedded.notmp=Impossible de trouver le répertoire temporaire à [{0}]
 
 engineConfig.cce=L''objet donnée évènement 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"
 
+expandWar.copy=Erreur lors de la copie de [{0}] vers [{1}]
+expandWar.createFailed=Impossible de créer le répertoire [{0}]
+expandWar.createFileFailed=Impossible de créer le fichier [{0}]
+expandWar.deleteFailed=[{0}] n''a pas pu être complètement effacé.  La présence des fichiers résiduels peut causer des problèmes ultérieurs.
+expandWar.deleteOld=Un répertoire décompressé [{0}] a été trouvé avec une date de dernière modification qui ne correspond pas au WAR associé, il sera effacé
+expandWar.illegalPath=L''archive [{0}] est invalide est sera ignorée: une entrée contient un chemin invalide [{1}] qui n''a pas été extrait vers [{2}] puisque c''est en dehors du docBase [{3}] qui a été défini
+expandWar.lastModifiedFailed=Impossible de fixer la date de dernière modification pour [{0}]
+expandWar.missingJarEntry=Impossible d''obtenir un flux d''entrée pour le JarEntry [{0}], le WAR peut être invalide
+
+failedContext.start=Impossible de traiter le context.xml soit global, par hôte ou spécifique au contexte, donc le contexte [{0}] ne peut pas être démarré
+
+hostConfig.appBase=La base d''application [{1}] pour le hôte [{0}] n''existe pas ou n''est pas un répertoire. deployOnStartUp et autoDeploy ont été remis à "false" pour éviter des erreurs de déployement. D''autres erreurs peuvent suivre.
+hostConfig.canonicalizing=Impossible de déterminer le chemin canonique pour [{0}] pendant qu''on essaie de retirer [{1}]
 hostConfig.cce=L''objet donnée évènement cycle de vie (Lifecycle event data object) [{0}] n''est pas un hôte
+hostConfig.context.remove=Erreur en enlevant le contexte [{0}]
+hostConfig.context.restart=Erreur pendant le redémarrage du contexte [{0}]
+hostConfig.createDirs=Impossible de créer un répertoire pour le déploiement: [{0}]
+hostConfig.deploy.error=Exception lors du déploiement du répertoire [{0}] de l''application web
 hostConfig.deployDescriptor=Déploiement du descripteur de configuration [{0}]
+hostConfig.deployDescriptor.blocked=L''application web dont le chemin est [{0}] n''a pas été déployée car elle contenait un descripteur de déploiement [{1}] qui pourrait inclure de la configuration nécessaire pour le déploiement sécurisé de l''application mais ce traitement est empêché par le paramètre deployXML pour cet hôte, un descripteur approprié devrait être crée à [{2}] pour déployer cette application
 hostConfig.deployDescriptor.error=Erreur lors du déploiement du descripteur de configuration [{0}]
-hostConfig.deployDir=Déploiement du répertoire [{0}] de l''application web
+hostConfig.deployDescriptor.finished=Le traitement du descripteur de déploiement [{0}] a pris [{1}] ms
+hostConfig.deployDescriptor.localDocBaseSpecified=Un docBase [{0}] dans l''appBase de l''hôte a été spécifié et sera ignoré
+hostConfig.deployDescriptor.threaded.error=Erreur en attendant la fin du déploiement de descripteurs en parallèle
+hostConfig.deployDir=Déploiement du répertoire d''application web [{0}]
 hostConfig.deployDir.error=Erreur lors du déploiement du répertoire [{0}] de l''application web
+hostConfig.deployDir.finished=Le déploiement du répertoire [{0}] de l''application web s''est terminé en [{1}] ms
+hostConfig.deployDir.threaded.error=Erreur en attendant la fin du déploiement de répertoires en parallèle
 hostConfig.deployWar=Déploiement de l''archive [{0}] de l''application web
 hostConfig.deployWar.error=Erreur lors du déploiement de l''archive [{0}] de l''application web
+hostConfig.deployWar.finished=Le déploiement de l''archive de l''application web [{0}] s''est terminé en [{1}] ms
+hostConfig.deployWar.hiddenDir=Le répertoire [{0}] sera ignoré parce que le WAR [{1}] a la priorité et que unpackWARs est faux
+hostConfig.deployWar.threaded.error=Erreur en attendant la fin du déploiement de fichiers WAR en parallèle
+hostConfig.deploying=Déploiement des applications web trouvées
+hostConfig.docBaseUrlInvalid=La "docBase" fournie ne peut pas être exprimée comme URL
+hostConfig.expand=Décompression de l''archive [{0}] de l''application web
+hostConfig.expand.error=Exception lors de la décompression de l''archive d''application web [{0}]
+hostConfig.expanding=Explosion des fichiers d'archive d'application web trouvés
+hostConfig.ignorePath=Le chemin [{0}] est ignoré pour le déploiement automatique dans appBase
+hostConfig.illegalWarName=Le nom du war [{0}] est invalide, l''archive sera ignorée
+hostConfig.jmx.register=Echec d''enregistrement du contexte [{0}]
+hostConfig.jmx.unregister=Le désenregistrement du contexte [{0}] a échoué
+hostConfig.reload=Rechargement du contexte [{0}]
+hostConfig.resourceNotAbsolute=Impossible d''enlever la ressource du contexte [{0}] car [{1}] n''est pas absolu
 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}]
+hostConfig.undeploy=Retrait de l''application web ayant pour chemin de contexte [{0}]
+hostConfig.undeployVersion=Retrait de l''ancienne version du contexte [{0}] car elle n''a pas de session active
+
+passwdUserDatabase.readFail=Echec d'obtention de la liste complète des utilisateurs depuis /etc/passwd
+
+tomcat.addWebapp.conflictChild=Impossible de déployer le WAR à [{0}] sur le chemin de contexte [{1}] à cause du contexte existant [{2}]
+tomcat.addWebapp.conflictFile=Impossible de déployer le WAR à [{0}] sur le chemin de contexte [{1}] à cause du fichier existant [{2}]
+tomcat.homeDirMakeFail=Impossible de créer le répertoire [{0}] pour l''utiliser comme répertoire d''origine
 
 userConfig.database=Exception lors du chargement de la base de données utilisateur
 userConfig.deploy=Déploiement de l''application web pour l''utilisateur [{0}]
+userConfig.deploy.threaded.error=Erreur en attendant la fin du déploiement de répertoires utilisateur en parallèle
 userConfig.deploying=Déploiement des applications web utilisateur
 userConfig.error=Erreur lors du déploiement de l''application web pour l''utilisateur [{0}]
 userConfig.start="UserConfig": Traitement du "START"
 userConfig.stop="UserConfig": Traitement du "STOP"
+
+versionLoggerListener.arg=Argument de la ligne de commande: {0}
+versionLoggerListener.catalina.base=CATALINA_BASE:         {0}
+versionLoggerListener.catalina.home=CATALINA_HOME:         {0}
+versionLoggerListener.env=Variable d’environnement: {0} = {1}
+versionLoggerListener.java.home=Répertoire de Java:     {0}
+versionLoggerListener.os.arch=Architecture:          {0}
+versionLoggerListener.os.name=Nom de l''OS:           {0}
+versionLoggerListener.os.version=Version de l''OS:        {0}
+versionLoggerListener.prop=Propriété système:       {0} = {1}
+versionLoggerListener.serverInfo.server.built=Serveur compilé:       {0}
+versionLoggerListener.serverInfo.server.number=Version du serveur:      {0}
+versionLoggerListener.serverInfo.server.version=Version du serveur:        {0}
+versionLoggerListener.vm.vendor=Fournisseur de la JVM:            {0}
+versionLoggerListener.vm.version=Version de la JVM:           {0}
+
+webAnnotationSet.invalidInjection=L'annotation d'injection de ressource de la méthode est invalide
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties b/java/org/apache/catalina/storeconfig/LocalStrings_fr.properties
similarity index 65%
copy from java/org/apache/tomcat/util/net/LocalStrings_fr.properties
copy to java/org/apache/catalina/storeconfig/LocalStrings_fr.properties
index 0410d90..ab682e8 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/storeconfig/LocalStrings_fr.properties
@@ -13,6 +13,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# net resources
+config.storeContextError=Erreur d''enregistrement du contexte [{0}]
+config.storeServerError=Erreur d'enregistrement de la configuration du serveur
 
+factory.storeNoDescriptor=Le descripteur pour l''élément de la classe [{0}] n''est pas configuré
+factory.storeTag=enregistrement du tag [{0}] (objet: [{1}])
 
+storeConfigListener.notServer=L'écouteur a été ajouté à un composant autre que le Server et sera donc ignoré
diff --git a/java/org/apache/catalina/tribes/group/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/group/LocalStrings_fr.properties
new file mode 100644
index 0000000..fa1ebc7
--- /dev/null
+++ b/java/org/apache/catalina/tribes/group/LocalStrings_fr.properties
@@ -0,0 +1,28 @@
+# 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.
+
+channelCoordinator.alreadyStarted=Canal déjà démarré pour le niveau: [{0}]
+channelCoordinator.invalid.startLevel=Niveau de départ invalide, les niveaux valides sont : SND_RX_SEQ,SND_TX_SEQ,MBR_TX_SEQ,MBR_RX_SEQ
+
+groupChannel.listener.alreadyExist=L''écouteur existe déjà: [{0}][{1}]
+groupChannel.noDestination=Aucune destination donnée
+groupChannel.nullMessage=Impossible d'envoyer un message null
+groupChannel.optionFlag.conflict=Conflit sur le drapeau optionnel d''un intercepteur: [{0}]
+groupChannel.receiving.error=Erreur lors de la réception du message:
+groupChannel.sendFail.noRpcChannelReply=Incapable de trouver le canal RPM, échec d'envoi de NoRpcChannelReply
+groupChannel.unable.deserialize=Impossible de désérialiser le message [{0}]
+groupChannel.unable.sendHeartbeat=Impossible d'envoyer l’événement périodique dans la pile d'intercepteurs de Tribes
+
+rpcChannel.replyFailed=Impossible de renvoyer la réponse dans le RpcChannel
diff --git a/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_fr.properties
new file mode 100644
index 0000000..16cdbd2
--- /dev/null
+++ b/java/org/apache/catalina/tribes/group/interceptors/LocalStrings_fr.properties
@@ -0,0 +1,82 @@
+# 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.
+
+domainFilterInterceptor.member.refused=Le membre [{0}] a été refusé dans le cluster
+domainFilterInterceptor.message.refused=Le message reçu du cluster [{0}] a été refusé
+
+encryptInterceptor.algorithm.required=Un algorithme de cryptage est requis, avec une spécification complète telle que AES/CBC/PKCS5Padding
+encryptInterceptor.algorithm.unsupported-mode=L''EncryptInterceptor ne supporte pas le mode de chiffrage de bloc [{0}]
+encryptInterceptor.decrypt.error.short-message=Erreur de décryptage du message: fin de message prématuré
+encryptInterceptor.decrypt.failed=Echec de décryptage du message
+encryptInterceptor.encrypt.failed=Erreur de cryptage du message
+encryptInterceptor.init.failed=Echec de l'initalisation d'EncryptInterceptor
+encryptInterceptor.key.required=Une clé de cryptage est requise
+encryptInterceptor.tcpFailureDetector.ordering=EncryptInterceptor doit être en amont de TcpFailureDetector, l'EncryptInterceptor doit être repositionné pour être listé avant TcpFailureDetector dans le pipeline d'intercepteurs du canal
+
+fragmentationInterceptor.fragments.missing=Les fragments sont manquants
+fragmentationInterceptor.heartbeat.failed=Impossible d'effectuer le nettoyage périodique de l'intercepteur de fragments
+
+gzipInterceptor.compress.failed=Impossible de compresser un contenu binaire
+gzipInterceptor.decompress.failed=Impossible de décompresser le contenu des octets
+
+messageDispatchInterceptor.AsyncMessage.failed=Erreur lors du traitement du message asynchrone
+messageDispatchInterceptor.completeMessage.failed=Impossible de renvoyer le message complet
+messageDispatchInterceptor.errorMessage.failed=Impossible d'envoyer le message d'erreur
+messageDispatchInterceptor.queue.full=La file d''attente asynchrone est pleine, ayant atteint sa limite de [{0}] octets. Actuellement: [{1}] octets.
+messageDispatchInterceptor.unableAdd.queue=Impossible d'ajouter le message à la file asynchrone.  Bogue de file ?
+messageDispatchInterceptor.warning.optionflag=Attention, vous passez outre le drapeau d'option d'asynchronicité ("asynchronous option flag"), cela désactivera Channel.SEND_OPTIONS_ASYNCHRONOUS, que d'autres applications sont susceptibles d'utiliser.
+
+nonBlockingCoordinator.electionMessage.sendfailed=Impossible d''envoyer le message d''élection à: [{0}]
+nonBlockingCoordinator.heartbeat.failed=Impossible d'effectuer le signal périodique
+nonBlockingCoordinator.heartbeat.inconsistency=Le coordinateur à trouvé un état inconsistant, redémarrage de l'élection
+nonBlockingCoordinator.memberAdded.failed=Impossible de démarrer une élection quand le membre a été ajouté
+nonBlockingCoordinator.memberAlive.failed=Impossible d'effectuer le test de vie du membre, assume membre inactif.
+nonBlockingCoordinator.memberDisappeared.failed=Impossible de démarrer une élection lorsqu'un membre a été enlevé
+nonBlockingCoordinator.processCoordinationMessage.failed=Echec de traitement de message de coordination. Pourrait être fatal.
+
+orderInterceptor.messageAdded.sameCounter=Le message ajouté a le même compteur, à cause d'un bug de synchronisation, l'intercepteur d'ordre doit être désactivé
+
+staticMembershipInterceptor.no.failureDetector=Il n'y a pas de détecteur TcpFailureDetector. La détection automatique de membres statiques ne fonctionne pas correctement.  Par la définition d'un intercepteur StaticMembershipInterceptor sous le TcpFailureDetector, cette détection automatique fonctionnera.
+staticMembershipInterceptor.no.pingInterceptor=Il n'y a pas de TcpPingInterceptor. Le test de bonne santé des membres statiques ne fonctionne pas correctement. En définissant le TcpPingInterceptor, le test de bonne santé des membres statiques fonctionnera.
+staticMembershipInterceptor.sendLocalMember.failed=La notification du membre local a échouée
+staticMembershipInterceptor.sendShutdown.failed=La notification d'arrêt a échoué
+
+tcpFailureDetector.already.disappeared=La vérification est terminée, le membre avait déjà disparu [{0}]
+tcpFailureDetector.failureDetection.failed=Impossible d''effectuer le test de détection de faute.  Membre [{0}] supposé inactif.
+tcpFailureDetector.heartbeat.failed=Incapable de faire une pulsation ("heatbeat") sur le TcpFailureDector
+tcpFailureDetector.member.disappeared=La vérfication est complète, le membre a disparu [{0}]
+tcpFailureDetector.memberDisappeared.verify=Reçu un message memberDisappeared[{0}], qui sera vérifié
+tcpFailureDetector.performBasicCheck.memberAdded=Le membre a été ajouté bien qu''aucune notification n''ait été reçue: [{0}]
+tcpFailureDetector.still.alive=Vérification terminée. Le membre [{0}] vit toujours
+tcpFailureDetector.suspectMember.alive=Membre suspect, confirmé vivant.[{0}]
+tcpFailureDetector.suspectMember.dead=Un membre suspect a été confirmé mort [{0}]
+
+tcpPingInterceptor.ping.failed=Impossible d'envoyer un ping TCP.
+tcpPingInterceptor.pingFailed.pingThread=Impossible d'envoyer un ping à partir du thread des ping TCP
+
+throughputInterceptor.report=Rapport de l''intercepteur du débit ("ThroughputInterceptor Report") [\n\
+\tMsg Transmis (Tx Msg):{0} messages\n\
+\tEnvoyé (Sent):{1} MB (total)\n\
+\tEnvoyé (Sent):{2} MB (application)\n\
+\tDurée (Time):{3} secondes\n\
+\tVitesse d''écriture (Tx Speed):{4} MB/sec (total)\n\
+\tVitesse d''écriture (Tx Speed):{5} MB/sec (application)\n\
+\tMsg d''erreur (Error Msg):{6}\n\
+\tMsg Reçus (Rx Msg):{7} messages\n\
+\tVitesse de Réception (Rx Speed):{8} MB/sec (depuis le 1er message)\n\
+\tReçu:{9} MB]
+
+twoPhaseCommitInterceptor.heartbeat.failed=Impossible d'exécuter un battement de coeur (heartbeat) sur l'intercepteur (interceptor) "TwoPhaseCommit".
+twoPhaseCommitInterceptor.originalMessage.missing=Reçue une confirmation mais le message d''origine manque, id: [{0}]
diff --git a/java/org/apache/catalina/tribes/io/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/io/LocalStrings_fr.properties
new file mode 100644
index 0000000..a9694db
--- /dev/null
+++ b/java/org/apache/catalina/tribes/io/LocalStrings_fr.properties
@@ -0,0 +1,27 @@
+# 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.
+
+bufferPool.created=Création d''un pool de tampons de taille maximale: [{0}] octets de type: [{1}]
+
+objectReader.retrieveFailed.socketReceiverBufferSize=Incapacité de récupérer la taille du tampon du socket de réception, forcé à 43800 octets
+
+replicationStream.conflict=Conflit entre des interfaces non-publics ayant des chargeurs de classe différents
+
+xByteBuffer.discarded.invalidHeader=L'en-tête est invalide donc le paquet a été abandonné
+xByteBuffer.no.package=Il n'y a aucun package dans XByteBuffer
+xByteBuffer.size.larger.buffer=La taille est plus grande que celle du buffer existant
+xByteBuffer.unableCreate=Impossible de créer le package data, le tampon de mémoire est trop petit
+xByteBuffer.unableTrim=Impossible d''élaguer plus d''octets que ce qui est disponible, longueur: [{0}] élagage: [{1}]
+xByteBuffer.wrong.class=Message n''a pas la bonne classe. Cela doit implémenter Serializable au lieu de [{0}]
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/jmx/LocalStrings_fr.properties
similarity index 59%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/catalina/tribes/jmx/LocalStrings_fr.properties
index 7363303..58edc0e 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/tribes/jmx/LocalStrings_fr.properties
@@ -13,7 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
-
-value.false=false
-value.true=true
+jmxRegistry.no.domain=Le nom de domaine JMX n'est pas spécifié
+jmxRegistry.objectName.failed=L''ObjectName [{0}] demandé est invalide
+jmxRegistry.registerJmx.failed=Echec de l''enregistrement de l''objet [{0}] avec le nom [{1}]
+jmxRegistry.registerJmx.notCompliant=L''objet demandé [{0}] n''est pas compatible avec la spécification JMX
+jmxRegistry.unregisterJmx.failed=Echec du désenregistrement du MBean nommé [{0}]
+jmxRegistry.unregisterJmx.notFound=L''ObjectName [{0}] demandé n''a pas été enregistré dans le serveur JMX
diff --git a/java/org/apache/catalina/tribes/membership/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/membership/LocalStrings_fr.properties
new file mode 100644
index 0000000..66bdd27
--- /dev/null
+++ b/java/org/apache/catalina/tribes/membership/LocalStrings_fr.properties
@@ -0,0 +1,56 @@
+# 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.
+
+McastService.domain=Impossible d'envoyer la mise à jour du domaine
+McastService.parseSoTimeout=Impossible de lire SoTimeout: [{0}]
+McastService.parseTTL=Impossible d''analyser le TTL: [{0}]
+McastService.payload=Impossible d'envoyer les données de mise à jour
+McastService.stopFail=Impossible d''arrêter le service mcast, niveau [{0}]
+
+mcastService.exceed.maxPacketSize=La taille du paquet [{0}] excède la taille maximale qui est de [{1}] octets
+mcastService.missing.property=McastService:La propriété obligatoire [{0}] manque.
+mcastService.noStart=L'envoi multicast n'est pas démarré ou activé
+
+mcastServiceImpl.bind=Tentive d'associer le socket multicast à [{0}:{1}]
+mcastServiceImpl.bind.failed=Echec de l'association à l’adresse multicast, association uniquement sur le port
+mcastServiceImpl.error.receiving=Erreur en recevant un paquet multicast, attente de 500ms
+mcastServiceImpl.invalid.startLevel=Niveau de départ invalide. Les seuls niveaux acceptables sont Channel.MBR_RX_SEQ et Channel.MBR_TX_SEQ
+mcastServiceImpl.invalid.stopLevel=Niveau de stop invalide, les seuls niveaux valides sont Channel.MBR_RX_SEQ et Channel.MBR_TX_SEQ
+mcastServiceImpl.memberDisappeared.failed=Impossible de traiter le message indiquant un membre disparu
+mcastServiceImpl.packet.tooLong=Le paquet multicast reçu est trop long, il est abandonné: [{0}]
+mcastServiceImpl.receive.running=McastService.receive est déjà en cours d'exécution
+mcastServiceImpl.recovery=Le multicast est non fonctionnel, le registre de membres de Tribes exécute le processus de récupération
+mcastServiceImpl.recovery.failed=La tentative de récupération numéro [{0}] échouée, nouvel essai dans [{1}] secondes
+mcastServiceImpl.recovery.startFailed=Le thread de récupération n'a pas pu démarrer le registre de membres
+mcastServiceImpl.recovery.stopFailed=Le thread de récupération n'a pu arrêter le registre de membres
+mcastServiceImpl.recovery.successful=Succès de récupération du registre de membres
+mcastServiceImpl.send.failed=Impossible d'envoyer le message mcast.
+mcastServiceImpl.send.running=McastService.send est déjà en cours d'exécution.
+mcastServiceImpl.setInterface=Définition de l''interface multicast multi réseaux comme [{0}]
+mcastServiceImpl.setSoTimeout=Réglage du mcast soTimeout du cluster à [{0}]
+mcastServiceImpl.setTTL=Le multicast TTL du cluster est fixé à [{0}]
+mcastServiceImpl.unable.join=Incapable de rejoindre le le groupe de multidiffusion ("multicast"). Assurez-vous que la multidiffusion est activée sur votre système.
+mcastServiceImpl.unableReceive.broadcastMessage=N'a pas pu recevoir de message général (broadcast)
+mcastServiceImpl.waitForMembers.done=Fin de l''attente, le registre de membres est établi, démarrage de niveau: [{0}]
+mcastServiceImpl.waitForMembers.start=Attente de [{0}] millisecondes pour établir le registre de membres du cluster, démarrage au niveau [{1}]
+
+memberImpl.invalid.package.begin=Le paquet est invalide, il devrait démarrer par [{0}]
+memberImpl.invalid.package.end=le paquet est invalide, il devrait se terminer par: [{0}]
+memberImpl.large.payload=Le contenu est trop gros pour être géré par Tribes
+memberImpl.notEnough.bytes=Pas assez d'octets dans le paquet membre
+memberImpl.package.small=Le paquet du membre est trop petit pour être validé
+memberImpl.unableParse.hostname=Incapable d'analyser le nom d'hôte (hostname)
+
+staticMember.invalid.uuidLength=Un UUID doit faire exactement 16 octets et non [{0}]
diff --git a/java/org/apache/catalina/tribes/tipis/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/tipis/LocalStrings_fr.properties
new file mode 100644
index 0000000..4d0d42a
--- /dev/null
+++ b/java/org/apache/catalina/tribes/tipis/LocalStrings_fr.properties
@@ -0,0 +1,53 @@
+# 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.
+
+abstractReplicatedMap.broadcast.noReplies=La diffusion (broadcast) n'a pas recu de réponse, probablement un dépassement du temps imparti
+abstractReplicatedMap.heartbeat.failed=Impossible d'envoyer le message AbstractReplicatedMap.ping
+abstractReplicatedMap.init.completed=L''initialisation de l''AbstractReplicatedMap[{0}] s''est terminé en [{1}] ms
+abstractReplicatedMap.init.start=Initialisation de l''AbstractReplicatedMap avec le nom de contexte [{0}]
+abstractReplicatedMap.leftOver.ignored=Le message [{0}] a été ignoré.
+abstractReplicatedMap.leftOver.pingMsg=Le délai d''attente a été dépassé pour le message PING, le membre [{0}] a pu être enlevé de la structure du registre de membres
+abstractReplicatedMap.mapMember.unavailable=Le membre [{0}] n''est pas encore disponible
+abstractReplicatedMap.mapMemberAdded.added=Le membre de la structure répliquée a été ajouté: [{0}]
+abstractReplicatedMap.mapMemberAdded.nullMember=Notifié que le membre n''est pas disponible dans le registre de membres: [{0}]
+abstractReplicatedMap.member.disappeared=Le membre [{0}] a disparu, les entrées correspondantes seront déplacées sur le nouveau nœud
+abstractReplicatedMap.ping.stateTransferredMember=L''état du membre [{0}] est transféré mais il n''est pas encore disponible
+abstractReplicatedMap.ping.timeout=Le membre [{0}] dans la carte répliquée [{1}] a fait un timeout lors du traitement d''un ping
+abstractReplicatedMap.relocate.complete=La relocation des entrées de la structure répliquée a été finie en [{0}] ms
+abstractReplicatedMap.transferState.noReplies=État de transfert, 0 réponses, probablement un timeout
+abstractReplicatedMap.unable.deserialize.MapMessage=Impossible de désérialiser MapMessage
+abstractReplicatedMap.unable.diffObject=Impossible d'obtenir les différences de l'objet, il sera entièrement répliqué
+abstractReplicatedMap.unable.get=Incapable de répliquer les données pour une opération AbstractReplicatedMap.get
+abstractReplicatedMap.unable.put=Impossible de répliquer les données pour l'opération AbstractReplicatedMap.put
+abstractReplicatedMap.unable.relocate=Impossible de déplacer [{0}] sur un nouveau nœud de sauvegarde
+abstractReplicatedMap.unable.remove=Impossible de répliquer les données de sortie pour l'opération AbstractReplicatedMap.remove
+abstractReplicatedMap.unable.replicate=Impossible de répliquer les données
+abstractReplicatedMap.unable.retrieve=Impossible de récupérer les objets distants pour les clés: [{0}]
+abstractReplicatedMap.unable.transferState=Impossible de transférer l'état de la AbstractReplicatedMap
+abstractReplicatedMap.unableApply.diff=Impossible d''appliquer le diff à la clé: [{0}]
+abstractReplicatedMap.unableSelect.backup=Impossible de choisir un nœud de sauvegarde
+abstractReplicatedMap.unableSend.startMessage=Impossible d'envoyer le message de démarrage de la structure répliquée
+abstractReplicatedMap.unableStart=Impossible de démarrer la structure répliquée
+
+lazyReplicatedMap.unableReplicate.backup=Impossible de répliquer la clé de sauvegarde: [{0}]
+lazyReplicatedMap.unableReplicate.proxy=Incapable de répliquer la clé de proxy : [{0}] vers le secours (backup) : [{1}]. Raison : [{2}]
+
+mapMessage.deserialize.error.key=Erreur de désérialisation de la clé du MapMessage
+mapMessage.deserialize.error.value=Erreur de désérialisation de la valeur du MapMessage
+
+replicatedMap.member.disappeared=Le membre [{0}] a disparu, les entrées correspondantes seront déplacées sur un nouveau nœud
+replicatedMap.relocate.complete=La relocation des entrées de la structure répliquée a été accomplie en [{0}] ms
+replicatedMap.unable.relocate=Impossible de déplacer [{0}] sur un nouveau noeud auxiliaire.
+replicatedMap.unableReplicate.completely=Impossible de répliquer la clé de sauvegarde: [{0}], succès pour les nœuds: [{1}], échec pour les nœuds: [{2}]
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/transport/LocalStrings_fr.properties
similarity index 57%
copy from java/org/apache/tomcat/util/net/LocalStrings_fr.properties
copy to java/org/apache/catalina/tribes/transport/LocalStrings_fr.properties
index 0410d90..29cf395 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/tribes/transport/LocalStrings_fr.properties
@@ -13,6 +13,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# net resources
+PooledSender.senderDisconnectFail=Impossible de se déconnecter de l'envoyeur
 
+pooledSender.closed.queue=La queue est fermée
 
+receiverBase.bind.failed=Échec d''attachement en écoute de la réplication à l''adresse [{0}]
+receiverBase.socket.bind=Socket de réception du serveur attaché à : [{0}]
+receiverBase.udp.bind=Le socket serveur receveur est associé avec [{0}]
+receiverBase.unable.bind=Impossible d''attacher la socket serveur à [{0}], cela provoque une erreur.
+receiverBase.unable.bind.udp=Impossible d''associer le socket UDP à [{0}], propagation de l''erreur
diff --git a/java/org/apache/catalina/tribes/transport/bio/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_fr.properties
new file mode 100644
index 0000000..bb933f5
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/bio/LocalStrings_fr.properties
@@ -0,0 +1,40 @@
+# 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.
+
+bioReceiver.already.started=Le ServerSocket a déjà démarré
+bioReceiver.run.fail=Impossible d'exécuter l’écouteur de réplication
+bioReceiver.socket.closeFailed=Echec de fermeture de la connection
+bioReceiver.start.fail=Impossible de démarrer le receveur du cluster
+bioReceiver.threadpool.fail=Le ThreadPool n'a pas pu être initialisé, l'écouteur n'a pas démarré
+bioReceiver.threads.busy=Tous les fils d'exécution du serveur de réplication sont occupés, impossible de traiter plus de requêtes avant qu'un ne se libère
+
+bioReplicationTask.messageDataReceived.error=Erreur lors de messageDataReceived
+bioReplicationTask.reader.closeFailed=Echec de fermeture du lecteur
+bioReplicationTask.socket.closeFailed=Ecech de la fermeture du socket
+bioReplicationTask.unable.sendAck=Impossible de renvoyer une confirmation par le canal, il peut être déconnecté: [{0}]
+bioReplicationTask.unable.service=Incapable de traiter un socket BIO
+
+bioSender.ack.eof=EOF recontré sur le port local [{0}:{1,number,integer}]
+bioSender.ack.missing=Incapable de lire l'accusé de réception de [{0}:{1,number,integer}] en {2,number,integer] ms. Déconnexion de la socket et nouvel tentative.
+bioSender.ack.wrong=Il manque un ACK correct après la lecture de 10 octets sur le port local [{0}]: {1,number,integer}
+bioSender.closeSocket=Sender fermeture du socket vers [{0}:{1,number,integer}] (nombre de fermetures {2,number,integer})
+bioSender.disconnect=L'envoyeur s'est déconnecté de [{0}:{1,number,integer}] (nombre de déconnections {2,number,integer})
+bioSender.fail.AckReceived=Reçu une confirmation en échec: org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA
+bioSender.openSocket=L''expéditeur ouvre une socket vers [{0}:{1,number,integer}] ({2,number,integer} sockets ouvertes})
+bioSender.openSocket.failure=Echec d'ouverture du socket d'envoi [{0}:{1,number,integer} (nombre d'écecs d'ouverture {2,number,integer})
+bioSender.send.again=Envoyer les données à nouveau à [{0}:{1,number,integer}]
+
+pooledMultiSender.retrieve.fail=Impossible d'obtenir un envoyeur à partir du pool
+pooledMultiSender.unable.retrieve.sender=Impossible de récupéré un expéditeur de données. délai d''attente ([{0}] ms) dépassé
diff --git a/java/org/apache/catalina/tribes/transport/nio/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/transport/nio/LocalStrings_fr.properties
new file mode 100644
index 0000000..fbe2af7
--- /dev/null
+++ b/java/org/apache/catalina/tribes/transport/nio/LocalStrings_fr.properties
@@ -0,0 +1,57 @@
+# 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.
+
+nioReceiver.alreadyStarted=ServerSocketChannel est déjà démarré
+nioReceiver.cleanup.fail=Impossible de nettoyer lors de la fermeture du sélecteur
+nioReceiver.clientDisconnect=Le client de réplication est déconnecté, erreur lors du "polling" de clé. Le client est ignoré.
+nioReceiver.requestError=Impossible de traiter la requête dans NioReceiver
+nioReceiver.run.fail=Impossible d'exécuter l'écouteur de réplication
+nioReceiver.start.fail=Incapable de démarrer le récepteur de cluster
+nioReceiver.stop.fail=Incapable de femer le sélecteur de récepteur de cluster ("cluster receiver selector")
+nioReceiver.stop.threadRunning=Le thread NioReceiver ne s'est pas arrêté suffisamment rapidement, des erreurs peuvent se produire lorsque le sélecteur sera fermé
+nioReceiver.threadpool.fail=Le ThreadPool n'a pas pu être initialisé. Le Listener n'a pas démarré.
+nioReceiver.threadsExhausted=La clé du canal est enregistrée mais n''a pas reçue d''opérations qui l''intéressaient depuis [{0}] ms (annulé: [{1}]):[{2}] dernier accès: [{3}] cause possible: tous les threads sont utilisés, effectuez un dump des threads
+
+nioReplicationTask.error.register.key=Erreur lors de l''enregistrement de la clé en lecture: [{0}]
+nioReplicationTask.exception.drainChannel=Erreur rencontrée dans TcpReplicationThread.drainChannel
+nioReplicationTask.process.clusterMsg.failed=Le traitement du message du cluster a échoué
+nioReplicationTask.unable.ack=Impossible d''envoyer un ACK réponse par le canal, le canal peut avoir été déconnecté: [{0}]
+nioReplicationTask.unable.drainChannel.ioe=IOException pendant le traitement de la réplication, impossible de drainer le canal, cause probable: le socket gardé actif a été fermé [{0}]
+
+nioSender.already.connected=NioSender est déjà dans l'état connecté
+nioSender.datagram.already.established=Le canal de datagramme a déjà été établi, une connection peut être déjà en cours
+nioSender.key.inValid=La clé est invalide, elle doit avoir été annulée
+nioSender.not.connected=NioSender n'est pas connecté, cela ne devrait jamais arriver
+nioSender.receive.failedAck=Réception d'un échec de confirmation:org.apache.catalina.tribes.transport.Constants.FAIL_ACK_DATA
+nioSender.sender.disconnected=L'envoyeur s'est déconnecté, impossible d'envoyer la clé de sélection
+nioSender.socketChannel.already.established=Le canal du socket a déjà été établi, la connection est peut-être déjà en cours
+nioSender.unable.disconnect=Impossible de déconnecter le NioSender, msg=[{0}]
+nioSender.unable.receive.ack=Impossible de recevoir un message de confirmation, le canal a rencontré l'EOF
+nioSender.unknown.state=Les données sont dans un état inconnu. readyOps=[{0}]
+
+parallelNioSender.error.keepalive=Erreur lors du test de temps d''attente pour l''expéditeur [{0}]
+parallelNioSender.operation.timedout=L''opération a dépassé le temps imparti ([{0}] ms)
+parallelNioSender.send.fail=L''envoi d''un membre a échoué pour [{0}], le membre est considéré suspect
+parallelNioSender.send.fail.retrying=L''envoi au membre[{0}] ne fonctionne pas ; Marqué comme suspect et nouvel essai.
+parallelNioSender.send.failed=L'envoi NIO en parallèle a échoué
+parallelNioSender.sendFailed.attempt=Echec de l''envoi, tentative: [{0}] maximum:[{1}]
+parallelNioSender.sender.disconnected.notRetry=Pas de réessai d''envoi de [{0}], l''expéditeur s''est déconnecté
+parallelNioSender.sender.disconnected.sendFailed=L'envoi a échoué et l'envoyeur est déconnecté, pas de nouvel essai
+parallelNioSender.unable.setup.NioSender=Impossible d'installer un NioSender
+
+pooledParallelSender.sender.disconnected=Emetteur non connecté
+pooledParallelSender.unable.open=Impossible d'ouvrir le sélecteur NIO
+pooledParallelSender.unable.retrieveSender=Impossible d'obtenir un envoyeur depuis le pool
+pooledParallelSender.unable.retrieveSender.timeout=Impossible d''obtenir un expéditeur de données, temps d''attente dépassé ([{0}] ms)
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/util/LocalStrings_fr.properties
similarity index 50%
copy from java/org/apache/tomcat/util/net/LocalStrings_fr.properties
copy to java/org/apache/catalina/tribes/util/LocalStrings_fr.properties
index 0410d90..83a8e59 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/tribes/util/LocalStrings_fr.properties
@@ -13,6 +13,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# net resources
+arrays.keyoffset.outOfBounds=Le décalage (offset) de la clé est en-dehors des limites.
+arrays.length.outOfBounds=Pas assez de données dans la clé, la longueur dépasse les limites
+arrays.malformed.arrays=les tableaux d'octets doivent être représentés tels que {1,3,4,5,6}
+arrays.srcoffset.outOfBounds=srcoffset est hors limites
 
+executorFactory.not.running=L'Executor ne tourne pas, impossible de forcer une commande dans les files d'attente
+executorFactory.queue.full=La file d'attente est complète
 
+uuidGenerator.createRandom=La création d''une instance de SecureRandom pour le génération des UUID en utilisant [{0}] a pris [{1}] millisecondes
+uuidGenerator.unable.fit=Impossible de faire rentrer [{0}] octets dans le tableau, longueur: [{1}] longueur requise: [{2}]
diff --git a/java/org/apache/catalina/util/LocalStrings_fr.properties b/java/org/apache/catalina/util/LocalStrings_fr.properties
index b9e41f8..bde6b06 100644
--- a/java/org/apache/catalina/util/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/util/LocalStrings_fr.properties
@@ -13,17 +13,44 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-SecurityUtil.doAsPrivilege=Une exception s''est produite lors de l''execution du bloc PrivilegedExceptionAction.
+SecurityUtil.doAsPrivilege=Une exception s'est produite lors de l'execution du bloc PrivilegedExceptionAction.
+
+customObjectInputStream.logRequired=Un enregistreur ("logger") valide est requis pour filtrer par nom de classe
+customObjectInputStream.nomatch=La classe [{0}] n''est pas acceptée par l''expression régulière [{1}] qui autorise la désérialisation
 
 extensionValidator.extension-not-found-error=ExtensionValidator[{0}][{1}]: L''extension requise [{2}] est introuvable.
 extensionValidator.extension-validation-error=ExtensionValidator[{0}]: Impossible de trouver [{1}] extension(s) requise(s).
+extensionValidator.failload=Erreur de chargement de l''extension [{0}]
 extensionValidator.web-application-manifest=Web Application Manifest
 
 hexUtil.bad=Mauvais digit hexadecimal
 hexUtil.odd=Nombre impair de digits hexadecimaux
 
-parameterMap.locked=Aucune modification n''est authorisée sur un ParameterMap verrouillé
+introspection.classLoadFailed=Echec du chargement de la classe [{0}]
+
+lifecycleBase.alreadyDestroyed=La méthode destroy() a été appelée sur le composant [{0}] après que destroy() ait déjà été appelé, le deuxième appel sera ignoré
+lifecycleBase.alreadyStarted=La méthode start() a été appelée sur le composant [{0}] après que start() ait déjà été appelé, le deuxième appel sera ignoré
+lifecycleBase.alreadyStopped=La méthode stop() a été appelée sur le composant [{0}] après que stop() ait déjà été appelé, le deuxième appel sera ignoré
+lifecycleBase.destroyFail=Echec de la destruction du composant [{0}]
+lifecycleBase.destroyStopFail=L''appel de stop() sur le composant en échec [{0}] pour causer un nettoyage a échoué
+lifecycleBase.initFail=Echec d''initialisation du composant [{0}]
+lifecycleBase.invalidTransition=Un transition de Lifecycle invalide a été tentée ([{0}]) pour le composant [{1}] dans l''état [{2}]
+lifecycleBase.setState=Fixe l''état pour [{0}] à [{1}]
+lifecycleBase.startFail=Echec de démarrage du composant [{0}]
+lifecycleBase.stopFail=Echec de l''arrêt du composant [{0}]
+
+lifecycleMBeanBase.registerFail=Echec de l''enregistrement de l''objet [{0}] avec le nom [{1}] pendant l''initialisation du composant
+
+netmask.cidrNegative=Le CIDR [{0}] est négatif
+netmask.cidrNotNumeric=Le CIDR [{0}] n''est pas un nombre
+netmask.cidrTooBig=Le CIDR [{0}] est plus grand que la longueur de l''adresse [{1}]
+netmask.invalidAddress=L''adresse [{0}] est invalide
+
+parameterMap.locked=Aucune modification n'est autorisée sur un ParameterMap verrouillé
 
-resourceSet.locked=Aucune modification n''est authorisée sur un ResourceSet verrouillé
+resourceSet.locked=Aucune modification n'est autorisée sur un ResourceSet verrouillé
 
+sessionIdGeneratorBase.createRandom=La création de l''instance de SecureRandom pour le générateur d''id de session en utilisant [{0}] a pris [{1}] millisecondes
 sessionIdGeneratorBase.random=Exception durant l''initialisation de la classe du générateur de nombre aléatoire [{0}]
+sessionIdGeneratorBase.randomAlgorithm=Erreur lors de l''initialisation du générateur de nombres aléatoires en utilisant l''algorithme [{0}]
+sessionIdGeneratorBase.randomProvider=Exception lors de l''initialisation du générateur de nombres aléatoires utilisant le fournisseur [{0}]
diff --git a/java/org/apache/catalina/valves/LocalStrings_fr.properties b/java/org/apache/catalina/valves/LocalStrings_fr.properties
index d6fa528..6d866a8 100644
--- a/java/org/apache/catalina/valves/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/valves/LocalStrings_fr.properties
@@ -27,14 +27,16 @@ accessLogValve.writeFail=Impossible d''écrire le message de log [{0}]
 
 errorReportValve.description=description
 errorReportValve.exception=exception
-errorReportValve.exceptionReport=Rapport d''exception
+errorReportValve.exceptionReport=Rapport d'exception
 errorReportValve.message=message
+errorReportValve.noDescription=Pas de description disponible
 errorReportValve.note=note
 errorReportValve.rootCause=cause mère
 errorReportValve.rootCauseInLogs=La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de ce serveur.
 errorReportValve.statusHeader=État HTTP {0} – {1}
-errorReportValve.statusReport=Rapport d''état
+errorReportValve.statusReport=Rapport d'état
 errorReportValve.type=Type
+errorReportValve.unknownReason=Raison inconnue.
 
 extendedAccessLogValve.badXParam=Le format du paramètre étendu est invalide, il doit être de la forme  'x-#(...)'
 extendedAccessLogValve.badXParamValue=La valeur du paramètre étendu est invalide pour la requête de Servlet [{0}]
@@ -44,32 +46,96 @@ extendedAccessLogValve.noClosing=Une parenthèse de fermeture n'a pas été trou
 extendedAccessLogValve.patternParseError=Erreur lors de l''analyse du modèle [{0}]
 
 http.400.desc=La requête envoyée par le client était syntaxiquement incorrecte.
+http.400.reason=Requête invalide
 http.401.desc=La requête nécessite une authentification HTTP.
+http.401.reason=Non authorisé
 http.402.desc=Un paiement est demandé pour accéder à cette ressource.
-http.403.desc=L''accès à la ressource demandée a été interdit.
-http.404.desc=La ressource demandée n''est pas disponible.
-http.405.desc=La méthode HTTP spécifiée n''est pas autorisée pour la ressource demandée.
-http.406.desc=La ressource identifiée par cette requête n''est capable de générer des réponses qu''avec des caractéristiques incompatible avec la directive "accept" présente dans l''entête de requête.
-http.407.desc=Le client doit d''abord s''authentifier auprès du relais.
-http.408.desc=Le client n''a pas produit de requête pendant le temps d''attente du serveur.
-http.409.desc=La requête ne peut être finalisée suite à un conflit lié à l''état de la ressource.
-http.410.desc=La ressource demandée n''est pas disponible, et aucune addresse de rebond (forwarding) n''est connue.
-http.411.desc=La requête ne peut être traitée sans définition d''une taille de contenu (content length).
-http.412.desc=Une condition préalable demandée n''est pas satisfaite pour cette requête.
-http.413.desc=L''entité de requête est plus importante que ce que le serveur veut ou peut traiter.
-http.414.desc=Le serveur a refusé cette requête car l''URI de requête est trop longue.
-http.415.desc=Le serveur a refusé cette requête car l''entité de requête est dans un format non supporté par la ressource demandée avec la méthode spécifiée.
-http.416.desc=La plage d''octets demandée (byte range) ne peut être satisfaite.
-http.417.desc=L''attente indiquée dans la directive "Expect" de l''entête de requête ne peut être satisfaite.
+http.402.reason=Paiement requis
+http.403.desc=L'accès à la ressource demandée a été interdit.
+http.403.reason=Interdit
+http.404.desc=La ressource demandée n'est pas disponible.
+http.404.reason=Non trouvé
+http.405.desc=La méthode HTTP spécifiée n'est pas autorisée pour la ressource demandée.
+http.405.reason=Méthode non autorisée
+http.406.desc=La ressource identifiée par cette requête n'est capable de générer des réponses qu'avec des caractéristiques incompatible avec la directive "accept" présente dans l'entête de requête.
+http.406.reason=Inacceptable
+http.407.desc=Le client doit d'abord s'authentifier auprès du relais.
+http.407.reason=Authentification Proxy est requise
+http.408.desc=Le client n'a pas produit de requête pendant le temps d'attente du serveur.
+http.408.reason=Timeout de la requête
+http.409.desc=La requête ne peut être finalisée suite à un conflit lié à l'état de la ressource.
+http.409.reason=Conflit
+http.410.desc=La ressource demandée n'est pas disponible, et aucune adresse de rebond (forwarding) n'est connue.
+http.410.reason=Disparu
+http.411.desc=La requête ne peut être traitée sans définition d'une taille de contenu (content length).
+http.411.reason=Une longueur est requise
+http.412.desc=Une condition préalable demandée n'est pas satisfaite pour cette requête.
+http.412.reason=Erreur dans la pré-condition
+http.413.desc=L'entité de requête est plus importante que ce que le serveur veut ou peut traiter.
+http.413.reason=Les données sont trop grandes
+http.414.desc=Le serveur a refusé cette requête car l'URI de requête est trop longue.
+http.414.reason=L'URI est trop longue
+http.415.desc=Le serveur a refusé cette requête car l'entité de requête est dans un format non supporté par la ressource demandée avec la méthode spécifiée.
+http.415.reason=Type de média non supporté
+http.416.desc=La plage d'octets demandée (byte range) ne peut être satisfaite.
+http.416.reason=Plage non réalisable
+http.417.desc=L'attente indiquée dans la directive "Expect" de l'entête de requête ne peut être satisfaite.
+http.417.reason=L'expectation a échouée
+http.421.desc=La requête a été dirigée vers un serveur qui est incapable de produire une réponse.
+http.421.reason=Requête mal dirigée
 http.422.desc=Le serveur a compris le type de contenu (content type) ainsi que la syntaxe de la requête mais a été incapable de traiter les instructions contenues.
+http.422.reason=Impossible de traiter cette entité
 http.423.desc=La ressource source ou destination de la méthode est verrouillée.
-http.500.desc=Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.
+http.423.reason=Verrouillé
+http.424.desc=La méthode n'a pas pu être exécutée sur la ressource parce qu'elle dépendait d'une autre action qui a échouée
+http.424.reason=Echec de dépendence
+http.426.desc=Le serveur a refusé de traiter cette requête en utilisant le protocole actuel mais pourrait le faire si le client en utilise un autre
+http.426.reason=Mise à jour du protocole requise
+http.428.desc=Le serveur d'origine exige que la requête soit conditionnelle
+http.428.reason=Précondition requise
+http.429.desc=L'utilisateur a effectué une nombre de requêtes trop élevé dans un laps de temps trop court (limitation de fréquence)
+http.429.reason=Trop de requêtes
+http.431.desc=Le serveur refuse de traiter la requête parce que ses champs d'en-tête sont trop gros
+http.431.reason=Les champs d'en-tête de la requête sont trop gros
+http.451.desc=Le serveur a refusé cette requête pour des raisons légales
+http.451.reason=Indisponible pour des raisons légales
+http.500.desc=Le serveur a rencontré une erreur interne qui l'a empêché de satisfaire la requête.
+http.500.reason=Erreur interne du serveur
 http.501.desc=Le serveur ne supporte pas la fonctionnalité demandée pour satisfaire cette requête.
-http.502.desc=Le serveur a reçu une réponse invalide d''un serveur qu''il consultait en tant que relais ou passerelle.
-http.503.desc=Le service demandé n''est pas disponible actuellement.
-http.504.desc=Le serveur a reçu un dépassement de delai (timeout) d''un serveur amont qu''il consultait en tant que relais ou passerelle.
+http.501.reason=Non implémentée
+http.502.desc=Le serveur a reçu une réponse invalide d'un serveur qu'il consultait en tant que relais ou passerelle.
+http.502.reason=Mauvaise passerelle
+http.503.desc=Le service demandé n'est pas disponible actuellement.
+http.503.reason=Service indisponible
+http.504.desc=Le serveur a reçu un dépassement de délai (timeout) d'un serveur amont qu'il consultait en tant que relais ou passerelle.
+http.504.reason=Timeout de la passerelle
 http.505.desc=Le serveur ne supporte pas la version demandée du protocole HTTP.
-http.507.desc=L''espace disponible est insuffisant pour enregistrer l''état de la ressource après exécution de cette méthode.
+http.505.reason=Version HTTP non supportée
+http.506.desc=Le serveur a rencontré une erreur de configuration interne: la variante choisie de la ressource est configurée pour mener elle-même la négociation de contenu de manière transparente, et n'est donc pas le bon endroit pour la négociation elle-même
+http.506.reason=506 Variant Also Negotiates (RFC 2295) (référence circulaire)
+http.507.desc=L'espace disponible est insuffisant pour enregistrer l'état de la ressource après exécution de cette méthode.
+http.507.reason=Stockage insuffisant
+http.508.desc=Le serveur a mis fin à une opération car il a rencontré une boucle infinie en traitant une requête avec "Depth: infinity"
+http.508.reason=Boucle détectée
+http.510.desc=La requête ne correspond pas à la politique d'accès pour cette ressource
+http.510.reason=Non étendu
+http.511.desc=Le client doit s'authentifier pour accéder au réseau.
+http.511.reason=L’authentification du réseau est nécessaire
 
 jdbcAccessLogValve.close=Echec de fermeture de la base de donnée
 jdbcAccessLogValve.exception=Exception en insérant l'entrée de l'accès
+
+remoteCidrValve.invalid=La configuration fournie pour [{0}] est invalide, voir les précédents messages pour plus de détails
+remoteCidrValve.noRemoteIp=Le client n'a pas d'adresse IP, requête interdite
+
+remoteIpValve.invalidPortHeader=La valeur de port [{0}] trouvée dans l''en-tête HTTP [{1}] est invalide
+
+requestFilterValve.configInvalid=Un ou plusieurs paramètres de configuration spécifiés pour ce Remote[Addr|Host]Valve ont empêché la Valve et le conteneur parent de démarrer
+requestFilterValve.deny=Refus de la requête pour [{0}] basé sur la propriété [{1}]
+
+sslValve.certError=Impossible de traiter le certificat [{0}] pour créer un objet java.security.cert.X509Certificate
+sslValve.invalidProvider=Le fournisseur SSL spécifié pour le connecteur associé avec cette requête de [{0}] est invalide, le certificat n''a pas pu être traité
+
+stuckThreadDetectionValve.notifyStuckThreadCompleted=Le Thread [{0}] (id=[{3}]) qui a été préalablement rapporté comme étant bloqué s''est terminé, il a été actif pendant approximativement [{1}] millisecondes, il y a [{2}] thread(s) au total qui sont surveillés par cette valve et qui pourraient être bloqués
+stuckThreadDetectionValve.notifyStuckThreadDetected=Le Thread [{0}] (id=[{6}]) a été actif depuis [{1}] millisecondes (depuis [{2}]) pour traiter la même requête pour [{4}] et pourrait être bloqué (le seuil configurable est de [{5}] secondes pour cette StuckThreadDetectionValve), il y a [{3}] thread(s) au total qui sont surveillés par cette valve et qui pourraient être bloqués
+stuckThreadDetectionValve.notifyStuckThreadInterrupted=Le Thread [{0}] (id=[{5}]) a été interrompu car il a été actif depuis [{1}] millisecondes (depuis [{2}]) pour traiter la même requête pour [{3}] et était probablement bloqué (le seuil configurable est de [{4}] secondes pour cette StuckThreadDetectionValve)
diff --git a/java/org/apache/coyote/LocalStrings_fr.properties b/java/org/apache/coyote/LocalStrings_fr.properties
new file mode 100644
index 0000000..ad47ada
--- /dev/null
+++ b/java/org/apache/coyote/LocalStrings_fr.properties
@@ -0,0 +1,53 @@
+# 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.
+
+abstractConnectionHandler.connectionsGet=Trouvé le processeur [{0}] pour le socket [{1}]
+abstractConnectionHandler.error=Erreur de lecture de la requête, ignorée
+abstractConnectionHandler.ioexception.debug=Les IOException sont normales et sont ignorées
+abstractConnectionHandler.negotiatedProcessor.fail=Impossible de créer un processeur pour le protocole négocié [{0}]
+abstractConnectionHandler.process=Traitement du socket [{0}] avec le statut [{1}]
+abstractConnectionHandler.processorPop=Retrait du processeur [{0}] du cache
+abstractConnectionHandler.protocolexception.debug=Les ProtocolExceptions sont normales et sont ignorées
+abstractConnectionHandler.socketexception.debug=Les SocketException sont normales et sont ignorées
+abstractConnectionHandler.upgradeCreate=Création du processeur pour l''upgrade [{0}] du wrapper du socket [{1}]
+
+abstractProcessor.fallToDebug=\ Note : les occurrences suivantes d'erreur d'analyse de la requête seront enregistrées au niveau DEBUG
+abstractProcessor.hostInvalid=L''hôte [{0}] n''est pas valide
+abstractProcessor.httpupgrade.notsupported=La promotion (upgrade) HTTP n'est pas supporté par ce protocole
+abstractProcessor.nonContainerThreadError=Un erreur s'est produite hors d'un des fils d'exécution du conteneur, la connection sera immédiatement fermée
+abstractProcessor.pushrequest.notsupported=Le requêtes push du serveur ne sont pas supportées par ce protocole
+abstractProcessor.socket.ssl=Exception lors de l'obtention des attributs SSL
+
+abstractProtocol.mbeanDeregistrationFailed=Erreur lors du désenregistrement du mbean [{0}] dans le serveur [{1}]
+
+abstractProtocolHandler.destroy=Destruction du gestionnaire de protocole [{0}]
+abstractProtocolHandler.init=Initialisation du gestionnaire de protocole [{0}]
+abstractProtocolHandler.pause=Le gestionnaire de protocole [{0}] est mis en pause
+abstractProtocolHandler.resume=Reprise du gestionnaire de protocole [{0}]
+abstractProtocolHandler.setAttribute=Fixe l''attribut [{0}] avec la valeur [{1}]
+abstractProtocolHandler.start=Démarrage du gestionnaire de protocole [{0}]
+abstractProtocolHandler.stop=Arrêt du gestionnaire de protocole [{0}]
+
+asyncStateMachine.invalidAsyncState=L''appel à [{0}] n''est pas valide pour une requête dans l''état Async [{1}]
+
+request.notAsync=Il n'est possible de passer en mode d'entrée-sorties non bloquantes que lors de traitements asynchrones ou après mise à niveau depuis HTTP
+request.nullReadListener=L'écouteur passé à setReadListener() ne peut pas être null
+request.readListenerSet=L'écouteur des lectures non bloquantes a déjà été défini
+
+response.encoding.invalid=L''encodage [{0}] n''est pas reconnu par le JRE
+response.notAsync=Il n'est possible de passer en mode d'entrée-sorties non bloquantes que lors de traitements asynchrones ou après mise à niveau depuis HTTP
+response.notNonBlocking=Il n'est pas permis d'appeler isReady() quand la réponse n'a pas été mise en mode non-bloquant
+response.nullWriteListener=L'écouteur passé à setWriteListener() ne peut pas être null
+response.writeListenerSet=La cible des notifications en écriture ("write listener") non-bloquantes a déjà été spécifiée
diff --git a/java/org/apache/coyote/ajp/LocalStrings_fr.properties b/java/org/apache/coyote/ajp/LocalStrings_fr.properties
new file mode 100644
index 0000000..4ad6f41
--- /dev/null
+++ b/java/org/apache/coyote/ajp/LocalStrings_fr.properties
@@ -0,0 +1,34 @@
+# 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.
+
+ajpMessage.invalidPos=Une lecture d''octets à la position [{0}] a été demandée ce qui est au-delà de la fin du message AJP
+
+ajpmessage.invalid=Message invalide reçu avec la signature [{0}]
+ajpmessage.invalidLength=Message invalide reçu avec une longueur [{0}]
+ajpmessage.null=Impossible d'ajouter une valeur nulle.
+ajpmessage.overflow=Débordement du tampon en ajoutant [{0}] octets à la position [{1}]
+
+ajpprocessor.certs.fail=La conversion du certificat a échouée
+ajpprocessor.failedread=La lecture sur le socket a échoué
+ajpprocessor.failedsend=Impossible d'envoyer le message AJP
+ajpprocessor.header.error=Erreur de traitement du message d'en-tête
+ajpprocessor.header.tooLong=Un en-tête de message de taille [{0}] a été reçu mais la packtSize est de seulement [{1}]
+ajpprocessor.readtimeout=Timeout lors de la lecture de données sur le socket
+ajpprocessor.request.prepare=Erreur lors de la préparation de la requête
+ajpprocessor.request.process=Erreur de traitement de la requête
+
+ajpprotocol.noSSL=SSL n''est pas supporté par AJP, la configuration de l''hôte SSL pour [{0}] a été ignorée
+ajpprotocol.noUpgrade=L''upgrade n''est pas supporté par AJP.  La configuration UpgradeProtocol pour [{0}] a été ignorée
+ajpprotocol.noUpgradeHandler=AJP ne supporte pas la mise à niveau (upgrade) de HTTP/1.1, le HttpUpgradeHandler [{0}] ne peut pas être utilisé
diff --git a/java/org/apache/coyote/http11/LocalStrings_fr.properties b/java/org/apache/coyote/http11/LocalStrings_fr.properties
index f98460a..0a004e0 100644
--- a/java/org/apache/coyote/http11/LocalStrings_fr.properties
+++ b/java/org/apache/coyote/http11/LocalStrings_fr.properties
@@ -13,5 +13,40 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+abstractHttp11Protocol.alpnConfigured=Le connecteur [{0}] a été configuré pour supporter la négociation de [{1}] avec ALPN
+abstractHttp11Protocol.alpnWithNoAlpn=Le gestionnaire de mise à niveau [{0}] pour [{1}] ne supporte qu''une mise à niveau via ALPN mais il a été configuré pour le connecteur [{2}] qui ne supporte pas ALPN
+abstractHttp11Protocol.httpUpgradeConfigured=Le connecteur [{0}] a été configuré pour supporter la mise à niveau de HTTP vers [{1}]
+
+http11processor.fallToDebug=\ Note: toutes les occurrences suivantes d'erreurs d'analyse des requêtes HTTP seront enregistrées au niveau DEBUG
+http11processor.header.parse=Erreur lors de l'analyse d'un en-tête de requête HTTP
+http11processor.neverused=Cette méthode ne devrait jamais être utilisée
+http11processor.request.finish=Erreur en terminant la requête
+http11processor.request.inconsistentHosts=L'hôte spécifié dans la ligne de requête ne correspond pas à celui de l'en-tête hôte
+http11processor.request.invalidScheme=La requête HTTP contenait une URi absolue avec un schéma invalide
+http11processor.request.invalidUri==La requête HTTP contenait une URI invalide
+http11processor.request.invalidUserInfo=La requête HTTP contenait un URI absolu avec un composant "userinfo" invalide
+http11processor.request.multipleHosts=La requête contenait plusieurs en-têtes hôtes
+http11processor.request.noHostHeader=La requ6ete HTTP/1.1 ne contient pas d'en-tête host
+http11processor.request.prepare=Echec de préparation de la requête
+http11processor.request.process=Erreur de traitement de la requête
+http11processor.response.finish=Erreur en finissant la réponse
+http11processor.sendfile.error=Erreur d'envoi des données avec sendfile, cela peut être causé par des attributs de démarrage ou de fin incorrects dans la requête
+http11processor.socket.info=Exception pendant la requête d'information sur le socket.
+
+iib.available.readFail=Une lecture non-bloquante a échoué lors de la détermination préalable de données disponibles
 iib.eof.error=Fin de flux (EOF) inattendue à la lecture sur la socket
+iib.failedread.apr=Echec de lecteur avec le code d''erreur APR [{0}]
+iib.filter.npe=Impossible d'ajouter un filtre null
+iib.invalidHttpProtocol=Un caractère invalide a été trouvé dans le protocole HTTP
+iib.invalidRequestTarget=Un caractère invalide a été trouvé dans la cible de la requête, les caractères valides sont définis dans RFC 7230 et RFC 3986
+iib.invalidheader=La ligne d''en-être HTTP [{0}] n''est pas conforme à la RFC 7230 et a été ignorée
+iib.invalidmethod=Caractère invalide trouvé dans le nom de méthode.  Les noms HTTP doivent être des "token".
+iib.parseheaders.ise.error=Etat inattendu, les en-êtres ont déjà été traités, il est possible que le buffer n'ait pas été recyclé
+iib.readtimeout=Délai d'attente dépassé en lisant des données du socket
 iib.requestheadertoolarge.error=L'entête de requête est trop important
+iib.socketClosed=Le socket a été fermé dans un autre thread
+
+iob.failedwrite=Echec d'écriture
+iob.failedwrite.ack=Echec d'envoi de la réponse HTTP 100 Continue
+iob.illegalreset=La réponse ne peut être modifiée après avoir été finalisée ("committed")
+iob.responseheadertoolarge.error=Essai d'écriture de plus de données dans les en-t^tes de réponse, qu'il n'y a de place disponible dans le tampon.  Augmentez maxHttpHeaderSize pour le connecteur, ou écrivez moins de données dans les en-têtes de réponse.
diff --git a/java/org/apache/coyote/http11/filters/LocalStrings_fr.properties b/java/org/apache/coyote/http11/filters/LocalStrings_fr.properties
new file mode 100644
index 0000000..3b661a1
--- /dev/null
+++ b/java/org/apache/coyote/http11/filters/LocalStrings_fr.properties
@@ -0,0 +1,27 @@
+# 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.
+
+chunkedInputFilter.eos=Fin du flux inattendue durant la lecture du corps de la requête
+chunkedInputFilter.eosTrailer=Fin inattendue de flux lors de la lecture des en-têtes de fin (trailer headers)
+chunkedInputFilter.error=Aucune donnée disponible suite à l'erreur précédente
+chunkedInputFilter.invalidCrlf=Séquence de fin de ligne invalide, un caractère autre que CR ou LF a été trouvé
+chunkedInputFilter.invalidCrlfCRCR=Séquence de fin de ligne invalide, CR CR
+chunkedInputFilter.invalidCrlfNoCR=Terminateur de ligne incorrect (manque CR devant LF)
+chunkedInputFilter.invalidCrlfNoData=Séquence de fin de ligne invalide (aucune donnée disponible en lecture)
+chunkedInputFilter.invalidHeader=En-tête de morceau (chunk) invalide
+chunkedInputFilter.maxExtension=maxExtensionSize a été dépassé
+chunkedInputFilter.maxTrailer=maxTrailerSize a été dépassé
+
+inputFilter.maxSwallow=maxSwallowSize a été dépassé
diff --git a/java/org/apache/coyote/http11/upgrade/LocalStrings_fr.properties b/java/org/apache/coyote/http11/upgrade/LocalStrings_fr.properties
new file mode 100644
index 0000000..75f1790
--- /dev/null
+++ b/java/org/apache/coyote/http11/upgrade/LocalStrings_fr.properties
@@ -0,0 +1,36 @@
+# 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.
+
+upgrade.sis.errorCloseFail=Impossible de fermer l'InputStream proprement après une précédente erreur
+upgrade.sis.isFinished.ise=Il est illégal d'appeler isFinished() quand le ServletInputStream n'est pas en mode non bloquant, c'est à dire que setReadListener() doit d'abord être appelé
+upgrade.sis.isReady.ise=il est illégal d'appeler isReady() quand le ServletInputStream n'est pas en mode non bloquant, c'est à dire que setReadListener() doit d'abord être appelé
+upgrade.sis.onErrorFail=Le traitement de onError pour le ReadListener configuré a causé cette erreur qui a été avalée
+upgrade.sis.read.closed=Le flux d'entrée (InputStream) a été fermé
+upgrade.sis.read.ise=Il est interdit d'appeler une des méthodes read() en mode non bloquant avant de d'abord vérifier qu'il y a des données disponibles en utilisant isReady()
+upgrade.sis.readListener.null=Il est illégal de passer un argument null à setReadListener()
+upgrade.sis.readListener.set=Il est interdit d'appeler setReadListener() plus d'une fois pour une même connection upgradée
+upgrade.sos.canWrite.ise=il est illégal d'appeler canWrite() quand le ServletOutputStream n'est pas en mode non bloquant, c'est à dire que setWriteListener() doit d'abord être appelé
+upgrade.sos.errorCloseFail=Impossible de fermer l'OutputStream proprement après une précédente erreur
+upgrade.sos.onErrorFail=Le traitement de onError pour le WriteListener configuré a causé cette erreur qui a été avalée
+upgrade.sos.write.closed=L'OutputSteam a été fermée
+upgrade.sos.write.ise=Il est interdit d'appeler une des méthodes write() en mode non bloquant avant de d'abord vérifier qu'il y a de la place disponible en utilisant isReady()
+upgrade.sos.writeListener.null=Il est illégal de passer un argument null à setWriteListener()
+upgrade.sos.writeListener.set=Il est interdit d'appeler setWriteListener() plus d'une fois pour une même connection upgradée
+
+upgradeProcessor.isCloseFail=Impossible de fermer l'InputStream associée avec la connection upgradée
+upgradeProcessor.osCloseFail=Impossible de fermer l'OutputStream associée avec la connection upgradée
+upgradeProcessor.requiredClose=Fermeture de la connection upgradée à cause de l''état du closeRequired des flux: Entrée [{0}] Sortie [{1}]
+upgradeProcessor.stop=Fermeture de la connection upgradée car l'état du socket est STOP
+upgradeProcessor.unexpectedState=Fermeture inattendue de la connection upgradée alors que le statut du socket en lecture est [{0}]
diff --git a/java/org/apache/coyote/http2/LocalStrings_fr.properties b/java/org/apache/coyote/http2/LocalStrings_fr.properties
new file mode 100644
index 0000000..17dbc81
--- /dev/null
+++ b/java/org/apache/coyote/http2/LocalStrings_fr.properties
@@ -0,0 +1,168 @@
+# 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.
+
+abstractStream.windowSizeDec=Connection [{0}], Flux [{1}], réduction de la fenêtre de contrôle de flux de [{2}] à [{3}]
+abstractStream.windowSizeInc=Connection [{0}], Stream [{1}], augmentez la taille de la fenêtre de contrôle de flux de [{2}] à [{3}]
+abstractStream.windowSizeTooBig=Connection [{0}], Flux [{1}], L''augmentation de la taille de la fenêtre de [{2}] à [{3}] a excédé le maximum autorisé
+
+connectionPrefaceParser.eos=Fin de flux inattendue lors de la lecture de la préface du client, seuls [{0}] octets ont été lus
+connectionPrefaceParser.ioError=Echec de la lecture des octets de la préface du client
+connectionPrefaceParser.mismatch=Une séquence inattendue d''octets a été recue au début de la préface  client [{0}]
+
+connectionSettings.debug=Connection [{0}], Paramètre type [{1}] mis à [{2}]
+connectionSettings.enablePushInvalid=Connection [{0}], La valeur demandée pour activer le push [{1}] n''est pas une de celles permises (zéro ou un)
+connectionSettings.headerTableSizeLimit=La Connection [{0}] a essayé de configurer une taille de [{1}] pour la table des en-têtes (headers), mais la limite est 16k
+connectionSettings.maxFrameSizeInvalid=Connection [{0}], la taille maximum de trame demandée  [{1}] est en-dehors des limites permises [{2}] - [{3}]
+connectionSettings.unknown=Connection [{0}], Un paramètre inconnu avec l''identifiant [{1}] et la valeur [{2}] a été ignoré
+connectionSettings.windowSizeTooBig=Connection [{0}], La taille de fenêtre demandée [{1}] est plus grande que la valeur maximale autorisée [{2}]
+
+frameType.checkPayloadSize=La taille de données [{0}] n''est pas valide pour une trame de type [{1}]
+frameType.checkStream=Type de trame invalide [{0}]
+
+hpack.integerEncodedOverTooManyOctets=Un entier de taille variable de HPACK a été encodé sur trop d''octets, le maximum est de [{0}]
+hpack.invalidCharacter=Le caractère Unicode [{0}] ayant le code point [{1}] ne peut être encodé, parce qu''il est en-dehors de l''éventail permis 0-255.
+
+hpackEncoder.encodeHeader=Encodage de l''en-tête [{0}] avec la valeur [{1}]
+
+hpackdecoder.headerTableIndexInvalid=L''index [{0}] dans la table des en-têtes n''est pas valide car il y a [{1}] en-têtes statiques et [{2}] en-têtes dynamiques
+hpackdecoder.maxMemorySizeExceeded=La taille de la table des en-têtes [{0}] dépasse la taille maximale [{1}]
+hpackdecoder.notImplemented=Pas encore implémenté
+hpackdecoder.nullHeader=L''en-tête à l''index [{0}] est nul
+hpackdecoder.tableSizeUpdateNotAtStart=Toute mise à jour de la taille de la table doit être faite avant le début d'un bloc d'en-têtes
+hpackdecoder.zeroNotValidHeaderTableIndex=Zéro n'est pas un index valide dans la table des en-têtes
+
+hpackhuffman.huffmanEncodedHpackValueDidNotEndWithEOS=La valeur encodée en Huffman dans les en-têtes HPACK n'avait pas de données tampon d'EOS
+hpackhuffman.stringLiteralTooMuchPadding=Plus de 7 bits de données tampon de fin de flux ont été fournis à la fin d'une chaîne encodée avec Huffman
+
+http2Parser.headerLimitCount=Connection [{0}], Slux [{1}], Trop d''en-têtes
+http2Parser.headerLimitSize=Connection [{0}], Flux [{1}], La taille totale des en-têtes est trop grosse
+http2Parser.headers.wrongFrameType=Connection [{0}], Le traitement des en-têtes est en cours pour le flux [{1}] mais une trame de type [{2}] a été reçue
+http2Parser.headers.wrongStream=Connection [{0}], en têtes en cours pour le flux [{1}] mais une trame du flux [{2}] a été reçue
+http2Parser.nonZeroPadding=Connection [{0}], Stream [{1}], rembourrage (padding) non-zéro recu
+http2Parser.payloadTooBig=La taille des données est de [{0}] octets mais la taille maximale de la trame est de [{1}]
+http2Parser.preface.invalid=Une préface de connection invalide a été reçue
+http2Parser.preface.io=Impossible de lire la préface de la connection
+http2Parser.processFrame=Connection [{0}], Flux [{1}], Type de trame [{2}], Drapeaux [{3}], Taille des données [{4}]
+http2Parser.processFrame.tooMuchPadding=Connection [{0}], Flux [{1}], La taille [{2}] des données tampon est trop grosse pour la taille de données [{3}]
+http2Parser.processFrame.unexpectedType=Attendu une trame de type [{0}] mais reçu une trame de type [{1}]
+http2Parser.processFrameContinuation.notExpected=Connection [{0}], La trame de continuation a été reçue pour le flux [{1}] alors qu''aucun trainement d''en-têtes n''était en cours
+http2Parser.processFrameData.lengths=Connection [{0}], Flux [{1}], Taille des données, [{2}], Taille des données tampon [{3}]
+http2Parser.processFrameData.window=Connection [{0}], le client a envoyé plus de données que la "stream window" ne le permet
+http2Parser.processFrameGoaway.payloadTooSmall=Connection [{0}]: La taille de données du Goaway était [{1}] ce qui est moins que le minimum de 8
+http2Parser.processFrameHeaders.decodingDataLeft=Des données restent après le décodage de HPACK, elles auraient dû être consommées
+http2Parser.processFrameHeaders.decodingFailed=Une erreur de décodage HPACK des en-têtes HTTP s'est produite
+http2Parser.processFrameHeaders.payload=Connection [{0}], Flux [{1}], Traitement des en-têtes avec une taille de données de [{2}]
+http2Parser.processFramePing.invalidPayloadSize=Une trame de paramètres avec une taille de données invalide de [{0}] a été reçue (elle devrait être de 8)
+http2Parser.processFramePriority.invalidParent=Connection [{0}], Flux [{1}], Un flux ne peut pas dépendre de lui-même
+http2Parser.processFramePriority.invalidPayloadSize=Trame prioritaire recue avec une charge utile de taille [{0}] (devrait être 5)
+http2Parser.processFramePushPromise=Connexion [{0}], Flux (Stream) [{1}], les trames de promesse d''envoi ("Push promise frames") ne doivent pas être envoyées par le client.
+http2Parser.processFrameSettings.ackWithNonZeroPayload=La trame de paramètres a été reçue avec un indicateur ACK activé et des données présentes
+http2Parser.processFrameSettings.invalidPayloadSize=La trame de paramètres a été reçue avec une taille de données de [{0}] qui n''est pas un multiple de 6
+http2Parser.processFrameWindowUpdate.debug=Connection [{0}], Flux [{1}], Incrémentation de [{2}] de la taille de fenêtre
+http2Parser.processFrameWindowUpdate.invalidIncrement=La trame de mise à jour de la fenêtre a été reçue avec un incrément invalide [{0}]
+http2Parser.processFrameWindowUpdate.invalidPayloadSize=La trame de mise à jour de la fenêtre a été reçue avec une taille de données invalide de [{0}]
+http2Parser.swallow.debug=Connection [{0}], Flux [{1}], Avalé [{2}] octets
+
+pingManager.roundTripTime=Connection [{0}] Le temps d''aller retour est de [{1}]ns
+
+stream.closed=Connection [{0}], Flux [{1}], Impossible d''écrire sur un flux après sa fermeture
+stream.header.case=Connection [{0}], Flux [{1}], Le nom d''en-tête HTTP [{2}] doit être en miniscules
+stream.header.connection=Connection [{0}], Flux [{1}], L''en-tête HTTP [connection] n''est pas autorisé dans une requête HTTP/2
+stream.header.contentLength=Connection [{0}], Flux [{1}], La valeur de l''en-tête content-length [{2}] ne correspond pas à la taille des données reçue [{3}]
+stream.header.debug=Connection [{0}], Flux [{1}], en-tête HTTP [{2}], valeur [{3}]
+stream.header.duplicate=Connection [{0}], Flux [{1}], Reçu plusieurs en-têtes [{3}]
+stream.header.invalid=Connection [{0}], Flux [{1}], L''en-tête[{2}] contenait la valeur invalide [{3}]
+stream.header.noPath=Connection [{0}], flux [{1}], Le [:path] pseudo en-tête est vide
+stream.header.required=Connection [{0}], Flux [{1}], Un ou plusieurs en-têtes nécessaires sont manquants
+stream.header.te=Connection [{0}], Flux [{1}], L''en-tête HTTP [te] n''est pas autorisé avec la valeur [{2}] dans une requête HTTP/2
+stream.header.unexpectedPseudoHeader=Connection [{0}], Flux [{1}], Le pseudo en-tête [{2}] a été reçu après un en-tête normal
+stream.header.unknownPseudoHeader=Connection [{0}], Flux [{1}], Un pseudo en-tête inconnu [{2}] a été reçu
+stream.inputBuffer.copy=Copide de [{0}] octets depuis inBuffer vers outBuffer
+stream.inputBuffer.dispatch=Des données on été ajoutées dans inBuffer alors que la lecture est surveillée, envoi d'un évènement de lecture
+stream.inputBuffer.empty=Le tampon d'entrée du flux est vide, attente de données
+stream.inputBuffer.readTimeout=Délai d'attente maximum dépassé pendant la lecture des données du client
+stream.inputBuffer.reset=Flux réinitialisé
+stream.inputBuffer.signal=Des données ont été ajoutées dans inBuffer alors que le thread de lecture attend, cela lui sera signalé
+stream.notWritable=Connection [{0}], Flux [{1}], Impossible d''écrire sur ce flux
+stream.outputBuffer.flush.debug=Connection [{0}], Flux [{1}], envoi des données mises en tampon depuis la position [{2}], writeInProgress [{3}] et closed [{4}]
+stream.reprioritisation.debug=Connection [{0}], Flux [{1}], Exclusive [{2}], Parent [{3}], Poids [{4}]
+stream.reset.fail=Connection [{0}], Flux [{1}], Echec de réinitialisation du flux
+stream.reset.receive=Connection [{0}], Flux [{1}], Réinitialisation reçue à cause de [{2}]
+stream.reset.send=Connection [{0}], Flux [{1}], Réinitialisation envoyée à cause de [{2}]
+stream.trailerHeader.noEndOfStream=Connection [{0}], Flux [{1}], Les en-têtes de fin n''incluent pas l''indicateur de fin de flux
+stream.writeTimeout=Temps d'attente maximum du client dépassé pour augmenter la fenêtre de contrôle de flux pour permettre l'écriture de données
+
+streamProcessor.cancel=Connection [{0}], Flux [{1}], Le reste du corps de la requête n''est pas nécessaire
+streamProcessor.error.connection=Connection [{0}], Stream [{1}], Une erreur s''est produite dans le traitement, fatale pour la connection
+streamProcessor.error.stream=Connection [{0}], Flux [{1}], Une erreur d''est produite durant le traitement qui a été fatale au flux
+streamProcessor.flushBufferedWrite.entry=Connection [{0}], Flux [{1}], Envoi des écritures mises en tampon
+streamProcessor.service.error=Erreur durant le traitement de la requête
+
+streamStateMachine.debug.change=Connection [{0}], Flux [{1}], L’état a changé de [{2}] vers [{3}]
+streamStateMachine.invalidFrame=Connection [{0}], Flux [{1}], Etat [{2}], Type de trame [{3}]
+streamStateMachine.invalidReset=Connection [{0}], Stream [{1}], Etat [{2}], Reset n''est pas permitted dans cet Etat
+
+upgradeHandler.allocate.debug=Connection [{0}], Flux [{1}], [{2}] octets alloués
+upgradeHandler.allocate.left=Connection [{0}], Flux [{1}], [{2}] octets désalloués, essai d''allocation aux enfants
+upgradeHandler.allocate.recipient=Connection [{0}], Flux [{1}], receveur potentiel [{2}] avec poids [{3}]
+upgradeHandler.connectionError=Erreur de la connection
+upgradeHandler.dependency.invalid=Connection [{0}], Flux [{1}], Un flux ne peut dépendre de lui-même
+upgradeHandler.goaway.debug=Connection [{0}], Goaway, Dernier flux [{1}], Code d''erreur [{2}], Données de débogage [{3}]
+upgradeHandler.init=Connection [{0}], Etat [{1}]
+upgradeHandler.initialWindowSize.invalid=Connection [{0}], La valeur [{1}] initiale de la taille de fenêtre est invalide
+upgradeHandler.invalidPreface=Connection [{0}], Préface de connection invalide
+upgradeHandler.ioerror=Connection [{0}]
+upgradeHandler.noAllocation=Connection [{0}], Flux [{1}], Temps d''attente maximum dépassé lors de l''allocation
+upgradeHandler.noNewStreams=Connection [{0}], Flux [{1}], Flux ignoré car aucun nouveau flux n''est autorisé sur cette connection
+upgradeHandler.pause.entry=Connection [{0}] mise en pause
+upgradeHandler.pingFailed=La connection [{0}] a échoué à envoyer un ping au client
+upgradeHandler.prefaceReceived=Connection [{0}], préface de la connection recue du client
+upgradeHandler.pruneIncomplete=Connexion [{0}], Flux [{1}], Erreur lors de l''élimination complète de la connexion parce que des flux sont encore actifs / utilisés dans l''arbre de priorité, il y a [{2}] flux en trop
+upgradeHandler.pruneStart=Connection [{0}] Début de l''élimination des anciens flux, la limite est de [{1}] + 10% et il y a actuellement [{2}] flux
+upgradeHandler.pruned=Connection [{0}] Elimination du flux terminé [{1}]
+upgradeHandler.prunedPriority=La connexion [{0}] a élagué le flux inutilisé [{1}] qui faisait peut-être partie de l''arbre de priorité
+upgradeHandler.releaseBacklog=Connection [{0}], Flux [{1}] enlevée de la file d''attente
+upgradeHandler.rst.debug=Connexion [{0}], Flux [{1}], Erreur [{2}], Message [{3}], RST (fermeture du flux)
+upgradeHandler.sendPrefaceFail=Connexion [{0}], échec d''envoi de la préface au client
+upgradeHandler.socketCloseFailed=Echec de la fermeture du socket
+upgradeHandler.stream.closed=Le flux [{0}] a déjà été fermé auparavant
+upgradeHandler.stream.even=Un nouvel ID de flux distant (remote stream) [{0}] a été requis, mais tous les flux distants doivent utiliser ID impairs
+upgradeHandler.stream.notWritable=Connection [{0}], Flux [{1}], Impossible d''écrire sur ce flux
+upgradeHandler.stream.old=Un nouveau flux distant avec l''ID [{0}] a été demandé mais le flux le plus récent est [{1}]
+upgradeHandler.tooManyRemoteStreams=Le client a essayé d''utiliser plus de [{0}] flux actifs
+upgradeHandler.tooMuchOverhead=Connection [{0}], Le traitement est trop coûteux donc la connection sera fermée
+upgradeHandler.unexpectedAck=Connection [{0}], Flux [{1}], Une notification de réception de paramètres a été reçue alors qu''aucune n''était attendue
+upgradeHandler.unexpectedEos=Fin de flux inattendue
+upgradeHandler.upgrade=Connexion [{0}], HTTP/1.1 transformée en flux [1]
+upgradeHandler.upgrade.fail=Connection [{0}], Echec de l''upgrade de HTTP/1.1
+upgradeHandler.upgradeDispatch.entry=Entrée, Connection [{0}], SocketStatus [{1}]
+upgradeHandler.upgradeDispatch.exit=Sortie, Connection [{0}], SocketState [{1}]
+upgradeHandler.windowSizeReservationInterrupted=Connection [{0}], Flux [{1}], réservé [{2}] octets
+upgradeHandler.windowSizeTooBig=Connection [{0}], Flux [{1}], La taille de la fenêtre est trop grosse
+upgradeHandler.writeBody=Connection [{0}], Flux [{1}], Taille des données [{2}]
+upgradeHandler.writeHeaders=Connection [{0}], Stream [{1}]
+upgradeHandler.writePushHeaders=Connection [{0}], Flux [{1}], Flux de push [{2}], EndOfStream [{3}]
+
+windowAllocationManager.dispatched=Connection [{0}], Flux [{1}], Envoyé
+windowAllocationManager.notified=Connection [{0}], Flux [{1}], Notifié
+windowAllocationManager.notify=Connection [{0}], Flux [{1}], Attente de type [{2}], Notification de type [{3}]
+windowAllocationManager.waitFor.connection=Connection [{0}], Flux [{1}], Attente d''une fenêtre de contrôle de flux de Connection (bloquante) avec une délai maximum d''attente de [{2}]
+windowAllocationManager.waitFor.ise=Connection [{0}], Flux [{1}], Déjà en train d''attendre
+windowAllocationManager.waitFor.stream=Connection [{0}], Flux [{1}], Attente d''une fenêtre de contrôle de flux de Flux (bloquante) avec une délai maximum d''attente de [{2}]
+windowAllocationManager.waitForNonBlocking.connection=Connection [{0}], Flux [{1}], Attente d''une fenêtre de contrôle de flux de Connection (non bloquante)
+windowAllocationManager.waitForNonBlocking.stream=Connection [{0}], Flux [{1}], Attente d''une fenêtre de contrôle de flux de Flux (non bloquante)
+
+writeStateMachine.endWrite.ise=il est illégal de spécifier [{0}] pour le nouvel état dès lors qu''une écriture s''est terminée
+writeStateMachine.ise=Il est illégal d'appeler [{0}()] dans l'état [{1}]
diff --git a/java/org/apache/jasper/resources/LocalStrings_fr.properties b/java/org/apache/jasper/resources/LocalStrings_fr.properties
index 23b2afd..e29cb96 100644
--- a/java/org/apache/jasper/resources/LocalStrings_fr.properties
+++ b/java/org/apache/jasper/resources/LocalStrings_fr.properties
@@ -210,6 +210,7 @@ jsp.error.tld.unable_to_get_jar=Impossible d''obtenir la ressource [{0}] du JAR
 jsp.error.tlv.invalid.page=Message d''erreurs de validation provenant du TagLibraryValidator pour [{0}] en [{1}]
 jsp.error.tlvclass.instantiation=Impossible de charger ou d''instancier la classe TagLibraryValidator: [{0}]
 jsp.error.unable.compile=Impossible de compiler la classe pour la JSP
+jsp.error.unable.deleteClassFile=Impossible d'effacer le fichier de la classe
 jsp.error.unable.load=Impossible de charger la classe pour la JSP
 jsp.error.unable.renameClassFile=Impossible de renommer le fichier de la classe
 jsp.error.unable.to_find_method=Impossible de trouver une méthode de mise à jour pour l''attribut: [{0}]
@@ -363,3 +364,13 @@ jspc.webxml.header=<?xml version="1.0" encoding="{0}"?>\n\
 Crée automatiquement par JspC de Apache Tomcat.\n\
 -->\n\
 \n
+
+org.apache.jasper.compiler.ELParser.invalidQuotesForStringLiteral=Le littéral chaîne [{0}] est invalide, il doit être contenu entre guillemets simples ou doubles
+org.apache.jasper.compiler.ELParser.invalidQuoting=L''expression [{0}] n''est pas valide, dans une chaîne entre guillemets seuls [], [''] et ["] peuvent être échappés avec []
+org.apache.jasper.compiler.TldCache.servletContextNull=Le ServletContext fourni est nul
+org.apache.jasper.servlet.JasperInitializer.onStartup=Initialisation de Jasper pour le contexte [{0}]
+org.apache.jasper.servlet.TldScanner.webxmlAdd=Chargement de la TLD pour l''URI [{1}] à partir du chemin de ressource [{0}]
+org.apache.jasper.servlet.TldScanner.webxmlFailPathDoesNotExist=Echec du traitement de la TLD du cheming [{0}] avec l''URI [{1}], le chemin spécifié n''existe pas
+org.apache.jasper.servlet.TldScanner.webxmlSkip=Le chargement du TLD à l''URI [{1}] pour le chemin de ressource [{0}] ne sera pas effectué car il a déjà été défini dans <jsp-config>
+
+xmlParser.skipBomFail=Echec pour passer le BOM lors du traitement du flux d'entrée XML
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties b/java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_fr.properties
similarity index 53%
copy from java/org/apache/tomcat/util/net/LocalStrings_fr.properties
copy to java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_fr.properties
index 0410d90..090c60d 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/dbcp/dbcp2/LocalStrings_fr.properties
@@ -13,6 +13,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# net resources
+connectionFactory.lifetimeExceeded=La durée de vie de la connection de [{0}] millisecondes excède la valeur maximale permis de [{1}] millisecondes
 
+pool.close.fail=Impossible de fermer le pool de connections
 
+poolableConnection.validate.fastFail=Une exception fatale SQLException avait déjà été lancée pour cette connection
+
+poolableConnectionFactory.validateObject.fail=Impossible de valider la connection poolable
+
+poolingDataSource.factoryConfig=La PoolableConnectionFactory n'est pas liée au pool, il faut appeler setPool() pour y remédier et corriger la configuration
+
+swallowedExceptionLogger.onSwallowedException=Un object interne du pool a avalé une exception
diff --git a/java/org/apache/tomcat/util/LocalStrings_fr.properties b/java/org/apache/tomcat/util/LocalStrings_fr.properties
new file mode 100644
index 0000000..60543a1
--- /dev/null
+++ b/java/org/apache/tomcat/util/LocalStrings_fr.properties
@@ -0,0 +1,30 @@
+# 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.
+
+diagnostics.threadDumpTitle=Traces complètes des threads
+diagnostics.vmInfoClassCompilation=Compilation de la classe
+diagnostics.vmInfoClassLoading=Chargeur de classes
+diagnostics.vmInfoGarbageCollectors=Garbage Collector [{0}]
+diagnostics.vmInfoLogger=Information sur le journal
+diagnostics.vmInfoMemory=Information mémoire
+diagnostics.vmInfoMemoryManagers=Gestionnaire de mémoire [{0}]
+diagnostics.vmInfoMemoryPools=Pool de mémoire [{0}]
+diagnostics.vmInfoOs=Information sur l'OS
+diagnostics.vmInfoPath=Imformation de chemin
+diagnostics.vmInfoRuntime=Information sur l'environnement d'exécution
+diagnostics.vmInfoStartup=Arguments de démarrage
+diagnostics.vmInfoSystem=Paramètres système
+diagnostics.vmInfoThreadCounts=Nombre de fils d'exécution (threads)
+diagnostics.vmInfoThreadMxBean=Capacités de ThreadMXBean
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties b/java/org/apache/tomcat/util/buf/LocalStrings_fr.properties
similarity index 53%
copy from java/org/apache/tomcat/util/net/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/buf/LocalStrings_fr.properties
index 0410d90..5f13d1a 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/buf/LocalStrings_fr.properties
@@ -13,6 +13,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# net resources
+b2cConverter.unknownEncoding=L''encodage de caractères [{0}] n''est pas supporté
 
+byteBufferUtils.cleaner=Impossible d'utiliser le nettoyeur de ByteBuffers directs, une fuite de mémoire peut se produire
 
+hexUtils.fromHex.nonHex=L'entrée doit être uniquement des chiffres héxadécimaux
+hexUtils.fromHex.oddDigits=L'entrée doit contenir un nombre pair de chiffres héxadécimaux
+
+uDecoder.convertHexDigit.notHex=[{0}] n''est pas un chiffre hexadécimal
+uDecoder.urlDecode.conversionError=Echec de décodage [{0}] en utilisant le jeu de caractères [{1}]
+uDecoder.urlDecode.missingDigit=Impossible de décoder [{0}] parce que le caractère % doit être suivi de deux chiffres héxadécimaux
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/tomcat/util/codec/binary/LocalStrings_fr.properties
similarity index 66%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/codec/binary/LocalStrings_fr.properties
index 7363303..a2d0a67 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/codec/binary/LocalStrings_fr.properties
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
-
-value.false=false
-value.true=true
+base64.impossibleModulus=Modulo [{0}] invalide
+base64.inputTooLarge=Le tableau en entrée est trop grand, la taille du tableau de sortie [{0}] serait plus grande que la taille maximale autorisée [{1}]
+base64.lineSeparator=Le séparateur de ligne ne doit pas contenir des caractères base64 [{0}]
+base64.nullEncodeParameter=Impossible d'encoder unentier en utilisant un paramètre null
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/tomcat/util/compat/LocalStrings_fr.properties
similarity index 64%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/compat/LocalStrings_fr.properties
index 7363303..1f7543c 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/compat/LocalStrings_fr.properties
@@ -13,7 +13,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
+jre9Compat.invalidModuleUri=L''URI du module fournie [{0}] n''a pas pu être convertie en URL pour être traitée par le JarScanner
 
-value.false=false
-value.true=true
+jreCompat.noApplicationProtocol=Le Java Runtime utilisé ne supporte pas SSLEngine.getApplicationProtocol(). Il faut Java 9 pour utiliser cette option.
+jreCompat.noApplicationProtocols=L'environnement Java ne supporte pas SSLParameters.setApplicationProtocols(), cette fonctionnalité demande Java 9
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties b/java/org/apache/tomcat/util/descriptor/LocalStrings_fr.properties
similarity index 59%
copy from java/org/apache/tomcat/util/net/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/descriptor/LocalStrings_fr.properties
index 0410d90..ccab11b 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/descriptor/LocalStrings_fr.properties
@@ -13,6 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# net resources
+digesterFactory.missingSchema=Le schema XML [{0}] n''a pu être trouvé, cela empêchera certainement la validation de fonctionner si elle est activée
 
+localResolver.unresolvedEntity=Impossible de résoudre vers une entité locale connue la ressource XML [{0}] avec un identifiant public [{1}], un identifiant système [{2}] et une URI de base [{3}]
 
+xmlErrorHandler.error=L''erreur non fatale [{0}] a été retournée lors du traitement [{1}]
+xmlErrorHandler.warning=L''avertissement [{0}] a été retournée en traitant [{1}]
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/tomcat/util/descriptor/tld/LocalStrings_fr.properties
similarity index 88%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/descriptor/tld/LocalStrings_fr.properties
index 7363303..84dcf74 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/descriptor/tld/LocalStrings_fr.properties
@@ -13,7 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
-
-value.false=false
-value.true=true
+implicitTldRule.elementNotAllowed=L''élément [{0}] n''est pas autorisé dans un fichier TLD implicite
diff --git a/java/org/apache/tomcat/util/descriptor/web/LocalStrings_fr.properties b/java/org/apache/tomcat/util/descriptor/web/LocalStrings_fr.properties
new file mode 100644
index 0000000..749a7b7
--- /dev/null
+++ b/java/org/apache/tomcat/util/descriptor/web/LocalStrings_fr.properties
@@ -0,0 +1,66 @@
+# 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.
+
+filterDef.invalidFilterName=Valeur Invalide de <filter-name> [{0}] dans la définition du filtre.
+
+securityConstraint.uncoveredHttpMethod=Les méthodes HTTP [{1}] des contraintes de sécurité du modèle d''URL [{0}] sont protégées, toutes les autres ne le sont pas
+securityConstraint.uncoveredHttpMethodFix=Ajout de contraintes de sécurité avec le masque d''URL [{0}] pour empêcher l''accès aux méthodes HTTP non couvertes qui ne sont pas une de celles ci [{1}]
+securityConstraint.uncoveredHttpOmittedMethod=Les méthodes HTTP [{1}] des contraintes de sécurité du modèle d''URL [{0}] ne sont pas protégées
+securityConstraint.uncoveredHttpOmittedMethodFix=Ajout de contraintes de sécurité avec le masque d''URL [{0}] pour empêcher l''accès aux méthodes HTTP [{1}] non couvertes
+
+servletDef.invalidServletName=<servlet-name> [{0}] invalide dans la définition du Servlet
+
+webRuleSet.absoluteOrdering=L’élément <absolute-ordering> est invalide dans web-fragment.xml et sera ignoré
+webRuleSet.absoluteOrderingCount=L'élément <absolute-ordering> est limité à 1 ocurrence
+webRuleSet.nameCount=L'élément <name> est limité à 1 ocurrence
+webRuleSet.postconstruct.duplicate=La méthode post construct est dupliquée dans la classe [{0}]
+webRuleSet.predestroy.duplicate=Double définition de l''annotation de méthode @PreDestroy pour la classe [{0}]
+webRuleSet.relativeOrdering=L’élément <ordering> est invalide dans web.xml et sera ignoré
+webRuleSet.relativeOrderingCount=L'élément <ordering> est limité à 1 ocurrence
+
+webXml.duplicateEnvEntry=Le nom de l''env-entry [{0}] a été déclaré en double
+webXml.duplicateFilter=Nom du filtre dupliqué [{0}]
+webXml.duplicateFragment=Il y a plus d''un fragment nommé [{0}], ce qui n''est pas légal avec l''ordre relatif; voir la section 8.2.2 2c de la spécification Servlet, l''ordre absolu peut éventuellement être utilisé
+webXml.duplicateMessageDestination=Le nom de la message-destination [{0}] a été déclaré en double
+webXml.duplicateMessageDestinationRef=Le nom de la message-destination-ref [{0}] a été déclaré en double
+webXml.duplicateResourceEnvRef=Le nom de la resource-env-ref [{0}] a été déclaré en double
+webXml.duplicateResourceRef=Le nom de la resource-ref [{0}] a été déclaré en double
+webXml.duplicateServletMapping=Les servlets nommés [{0}] et [{1}] sont tous deux associés au même modèle d''URL [{2}], ce qui n''est pas permis
+webXml.duplicateTaglibUri=Librairies de tags déclarée en double avec l''URI [{0}]
+webXml.mergeConflictDisplayName=Le nom d''affichage a été défini de manière inconsistante entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictFilter=Le Filter [{0}] a été défini de manière inconsistante entre différents fragments dont le fragment [{1}] situé à [{2}]
+webXml.mergeConflictLoginConfig=Le LoginConfig a été défini de manière inconsistante entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictOrder=L'ordre relatif des fragments contient des références circulaires, cela peut être résolu en utilisant un ordre absolu dans web.xml
+webXml.mergeConflictResource=La Resource [{0}] a été définie de manière inconsistante entre différents fragments dont le fragment [{1}] situé à [{2}]
+webXml.mergeConflictServlet=Le Servlet [{0}] a été défini de manière inconsistante entre différents fragments dont le fragment [{1}] situé à [{2}]
+webXml.mergeConflictSessionCookieComment=Le commentaire de cookie de session a été défini de manière inconsistante avec des valeurs différentes entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictSessionCookieDomain=Le domaine de cookie de session a été défini de manière inconsistante avec des valeurs différentes entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictSessionCookieHttpOnly=L''indicateur http-only du cookie de session a été défini de manière inconsistante avec des valeurs différentes entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictSessionCookieMaxAge=Le max-age du cookie de session a été défini de manière inconsistante avec des valeurs différentes entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictSessionCookieName=Le nom de cookie de session a été défini de manière inconsistante avec des valeurs différentes entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictSessionCookiePath=Le chemin du cookie de session a été défini de manière inconsistante avec des valeurs différentes entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictSessionCookieSecure=L''indicateur secure du cookie de session a été défini de manière inconsistante avec des valeurs différentes entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictSessionTimeout=Le timeout de la session a été défini de manière inconsistante avec des valeurs différentes entre différents fragments dont le fragment [{0}] situé à [{1}]
+webXml.mergeConflictSessionTrackingMode=Les modes de gestion de la session ont été déclarés de manière inconsistante entre plusieurs fragments nommés [{0}] et localisés à [{1}]
+webXml.mergeConflictString=Le [{0}] avec comme nom [{1}] a été défini de manière inconsistante entre différents fragments dont le fragment [{2}] situé à [{3}]
+webXml.multipleOther=Plusieurs entrées <others> sont incluses dans l'élément <ordering>
+webXml.reservedName=Un fichier web.xml a été détecté avec un nom réservé [{0}], l''élément name sera ignoré pour ce fragment
+webXml.unrecognisedPublicId=L''identifiant public [{0}] ne correspond à aucun des identifiants connus pour les fichiers web.xml, donc la version n''a pu être indentifiée
+webXml.version.unknown=Version [{0}] inconnue, utilisation de la version par défaut
+webXml.wrongFragmentName=Utilisation d''un mauvais nom de fragment [{0}] dans le tag absolute-ordering de web.xml
+
+webXmlParser.applicationParse=Erreur de traitement du web.xml de l''application à [{0}]
+webXmlParser.applicationPosition=S''est produit à la ligne [{0}] colonne [{1}]
+webXmlParser.applicationStart=Traitement du web.xml de l''application à [{0}]
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/tomcat/util/digester/LocalStrings_fr.properties
similarity index 78%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/digester/LocalStrings_fr.properties
index 7363303..b7f1143 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/digester/LocalStrings_fr.properties
@@ -13,7 +13,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
-
-value.false=false
-value.true=true
+digester.failedToUpdateAttributes=L''attribut [{0}] n''a pu être mis à jour et garde la valeur [{1}]
+digester.failedToUpdateSystemProperty=La propriété système [{0}] n''a pu être mise à jour et reste [{1}]
diff --git a/java/org/apache/tomcat/util/http/LocalStrings_fr.properties b/java/org/apache/tomcat/util/http/LocalStrings_fr.properties
new file mode 100644
index 0000000..32ce404
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/LocalStrings_fr.properties
@@ -0,0 +1,39 @@
+# 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.
+
+cookies.fallToDebug=\n\
+Note: toutes les occurrences suivantes d'erreurs de cookies seront enregistrées au niveau DEBUG
+cookies.invalidCookieToken=Cookie non valide. Sa valeur n'est ni un "token" ni une valeur entre guillemets
+cookies.invalidSameSiteCookies=Valeur inconnue [{0}], elle doit être parmi: none, lax, strict, la valeur par défaut est none
+cookies.invalidSpecial=Cookie spécial inconnu
+cookies.maxCountFail=Le nombre maximum de cookies [{0}] est dépassé
+
+headers.maxCountFail=Le nombre d''en-têtes [{0}] dépasse le maximum autorisé
+
+parameters.bytes=Début du traitement avec les données [{0}]
+parameters.copyFail=Echec de la copie des valeurs de paramètres originaux pour raisons de journalisation du déboguage
+parameters.decodeFail.debug=Echec de décodage de caractère, le paramètre [{0}] de valeur [{1}] a été ignoré
+parameters.decodeFail.info=Echec de décodage de caractère, le paramètre [{0}] avec la valeur [{1}] a été ignoré; le nom et la valeur mentionnés ici peuvent avoir été corrompus à cause de l''erreur de décodage, utilisez le niveau debug pour voir les originaux
+parameters.emptyChunk=Le bloc de paramètres vide a été ignoré
+parameters.fallToDebug=\ Note : les occurrences suivantes d'erreur de traitement de paramètres seront enregistrées au niveau DEBUG
+parameters.invalidChunk=Morceau (chunk) invalide démarrant à l''octet [{0}] et se terminant à l''octet [{1}] avec une valeur de [{2}] ignoré
+parameters.maxCountFail=Le nombre maximum de paramètres pour une seule requête (GET plus POST) [{0}] a été détecté, les paramètres supplémentaires ont été ignorés; l''attribut maxParameterCount du Connector permet de changer cette limite
+parameters.maxCountFail.fallToDebug=\ Note : les occurrences suivantes de cette erreur seront enregistrées au niveau DEBUG
+parameters.multipleDecodingFail=Echec de décodage de caractère, [{0}] erreurs ont été détectées au total mais seule la première a été logguée, activez le niveau debug pour avoir toutes les erreurs
+parameters.noequal=Le paramètre qui démarre à la position [{0}] et qui se termine à la position [{1}] avec comme valeur [{2}] n''est pas suivi par un caractère ''=''
+
+rfc6265CookieProcessor.invalidCharInValue=Un caractère invalide [{0}] était présent dans la valeur du cookie
+rfc6265CookieProcessor.invalidDomain=Un domaine [{0}] invalide a été spécifié pour ce cookie
+rfc6265CookieProcessor.invalidPath=Un chemin (path) invalide [{0}] a été spécifié pour ce biscuit (cookie)
diff --git a/java/org/apache/tomcat/util/http/parser/LocalStrings_fr.properties b/java/org/apache/tomcat/util/http/parser/LocalStrings_fr.properties
new file mode 100644
index 0000000..d486b92
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/parser/LocalStrings_fr.properties
@@ -0,0 +1,39 @@
+# 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.
+
+cookie.fallToDebug=\ Note: toutes les occurrences suivantes de cette erreur seront enregistrées au niveau DEBUG
+cookie.invalidCookieValue=Un en-tête de cookie a été reçu [{0}] qui contenait un cookie invalide, celui ci sera ignoré
+cookie.invalidCookieVersion=Un en-tête de cookie a été reçu utilisant une version [{0}] non reconnue, les cookies seront ignorés
+cookie.valueNotPresent=<non présent>
+
+http.closingBracket=Un crochet ']' a été trouvé dans un nom d'hôte non IPv6
+http.illegalAfterIpv6=Le caractère [{0}] n''est pas permis dans un nom d''hôte à la suite d''une adresse IPv6
+http.illegalCharacterDomain=Le caractère [{0}] n''est jamais valide pour un nom de domaine
+http.illegalCharacterIpv4=Le caractère [{0}] n''est pas valide pour une adresse IPV4.
+http.illegalCharacterIpv6=Le caractère [{0}] n''est jamais valide dans une adresse IPv6
+http.invalidHextet="hextet" invalide.  Un "hextet" doit consister au maximum de 4 caractères hexadécimaux.
+http.invalidIpv4Location=L'adresse IPv6 contient une adresse IPv4 incluse à un endroit invalide
+http.invalidLeadingZero=Un octet IPv4 non nul ne doit pas commencer par un zéro
+http.invalidOctet=Octet [{0}] invalide. L''éventail valide pour les octets IPv4 est 0-255.
+http.invalidSegmentEndState=L''état [{0}] n''est pas valide à la fin d''un segment
+http.noClosingBracket=L'adresse IPv6 n'a pas de crochet de fermeture
+http.noOpeningBracket=Cette adresse IPv6 n'a pas de crochet d'ouverture '['
+http.singleColonEnd=Une adresse IPv6 ne doit pas se terminer par un seul ':'
+http.singleColonStart=Une adresse IPv6 ne doit pas commencer par un seul ':'
+http.tooFewHextets=Une adresse IPv6 doit être constitué de 8 groupes de 4 octets mais cette adresse en contient [{0}] et pas de séquence "::" pour représenter un ou plusieurs groupes de 4 octets
+http.tooManyColons=Une adresse IPv6 ne peut pas contenir plus de deux caractères deux-points à la suite
+http.tooManyDoubleColons=Une adresse IPv6 ne peut contenir qu'une seule séquence "::"
+http.tooManyHextets=L''adresse IPv6 contient [{0}] groupes de 4 octets mais une adresse IPv6 valide ne doit pas en avoir plus de 8
+http.wrongOctetCount=Une adresse IPv4 doit faire exactement 4 octets et non [{0}]
diff --git a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties b/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
index 0410d90..3ddb6c1 100644
--- a/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/net/LocalStrings_fr.properties
@@ -13,6 +13,142 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# net resources
+channel.nio.interrupted=Le thread en cours a été interrompu
+channel.nio.ssl.appInputNotEmpty=Le tampon d'entrée de l'application contient toujours des données, des données ont été perdues
+channel.nio.ssl.appOutputNotEmpty=Le tampon de sortie de l'application contient toujours des données, des données ont été perdues
+channel.nio.ssl.closeSilentError=Il y a eu une exception en essayant de fermer proprement la connection, comme prévu
+channel.nio.ssl.closing=Le canal est en état de fermeture
+channel.nio.ssl.eofDuringHandshake=EOF pendant la négociation
+channel.nio.ssl.expandNetInBuffer=Augmentation de la taille du tampon d''entrée réseau à [{0}] octets
+channel.nio.ssl.expandNetOutBuffer=Augmentation de la taille du tampon de sortie réseau à [{0}] octets
+channel.nio.ssl.foundHttp=Une requête HTTP non cryptée a été trouvée sur la connection qui aurait dû être cryptée par TLS
+channel.nio.ssl.handshakeError=Erreur lors de la négociation
+channel.nio.ssl.incompleteHandshake=La négociation est incomplète, elle doit être terminée pour pouvoir lire des données
+channel.nio.ssl.invalidCloseState=Etat de fermeture invalide, aucune donnée ne sera envoyée sur le réseau
+channel.nio.ssl.invalidStatus=Etat inattendu [{0}]
+channel.nio.ssl.netInputNotEmpty=Le tampon d'entrée du réseau contient toujours des données, la négociation va échouer
+channel.nio.ssl.netOutputNotEmpty=Le tampon de sortie du réseau contient toujours des données, la négociation va échouer
+channel.nio.ssl.notHandshaking=NOT_HANDSHAKING pendant la négociation SSL
+channel.nio.ssl.pendingWriteDuringClose=Une écriture est en cours donc des données sont toujours présentes dans le tampon réseau, impossible d'envoyer le message de fermeture de SSL mais le socket sera fermé de toutes manières
+channel.nio.ssl.remainingDataDuringClose=Des données sont toujours présentes dans le tampon réseau, impossible d'envoyer le message de fermeture de SSL mais le socket sera fermé de toutes manières
+channel.nio.ssl.sniDefault=Incapacité d'accumuler assez d'information pour déterminer le nom du hôte SNI demandé.  Valeur par défaut utilisée.
+channel.nio.ssl.sniHostName=Le nom d''hôte SNI extrait pour la connexion [{0}] est [{1}]
+channel.nio.ssl.timeoutDuringHandshake=Timeout pendant la négociation
+channel.nio.ssl.unexpectedStatusDuringUnwrap=Statut inattendu [{0}] lors de l''UNWRAP de la négociation
+channel.nio.ssl.unexpectedStatusDuringWrap=Statut inattendu [{0}] lors du WRAP de la négociation
+channel.nio.ssl.unwrapFail=Incapable de désenrober les données ("unwrap data"), statut invalide [{0}]
+channel.nio.ssl.unwrapFailResize=Impossible de faire l''unwrap des données parce que le tampon est trop petit, statut invalide [{0}]
+channel.nio.ssl.wrapException=La négociation a échouée pendant le wrap
+channel.nio.ssl.wrapFail=Impossible d''enrober (wrap) les données, le status est invalide [{0}]
 
+endpoint.accept.fail=Aucun socket n'a pu être accepté
+endpoint.alpn.fail=Erreur de configuration de la terminaison pour ALPN en utilisant [{0}]
+endpoint.alpn.negotiated=Le protocole [{0}] a été négocié en utilisant ALPN
+endpoint.apr.applyConf=Application de OpenSSLConfCmd au contexte SSL
+endpoint.apr.assignConf=Assignation du contexte SSL au contexte de la OpenSSLConfCmd
+endpoint.apr.checkConf=Vérification de OpenSSLConf en cours
+endpoint.apr.errApplyConf=Impossible d'appliquer OpenSSLConf au contexte SSL
+endpoint.apr.errCheckConf=Erreur pendant la vérification de OpenSSLConf
+endpoint.apr.errMakeConf=Impossible de créer le contexte de OpenSSLConf
+endpoint.apr.failSslContextMake=Incapable de créer un SSLContext. Vérifier que SSLEngine est activé dans l'AprLifecycleListener, que l'AprLifecycleListener a été correctement initialisé et qu'un protocole SSL valide a été spécifié.
+endpoint.apr.invalidSslProtocol=Un valeur invalide [{0}] a été donnée pour l''attribut SSLProtocol
+endpoint.apr.makeConf=Création du contexte de OpenSSLConf
+endpoint.apr.maxConnections.running=La terminaison APR ne permet pas de fixer maxConnections pendant son exécution, la valeur existante [{0}] continuera à être utilisée
+endpoint.apr.maxConnections.unlimited=La terminaison APR ne supporte pas un nombre illimité de connections, la valeur existante [{0}] va continuer à être utilisée
+endpoint.apr.noSendfileWithSSL=Sendfile n'est pas supporté avec le connecteur APR lorsque SSL est active
+endpoint.apr.pollAddInvalid=Tentative invalide d''ajout d''une socket [{0}] au scrutateur ("poller")
+endpoint.apr.pollError=Le scrutateur ("poller") a échoué avec l''erreur [{0}] : [{1}]
+endpoint.apr.pollMergeEvents=Fusion des évènements [{1}] du poller pour le socket [{0}] pour créer l''évènement fusionné [{2}]
+endpoint.apr.pollUnknownEvent=Un socket a été retourné par le poller avec un évènement inconnu [{0}]
+endpoint.apr.remoteport=Le socket APR [{0}] a été ouvert avec le port distant [{1}]
+endpoint.apr.tooManyCertFiles=Plus de fichiers de certificats ont été configurés que ce que l'AprEndpoint peut gérer
+endpoint.debug.channelCloseFail=Echec de la fermeture du canal (channel)
+endpoint.debug.destroySocket=Destruction du socket [{0}]
+endpoint.debug.pollerAdd=Ajout à la addList socket [{0}], inactivité maximale [{1}], drapeaux [{2}]
+endpoint.debug.pollerAddDo=Ajout du socket [{0}] au poller
+endpoint.debug.pollerProcess=Traitement de(s) évènement(s) [{1}] pour la socket [{0}]
+endpoint.debug.pollerRemove=Essai d''enlever [{0}] du poller
+endpoint.debug.pollerRemoved=Enlevé [{0}] du poller
+endpoint.debug.socket=socket [{0}]
+endpoint.debug.socketCloseFail=Echec de fermeture du socket
+endpoint.debug.socketTimeout=Expiration [{0}]
+endpoint.debug.unlock.fail=Reçu une exception en essayant de déverrouiller l''accepteur sur le port [{0}]
+endpoint.debug.unlock.localFail=Impossible de déterminer l''adresse locales pour [{0}]
+endpoint.debug.unlock.localNone=Impossible de débloquer l''accepteur pour [{0}] car l''adresse locale n''était pas disponible
+endpoint.duplicateSslHostName=Plusieurs éléments SSLHostConfig ont été fournis pour le nom d''hôte [{0}], les noms d''hôte doivent être uniques
+endpoint.err.close=Une exception s'est produite en essayant de fermer le socket
+endpoint.err.handshake=Echec de négociation
+endpoint.err.unexpected=Erreur inattendue lors du traitement du socket
+endpoint.executor.fail=L''exécuteur a rejeté le traitement du socket [{0}]
+endpoint.getAttribute=[{0}] est [{1}]
+endpoint.init.bind=L''association du socket a échoué: [{0}] [{1}]
+endpoint.init.bind.inherited=Pas de canal hérité alors que le connecteur était configuré pour en utiliser un
+endpoint.init.listen=L''écoute sur le socket a échoué: [{0}] [{1}]
+endpoint.init.notavail=APR n'est pas disponible
+endpoint.invalidJmxNameSslHost=Impossible de générer un nom d''objet JMX valide pour le SSLHostConfig associé à l''hôte [{0}]
+endpoint.invalidJmxNameSslHostCert=Impossible de générer un nom d''objet JMX valide pour le SSLHostConfigCertificate associé à l''hôte [{0}] et au type de certificat [{1}]
+endpoint.jmxRegistrationFailed=Echec de l''enregistrement JMX de l''objet avec le nom [{0}]
+endpoint.jsse.noSslContext=Aucun SSLContext n''a été trouvé pour le nom d''hôte [{0}]
+endpoint.launch.fail=Impossible de démarrer le nouvel exécutable
+endpoint.nio.registerFail=Echec d'enregistrement du socket avec le sélecteur du poller
+endpoint.nio.selectorCloseFail=Impossible de fermer le sélecteur lors de la fermeture du poller
+endpoint.nio.stopLatchAwaitFail=Les pollers ne se sont pas arrêtés dans le temps imparti
+endpoint.nio.stopLatchAwaitInterrupted=Ce thread a été interrompu pendant qu'il attendait l'arrêt des scrutateurs ("pollers")
+endpoint.nio.timeoutCme=Exception pendant le traitement du délai d'attente maximum; le code a été vérifié de manière répétée et aucune modification concurrence n'a pu être trouvée, si vous obtenez cette erreur de manière reproductible merci d'ouvrir un rapport d'erreur sur Tomcat en fournissant les informations pour la reproduire
+endpoint.nio2.exclusiveExecutor=Le connecteur NIO2 a besoin d'un accès exclusif à un exécuteur pour pouvoir avoir un comportement prévisible lors de son arrêt
+endpoint.noSslHostConfig=Pas d''élément SSLHostConfig trouvé avec hostName [{0}] correspondant au defaultSSLHostConfigName du connecteur [{1}]
+endpoint.noSslHostName=Aucun nom d'hôte n'a été fourni pour la configuration de l'hôte SSL
+endpoint.poll.error=Erreur inattendue du poller
+endpoint.poll.fail=Echec critique du poller, redémarrage: [{0}] [{1}]
+endpoint.poll.initfail=Echec de création du poller
+endpoint.poll.limitedpollsize=Echec de création d''un poller avec la taille spécifiée [{0}]
+endpoint.process.fail=Erreur lors de l'allocation d'un processeur de socket
+endpoint.processing.fail=Erreur lors de l’exécution du processeur du socket
+endpoint.removeDefaultSslHostConfig=Le SSLHostConfig par défaut (de nom [{0}]) ne peut pas être retiré
+endpoint.sendfile.addfail=Echec de Sendfile:  [{0}] [{1}]
+endpoint.sendfile.error=Erreur lors de sendfile
+endpoint.serverSocket.closeFailed=Le socket serveur [{0}] n''a pas pu être fermé
+endpoint.setAttribute=Met [{0}] à [{1}]
+endpoint.timeout.err=Erreur en traitant le dépassement de temps d'attente du socket
+endpoint.unknownSslHostName=Le nom d''hôte SSL [{0}] n''est pas reconnu pour cette terminaison
+endpoint.warn.executorShutdown=L''exécuteur associé au pool de threads [{0}] n''est pas complètement arrêté, certains threads d''application peuvent toujours être en cours d''exécution
+endpoint.warn.incorrectConnectionCount=Le décompte du nombre de connections est incorrect, la méthode de fermeture d'un même socket a été appelée plusieurs fois
+endpoint.warn.noLocalAddr=Impossible de déterminer l''addresse locale pour le socket [{0}]
+endpoint.warn.noLocalName=Incapable de déterminer l''hôte local ("local host") pour la socket [{0}]
+endpoint.warn.noLocalPort=Impossible de déterminer le port local pour le socket [{0}]
+endpoint.warn.noRemoteAddr=Impossible de déterminer l''adresse distante pour le socket [{0}]
+endpoint.warn.noRemoteHost=Impossible de déterminer le nom d''hôte distant pour le socket [{0}]
+endpoint.warn.noRemotePort=Impossible de déterminer le port distant pour le socket [{0}]
+endpoint.warn.noSendfileWithSSL=Sendfile n'est pas supporté par le connecteur quand SSL est activé
+endpoint.warn.unlockAcceptorFailed=Le thread qui accepte les sockets [{0}] n''a pu être débloqué, arrêt forcé su socket serveur
 
+jsse.invalid_truststore_password=Le mot de passe de la base de confiance n'a pas pu être utilisé pour déverrouiller et ou valider celle ci, nouvel essai en utilisant un mot de passe null pour passer la validation
+jsse.keystore_load_failed=Impossible de changer la base de clés de type [{0}] avec le chemin [{1}] à cause de [{2}]
+jsse.ssl3=SSLv3 a été explicitement activé.  Ce protocole est connu comme non-sécurisé.
+jsse.tls13.auth=L’implémentation JSSE de TLS 1.3 ne supporte pas l'authentification après la négociation initiale, elle est donc incompatible avec l’authentification optionnelle du client
+
+sniExtractor.clientHelloInvalid=Le message ClientHello n'était pas formaté correctement
+sniExtractor.clientHelloTooBig=Le ClientHello n'a pas été présenté dans un seul enregistrement TLS donc l'information SNI n'a pu être extraite
+
+socket.apr.clientAbort=Le client a avorté la connection
+socket.apr.closed=Le socket [{0}] associé avec cete connection a été fermé.
+socket.apr.read.error=Erreur inattendue [{0}] lors de la lecture de données depuis le socket APR [{1}] avec l''enrobeur [{2}]
+socket.apr.write.error=Erreur inattendue [{0}] lors de l''écriture de données vers le socket APR [{1}] avec l''enrobeur [{2}]
+socket.closed=Le socket associé à cette connection a été fermé
+socket.sslreneg=Exception lors de la renégociation de la connection SSL
+
+sslHostConfig.certificate.notype=Plusieurs certificats ont été spécifiés et au moins un n'a pas d'attribut type
+sslHostConfig.certificateVerificationInvalid=La valeur de vérification de certificat [{0}] n''est pas reconnue
+sslHostConfig.fileNotFound=Le fichier [{0}] configuré n''existe pas.
+sslHostConfig.mismatch=La propriété [{0}] a été fixée sur le SSLHostConfig nommé [{1}] et est pour la syntaxe de configuration [{2}] mais le SSLHostConfig est utilisé avec la syntaxe de configuration [{3}]
+sslHostConfig.opensslconf.alreadyset=Un tentative de fixer une autre OpenSSLConf a été ignorée
+sslHostConfig.opensslconf.null=L'OpenSSLConf nul a été ignoré
+sslHostConfig.prefix_missing=Le protocole [{0}] a été ajouté à la liste des protocoles du SSLHostConfig nommé [{1}], vérifier qu''un préfixe +/- ne manque pas
+
+sslHostConfigCertificate.mismatch=La propriété [{0}] a été définie sur le SSLHostConfigCertificate nommé [{1}] et est pour un certificat de stockage de type [{2}] mais le certificat est utilisé avec un stockage de type [{3}]
+
+sslImplementation.cnfe=Impossible de créer une SSLImplementation avec la class [{0}]
+
+sslUtilBase.active=Les [{0}] qui sont actifs sont: [{1}]
+sslUtilBase.noneSupported=Aucun des [{0}] spécifiés n''est supporté par le moteur SSL : [{1}]
+sslUtilBase.skipped=Quelques [{0}] spécifiés ne sont pas supportés par le moteur SSL et ont été ignorés: [{1}]
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/tomcat/util/scan/LocalStrings_fr.properties
similarity index 51%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/scan/LocalStrings_fr.properties
index 7363303..26b1a25 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/scan/LocalStrings_fr.properties
@@ -13,7 +13,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.not_iso8859_1=[{0}] n''est pas un caractère ISO 8859-1
-
-value.false=false
-value.true=true
+jarScan.classloaderFail=Echec de recherche dans [{0}] de la hiérarchie de chargeurs de classes
+jarScan.classloaderJarNoScan=Le JAR [{0}] dans le chemin de classes ne sera pas analysé
+jarScan.classloaderJarScan=Analyse du JAR [{0}] du chemin de classes
+jarScan.classloaderStart=Recherche dans les JARs de la hiérarchie de chargeurs de classe
+jarScan.jarUrlStart=Recherche dans le JAR à l''URL [{0}]
+jarScan.webinfclassesFail=Impossible de parcourir /WEB-INF/classes
+jarScan.webinflibFail=Échec de scan du JAR [{0}] de /WEB-INF/lib
+jarScan.webinflibJarNoScan=Le JAR [{0}] dans /WEB-INF/lib ne sera pas analysé
+jarScan.webinflibJarScan=Analyse du JAR [{0}] dans /WEB-INF/lib
+jarScan.webinflibStart=Recherche de JARs dans /WEB-INF/lib
diff --git a/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties b/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
index 09697dc..f80be7b 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
@@ -13,3 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+threadPoolExecutor.threadStoppedToAvoidPotentialLeak=Arrêt du thread [{0}] pour éviter de potentielles fuites de mémoire après l''arrêt d''un contexte
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index cf7855a..5746058 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -60,6 +60,10 @@
         Back-port various corrections and improvements to the Spanish i18n
         messages. (markt)
       </fix>
+      <fix>
+        Back-port various corrections and improvements to the French i18n
+        messages. (markt)
+      </fix>
     </changelog>
   </subsection>
 </section>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org