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 15:22:16 UTC

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

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

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

commit d5ec642f628d714cde6e5c6f33295490357037d6
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Aug 15 16:17:27 2019 +0100

    Back-port additions and improvements to the French i18n messages
---
 .../http => el}/LocalStrings_fr.properties         |  20 +-
 java/javax/servlet/LocalStrings_fr.properties      |   6 +-
 java/javax/servlet/http/LocalStrings_fr.properties |  15 +-
 .../catalina/connector/LocalStrings_fr.properties  |  43 +++-
 .../catalina/core/LocalStrings_fr.properties       | 250 ++++++++++++++++-----
 .../catalina/deploy/LocalStrings_fr.properties     |  25 +++
 .../catalina/ha/deploy/LocalStrings_fr.properties  |  52 +++++
 .../catalina/ha/session/LocalStrings_fr.properties |  84 +++++++
 .../catalina/ha/tcp/LocalStrings_fr.properties     |  30 +++
 .../catalina/loader/LocalStrings_fr.properties     |  47 +++-
 .../catalina/manager/LocalStrings_fr.properties    | 137 ++++++++---
 .../manager/host/LocalStrings_fr.properties        |  84 +++++++
 .../catalina/mbeans/LocalStrings_fr.properties     |  11 +-
 .../catalina/realm/LocalStrings_fr.properties      | 105 ++++++---
 .../catalina/security/LocalStrings_fr.properties   |   8 +-
 .../catalina/session/LocalStrings_fr.properties    |  68 +++---
 .../catalina/startup/LocalStrings_fr.properties    | 156 ++++++++++---
 .../tribes/transport}/LocalStrings_fr.properties   |   1 +
 .../tribes/util}/LocalStrings_fr.properties        |   5 +-
 .../catalina/users/LocalStrings_fr.properties      |  13 +-
 .../catalina/util/LocalStrings_fr.properties       |  39 +++-
 .../catalina/valves/LocalStrings_fr.properties     | 123 ++++++++--
 java/org/apache/coyote/LocalStrings_fr.properties  |  32 +++
 .../apache/coyote/ajp/LocalStrings_fr.properties   |  29 +++
 .../coyote/http11/LocalStrings_fr.properties       |  23 ++
 .../http11/filters/LocalStrings_fr.properties      |  27 +++
 .../http11/upgrade/LocalStrings_fr.properties      |  23 ++
 .../jasper/resources/LocalStrings_fr.properties    |   7 +
 .../naming/factory/LocalStrings_fr.properties      |   4 +
 .../apache/tomcat/util/LocalStrings_fr.properties  |  30 +++
 .../tomcat/util/buf}/LocalStrings_fr.properties    |   7 +-
 .../tomcat/util/compat}/LocalStrings_fr.properties |   5 +-
 .../util/descriptor}/LocalStrings_fr.properties    |   8 +-
 .../tomcat/util/http/LocalStrings_fr.properties    |  34 +++
 .../util/http/parser/LocalStrings_fr.properties    |  34 +++
 .../tomcat/util/scan}/LocalStrings_fr.properties   |  13 +-
 .../util/threads/res/LocalStrings_fr.properties    |   1 +
 .../tomcat/websocket/LocalStrings_fr.properties    | 120 ++++++++++
 .../websocket/server/LocalStrings_fr.properties    |  40 ++++
 webapps/docs/changelog.xml                         |   4 +
 .../WEB-INF/classes/LocalStrings_fr.properties     |  18 +-
 41 files changed, 1508 insertions(+), 273 deletions(-)

diff --git a/java/javax/servlet/http/LocalStrings_fr.properties b/java/javax/el/LocalStrings_fr.properties
similarity index 51%
copy from java/javax/servlet/http/LocalStrings_fr.properties
copy to java/javax/el/LocalStrings_fr.properties
index bffd4c0..3c02fcb 100644
--- a/java/javax/servlet/http/LocalStrings_fr.properties
+++ b/java/javax/el/LocalStrings_fr.properties
@@ -13,12 +13,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.cookie_name_is_token=Le nom de cookie "{0}" est un "token" réservé
-err.io.negativelength=Taille négative donnée dans la méthode "write"
-err.io.short_read=Lecture partielle
+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}]
 
-http.method_delete_not_supported=La méthode HTTP DELETE n''est pas supportée par cette URL
-http.method_get_not_supported=La méthode HTTP GET n''est pas supportée par cette URL
-http.method_not_implemented=Le méthode {0} n''est pas définie dans la RFC 2068 et n''est pas supportée par l''API Servlet
-http.method_post_not_supported=La méthode HTTP POST n''est pas supportée par cette URL
-http.method_put_not_supported=La méthode HTTP PUT n''est pas supportée par cette URL
+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}]
+
+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 35917f1..603b694 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/javax/servlet/LocalStrings_fr.properties
@@ -13,7 +13,11 @@
 # 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
+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/javax/servlet/http/LocalStrings_fr.properties b/java/javax/servlet/http/LocalStrings_fr.properties
index bffd4c0..4260bca 100644
--- a/java/javax/servlet/http/LocalStrings_fr.properties
+++ b/java/javax/servlet/http/LocalStrings_fr.properties
@@ -13,12 +13,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-err.cookie_name_is_token=Le nom de cookie "{0}" est un "token" réservé
+err.cookie_name_blank=Le nom de cookie ne doit pas être null ou vide
+err.cookie_name_is_token=Le nom de cookie [{0}] est un "token" réservé
+err.io.indexOutOfBounds=L''offset [{0}] et/ou la longueur [{1}] spécifiés pour la taille du tableau [{2}] sont invalides
 err.io.negativelength=Taille négative donnée dans la méthode "write"
+err.io.nullArray=Null a été passée comme tableau d'octets à la méthode d'écriture
 err.io.short_read=Lecture partielle
 
-http.method_delete_not_supported=La méthode HTTP DELETE n''est pas supportée par cette URL
-http.method_get_not_supported=La méthode HTTP GET n''est pas supportée par cette URL
-http.method_not_implemented=Le méthode {0} n''est pas définie dans la RFC 2068 et n''est pas supportée par l''API Servlet
-http.method_post_not_supported=La méthode HTTP POST n''est pas supportée par cette URL
-http.method_put_not_supported=La méthode HTTP PUT n''est pas supportée par cette URL
+http.method_delete_not_supported=La méthode HTTP DELETE n'est pas supportée par cette URL
+http.method_get_not_supported=La méthode HTTP GET n'est pas supportée par cette URL
+http.method_not_implemented=Le méthode [{0}] n''est pas implémentée par ce Servlet pour cette URI
+http.method_post_not_supported=La méthode HTTP POST n'est pas supportée par cette URL
+http.method_put_not_supported=La méthode HTTP PUT n'est pas supportée par cette URL
diff --git a/java/org/apache/catalina/connector/LocalStrings_fr.properties b/java/org/apache/catalina/connector/LocalStrings_fr.properties
index 468f66c..8772c5c 100644
--- a/java/org/apache/catalina/connector/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/connector/LocalStrings_fr.properties
@@ -24,30 +24,59 @@ coyoteAdapter.nullRequest=Un dispatch asynchrone peut seulement se produire sur
 coyoteAdapter.parsePathParam=Impossible de parser les paramètres du chemin en utilisant l''encodage [{0}]. Les paramètres du chemin (path) dans le URL seront ignorés.
 
 coyoteConnector.cannotRegisterProtocol=Impossible d''enregistrer le MBean pour le Protocol
+coyoteConnector.invalidPort=Le connecteur ne peut pas démarrer, parce que la valeur spécifiée du port [{0}] n''est pas valide
+coyoteConnector.parseBodyMethodNoTrace=La méthode "TRACE" NE PEUT PAS contenir une entité (voir RFC 2616 Section 9.6)
 coyoteConnector.protocolHandlerDestroyFailed=La destruction du gestionnaire de protocole a échoué
-coyoteConnector.protocolHandlerInitializationFailed=L''initialisation du gestionnaire de protocole a échoué
-coyoteConnector.protocolHandlerInstantiationFailed=L''instantiation du gestionnaire de protocole a échoué
+coyoteConnector.protocolHandlerInitializationFailed=L'initialisation du gestionnaire de protocole a échoué
+coyoteConnector.protocolHandlerInstantiationFailed=L'instantiation du gestionnaire de protocole a échoué
 coyoteConnector.protocolHandlerPauseFailed=La suspension du gestionnaire de protocole a échouée
 coyoteConnector.protocolHandlerResumeFailed=Le redémarrage du gestionnaire de protocole a échoué
 coyoteConnector.protocolHandlerStartFailed=Le démarrage du gestionnaire de protocole a échoué
+coyoteConnector.protocolHandlerStopFailed=L'arrêt du gestionnaire de protocole a échoué
 coyoteConnector.protocolRegistrationFailed=L''enregistrement du protocol JMX a échoué
 
-coyoteRequest.attributeEvent=Une exception a été lancée par l''instance d''écoute pour l''évènement attributs (attributes)
+coyoteRequest.alreadyAuthenticated=Cette requête a déjà été authentifiée
+coyoteRequest.attributeEvent=Une exception a été lancée par l'instance d'écoute pour l'évènement attributs (attributes)
+coyoteRequest.authenticate.ise=Impossible d'appeler authenticate() après le début de l'envoi de la réponse
+coyoteRequest.chunkedPostTooLarge=Les paramètres n'ont pas été traités parce que la taille des données du POST étaient trop grandes; comme cette requête utilisait le découpage par morceaux (chunking), le traitement est arrêté; utiliser l'attribut maxPostSize du connecteur pour résoudre ce problème si l'application devrait accepter des tailles de POST plus importantes
+coyoteRequest.getContextPath.ise=Impossible de trouver une correspondance entre le chemin canonique du contexte [{0}] et l''URI envoyée par l''agent de l''utilisateur [{1}]
 coyoteRequest.getInputStream.ise="getReader()" a déjà été appelé pour cette requête
 coyoteRequest.getReader.ise="getInputStream()" a déjà été appelé pour cette requête
+coyoteRequest.gssLifetimeFail=Echec d''obtention de la durée de vie restante pour le "user principal" [{0}]
 coyoteRequest.listenerStart=Une exception s''est produite lors de l''envoi de l''évènement contexte initialisé à l''instance de classe d''écoute {0}
 coyoteRequest.listenerStop=Une exception s''est produite lors de l''envoi de l''évènement contexte détruit à l''instance de classe d''écoute {0}
-coyoteRequest.postTooLarge=Les paramètres n''ont pas été évalués car la taille des données postées est trop important. Utilisez l''attribut maxPostSize du connecteur pour corriger ce problème si votre application doit accepter des POSTs importants.
+coyoteRequest.maxPostSizeExceeded=La requête multi part contenait des données de paramètres (en excluant les fichiers envoyés) dont la taille a excédé la limite maxPostSize fixée sur le connecteur associé
+coyoteRequest.parseParameters=Exception lors du traitement des paramètres envoyés par POST
+coyoteRequest.postTooLarge=Les paramètres n'ont pas été évalués car la taille des données postées est trop important. Utilisez l'attribut maxPostSize du connecteur pour corriger ce problème si votre application doit accepter des POSTs importants.
+coyoteRequest.sendfileNotCanonical=Impossible d''obtenir le nom canonique du fichier [{0}] qui a été donné pour le sendfile
 coyoteRequest.sessionCreateCommitted=Impossible de créer une session après que la réponse ait été envoyée
-coyoteRequest.setAttribute.namenull=Impossible d''appeler "setAttribute" avec un nom nul
+coyoteRequest.sessionEndAccessFail=Exception lancée durant l'arrêt de l'accès à la session durant le recyclage de la requête
+coyoteRequest.setAttribute.namenull=Impossible d'appeler "setAttribute" avec un nom nul
+coyoteRequest.uploadCreate=Un répertoire temporaire [{0}] pour les fichiers envoyés sera crée car il est requis par le Servlet [{1}]
+coyoteRequest.uploadCreateFail=Echec de création du répertoire [{0}] pour les fichiers envoyés
+coyoteRequest.uploadLocationInvalid=Le répertoire temporaire [{0}] pour les envois de fichier est invalide
 
 coyoteResponse.getOutputStream.ise="getWriter()" a déjà été appelé pour cette réponse
 coyoteResponse.getWriter.ise="getOutputStream()" a déjà été appelé pour cette réponse
+coyoteResponse.reset.ise=Impossible d'appeler reset() après le début de l'envoi de la réponse
 coyoteResponse.resetBuffer.ise=Impossible de remettre à zéro le tampon après que la réponse ait été envoyée
-coyoteResponse.sendError.ise=Impossible d''appeler "sendError()" après que la réponse ait été envoyée
-coyoteResponse.sendRedirect.ise=Impossible d''appeler "sendRedirect()" après que la réponse ait été envoyée
+coyoteResponse.sendError.ise=Impossible d'appeler "sendError()" après que la réponse ait été envoyée
+coyoteResponse.sendRedirect.ise=Impossible d'appeler "sendRedirect()" après que la réponse ait été envoyée
+coyoteResponse.sendRedirect.note=<html><body><p>Redirection vers <a href="{0}">{0}</a></p></body></html>
 coyoteResponse.setBufferSize.ise=Impossible de changer la taille du tampon après que les données aient été écrites
 
+inputBuffer.streamClosed=Le flux a été fermé
+
 mapperListener.registerContext=Enregistrement du contexte {0}
 mapperListener.registerWrapper=Enregistrement de l''enrobeur (wrapper) {0} dans le contexte {1}
 mapperListener.unregisterContext=Désenregistrement du contexte {0}
+
+request.asyncNotSupported=Un filtre ou un Servlet de la chaîne actuelle ne supporte pas le mode asynchrone
+request.fragmentInDispatchPath=Le fragment dans le chemin de dispatch [{0}] a été enlevé
+request.notAsync=Il est interdit d'appeler cette méthode si la requête actuelle n'est pas en mode asynchrone (isAsyncStarted() a renvoyé false)
+
+requestFacade.nullRequest=L'objet requête a été recyclé et n'est plus associé à cette façade
+
+response.sendRedirectFail=Impossible d''envoyer une redirection vers [{0}]
+
+responseFacade.nullResponse=L'objet réponse a été recyclé et n'est plus associé à cette façade
diff --git a/java/org/apache/catalina/core/LocalStrings_fr.properties b/java/org/apache/catalina/core/LocalStrings_fr.properties
index 089ed31..b558b24 100644
--- a/java/org/apache/catalina/core/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/core/LocalStrings_fr.properties
@@ -13,17 +13,50 @@
 # 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.requestDispatcher.iae=Le chemin {0} ne commence pas par le caractère "/"
+applicationContext.addFilter.ise=Des filtres ne peuvent plus être ajoutés au contexte [{0}] car il a déjà été initialisé
+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.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.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.throw=La ressource faire-suivre (forwarded) a lancé une exception
 applicationDispatcher.include.throw=La ressource incluse (included) a lancé une exception
-applicationDispatcher.isUnavailable=La servlet {0} est actuellement indisponible
-applicationDispatcher.serviceException="Servlet.service()" pour la servlet {0} a lancé une exception
+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é
 
 applicationRequest.badParent=Impossible de trouver l''implémentation requête parente (parent request)
 applicationRequest.badRequest=La requête n''est pas une "javax.servlet.ServletRequestWrapper"
@@ -31,7 +64,35 @@ applicationRequest.badRequest=La requête n''est pas une "javax.servlet.ServletR
 applicationResponse.badParent=Impossible de trouver une implémentation réponse parente (parent response)
 applicationResponse.badResponse=La réponse n''est pas une "javax.servlet.ServletResponseWrapper"
 
+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.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.asyncRunnableError=Erreur lors du traitement asynchrone du Runnable via AsyncContext.start()
 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é
 asyncContextImpl.noAsyncDispatcher=Le Servlet dispatcher retourné par le ServletContext ne supporte pas de dispatch asynchrone
 asyncContextImpl.onCompleteError=L''appel à onComplete() a échoué pour l''écouteur de type [{0}]
@@ -43,77 +104,135 @@ asyncContextImpl.requestEnded=La requête associée avec l'AsyncContext est déj
 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.alreadyStarted=Le conteneur {0} a déjà été démarré
+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.notConfigured=Aucune Valve basique (basic valve) n''a été configurée
 containerBase.notStarted=Le conteneur {0} n''a pas été démarré
+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
 
-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.namingContextCreationFailed=La création du contexte de nommage (naming context) a échoué : {0}
-naming.unbindFailed=Echec lors du déliage à l''objet : {0}
+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}]
+
+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
 
 standardContext.alreadyStarted=Le contexte a déjà été démarré
-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.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.backgroundProcess.instanceManager=Exception lors du traitement d''arrière plan du gestionnaire d''instances [{0}]
 standardContext.badRequest=Chemin de requête invalide ({0}).
-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.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.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.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=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.filterStartFailed=Echec du démarrage des filtres d''application
-standardContext.isUnavailable=Cette application n''est pas disponible actuellement
-standardContext.listenerStart=Exception lors de l''envoi de l''évènement contexte initialisé (context initialized) à l''instance de classe d''écoute (listener) {0}
+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.listenerStartFailed=Echec du démarrage des écouteurs (listeners) d''application
-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.listenerStop=Exception lors de l''envoi de l''évènement contexte détruit (context destroyed) à l''instance de classe d''écoute [{0}]
+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.mappingError=Erreur dans la configuration d''association (mapping configuration) pour l''URI relative {0}
+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.notFound=La ressource demandée ({0}) n''est pas disponible.
 standardContext.notReloadable=Le rechargement est désactivé pour ce contexte
 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.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.reloadingFailed=Le rechargement de ce contexte a échoué suite à une erreur précédente
 standardContext.reloadingStarted=Le rechargement du contexte [{0}] a démarré
 standardContext.requestListener.requestDestroy=Une exception lors de l''envoi de requête a détruit un évènement cycle de vie (lifecycle event) pour l''instance de classe à l''écoute (listener) {0}
-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.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.requestListenerConfig.added=Ajout de la valve d''écoute
 standardContext.requestListenerConfig.error=Exception lors de l''ajout de la valve d''écoute de requête: {0}
 standardContext.requestListenerStartFailed=Echec démarrage des Valves d''écoute
+standardContext.resourcesInit=Erreur d'initialisation des ressources statiques
 standardContext.resourcesStart=Erreur lors du démarrage des ressources statiques
-standardContext.securityConstraint.pattern=<url-pattern> {0} invalide d''après les contraintes de sécurité (security constraint)
-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.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.startCleanup=Exception lors du nettoyage après que le démarrage ait échoué
 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.startingLoader=Exception an démarrage du "Loader"
 standardContext.startingManager=Exception an démarrage du "Manager"
 standardContext.startingWrapper=Exception an démarrage de l''enrobeur (wrapper) de la servlet {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.stoppingLoader=Exception à l''arrêt du "Loader"
 standardContext.stoppingManager=Exception à l''arrêt du "Manager"
 standardContext.stoppingWrapper=Exception à l''arrêt de l''enrobeur (wrapper) de la servlet {0}
 standardContext.urlDecode=Impossible de décoder le chemin de requête encodé dans l''URL {0}
-standardContext.urlPattern.patternWarning=ATTENTION: Le modèle (pattern) URL {0} doit commencer par un ''/'' dans l''API Servlet 2.4
+standardContext.urlPattern.patternWarning=WARNING: Le modèle (pattern) d''URL [{0}] doit commencer par un ''/'' dans l''API Servlet 2.4
 standardContext.urlValidate=Impossible de valider le chemin de requête encodé dans l''URL {0}
+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.alreadyStarted=Le moteur a déjà été démarré
+standardEngine.jvmRouteFail=Impossible de fixer la jvmRoute de l'Engine à partir d'une propriété système
 standardEngine.mappingError=Erreur de configuration d''association (mapping configuration) pour le serveur {0}
-standardEngine.noHost=Aucune hôte (host) ne correspond au nom de serveur {0}
+standardEngine.noHost=Aucune hôte (host) ne correspond au nom de serveur [{0}]
 standardEngine.noHostHeader=requête HTTP/1.1 sans entête Host:
-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)
 standardEngine.notStarted=Le moteur n''a pas encore été démarré
 standardEngine.unfoundHost=L''hôte virtuel (virtual host) {0} est introuvable
@@ -122,23 +241,25 @@ standardEngine.unknownHost=Aucun serveur hôte n''est indiqué pour cette requê
 standardHost.accessBase=Impossible d''accéder le répertoire "document base" {0}
 standardHost.alreadyStarted=L''hôte a déjà été démarré
 standardHost.appBase=Le répertoire de base de l''application {0} n''existe pas
+standardHost.clientAbort=Le client distant a abandonné la requête, IOException: [{0}]
 standardHost.configNotAllowed=L''utilisation d''un fichier de configuration n''est pas autorisée
 standardHost.configRequired=Une URL vers le fichier de configuration est obligatoire
 standardHost.docBase=Le répertoire "document base" {0} existe déjà
 standardHost.installError=Erreur lors du déploiement de l''application pour le chemin de contexte {0}
 standardHost.installing=Installation d''une application pour le chemin de contexte {0} depuis l''URL {1}
 standardHost.installingWAR=Installation d''une application depuis l''URL {0}
-standardHost.invalidErrorReportValveClass=Impossible de charger la classe valve de rapport d''erreur: {0}
+standardHost.invalidErrorReportValveClass=Impossible de charger la classe valve de rapport d''erreur: [{0}]
 standardHost.mappingError=Erreur d''association de configuration (mapping configuration) pour l''URI demandée {0}
-standardHost.noContext=Aucun contexte n''est configuré pour traiter cette requête
+standardHost.noContext=Aucun contexte n'est configuré pour traiter cette requête
 standardHost.noHost=Aucun hôte 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.notContext=Le fils d'un hôte (child of a Host) doit être un contexte
 standardHost.notStarted=l''hôte n''a pas encore été démarré
-standardHost.nullName=Le nom d''hôte est requis
+standardHost.nullName=Le nom d'hôte est requis
 standardHost.pathFormat=Chemin de contexte invalide: {0}
 standardHost.pathMissing=Le chemin de contexte {0} n''est pas utilisé actuellement
 standardHost.pathRequired=Le chemin de contexte est requis
 standardHost.pathUsed=Le chemin de contexte {0} est déjà utilisé
+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
 standardHost.removeError=Erreur lors du retrait de l''application web pour le chemin de contexte {0}
 standardHost.removing=Retrait de l''application web pour le chemin de contexte {0}
 standardHost.start=Démarrage de l''application web pour le chemin de contexte {0}
@@ -147,35 +268,46 @@ standardHost.unfoundContext=Impossible de trouver un contexte pour l''URI {0} de
 standardHost.warRequired=Une URL vers l''archive d''application web (war) est nécessaire
 standardHost.warURL=URL vers l''archive d''application web (war) invalide: {0}
 
-standardService.start.name=Démarrage du service {0}
-standardService.stop.name=Arrêt du service {0}
+standardHostValue.customStatusFailed=La page d''erreur personnalisée [{0}] n''a pu être redirigée correctement
 
-standardWrapper.allocate=Erreur d''allocation à une instance de servlet
-standardWrapper.allocateException=Exception lors de l''allocation pour la servlet {0}
+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
+
+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.allocateException=Exception lors de l''allocation pour la servlet [{0}]
 standardWrapper.containerServlet=Chargement du conteneur (container) de servlet {0}
 standardWrapper.createFilters=Exception à la création de filtres 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.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.exception0=Rapport d''exception Tomcat
 standardWrapper.exception1=Une exception Servlet s''est produite
 standardWrapper.exception2=Rapport d''exception:
 standardWrapper.exception3=Cause mère:
-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.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.jasperLoader=Utilisation du chargeur de classe Jasper (classloader) pour la servlet {0}
 standardWrapper.jspFile.format=Le fichier JSP {0} ne commence par par un caractère ''/''
 standardWrapper.missingClass=L''enrobeur (wrapper) ne peut trouver la classe servlet {0} ou une classe dont elle dépend
 standardWrapper.missingLoader=L''enrobeur (wrapper) ne peut trouver de chargeur (loader) pour la servlet {0}
-standardWrapper.notChild=L''enrobeur de conteneur (wrapper container) peut ne 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.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.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.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.statusHeader=Etat HTTP {0} - {1}
 standardWrapper.statusTitle=Rapport d''erreur Tomcat
-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.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/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..5f17ea7
--- /dev/null
+++ b/java/org/apache/catalina/ha/session/LocalStrings_fr.properties
@@ -0,0 +1,84 @@
+# 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é
+
+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.showPrincipal=Le principal [{0}] est associé à la session [{1}]
+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..da2ca1f
--- /dev/null
+++ b/java/org/apache/catalina/ha/tcp/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.
+
+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)
diff --git a/java/org/apache/catalina/loader/LocalStrings_fr.properties b/java/org/apache/catalina/loader/LocalStrings_fr.properties
index aebc23d..b2a7397 100644
--- a/java/org/apache/catalina/loader/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/loader/LocalStrings_fr.properties
@@ -30,17 +30,56 @@ standardLoader.removeRepository=Retrait du réceptacle (repository) {0}
 standardLoader.starting=Démarrage de ce chargeur (loader)
 standardLoader.stopping=Arrêt de ce chargeur (loader)
 
+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.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.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.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.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.addRepository=Ajout du réceptacle (repository) {0}
 webappLoader.alreadyStarted=Le chargeur (loader) a déjà été démarré
 webappLoader.checkInterval=Impossible de régler l''interval de vérification de rechargement à {0} secondes
-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.classDeploy=Déploiement des fichiers classes [{0}] vers [{1}]
+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.failModifiedCheck=Erreur dans le suivi des modifications
-webappLoader.jarDeploy=Déploiement du JAR {0} vers {1}
+webappLoader.jarDeploy=Déploiement du JAR [{0}] vers [{1}]
+webappLoader.mkdirFailure=Impossible de créer le répertoire de destination pour copier les ressources
 webappLoader.notContext=Impossible d''auto-recharger sans que le conteneur ne soit un contexte
 webappLoader.notReloadabe=Propriété de rechargement (reloadable property) mise à faux
 webappLoader.notStarted=Le chargeur (loader) n''a pas encore été démarré
-webappLoader.reloadable=Impossible de mettre la propriété de rechargement (reloadable property) à {0}
+webappLoader.reloadable=Impossible de mettre la propriété rechargeable à [{0}]
 webappLoader.reloading=Les vérifications de rechargement sont activées pour ce contexte
 webappLoader.removeRepository=Retrait du réceptacle (repository) {0}
 webappLoader.starting=Démarrage 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 26e6e48..6ff325d 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,80 +24,143 @@ htmlManagerServlet.appsStop=Arrêter
 htmlManagerServlet.appsTasks=Commandes
 htmlManagerServlet.appsTitle=Applications
 htmlManagerServlet.appsUndeploy=Retirer
+htmlManagerServlet.appsVersion=Version
+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):
 htmlManagerServlet.deployServer=Emplacement du répertoire ou fichier WAR de déploiement sur le serveur
 htmlManagerServlet.deployTitle=Deployer
 htmlManagerServlet.deployUpload=Fichier WAR à déployer
-htmlManagerServlet.deployUploadFail=ECHEC - Téléversement pour déploiement a échoué, exception: {0}
+htmlManagerServlet.deployUploadFail=ECHEC - Téléversement pour déploiement a échoué, exception: [{0}]
 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.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.deployUploadNotWar=ECHEC - Fichier à téléverser, [{0}], doit être un .war
+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.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.alreadyContext=ECHEC - l''application existe déjà dans le chemin [{0}]
 managerServlet.alreadyDocBase=ECHEC - Le répertoire {0} est déjà utilisé
 managerServlet.configured=OK - Application configurée depuis le fichier contexte {0}
-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.invalidPath=ECHEC - Un chemin de contexte invalide {0} a été spécifié
+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.invalidWar=ECHEC - Une URL d''application invalide {0} a été spécifiée
-managerServlet.listed=OK - Applications listées pour l''hôte virtuel (virtual host) {0}
+managerServlet.listed=OK - Applications listées pour l''hôte virtuel (virtual host) [{0}]
 managerServlet.listitem={0}:{1}:{2}:{3}
+managerServlet.mkdirFail=ECHEC - Le répertoire [{0}] n''a pas pu être créé
 managerServlet.noAppBase=ECHEC - Impossible d''identifier la base de l''application base pour le chemin de contexte {0}
-managerServlet.noCommand=ECHEC - Aucune commande n''a été spécifiée
-managerServlet.noContext=ECHEC - Aucun contexte n''existe pour le chemin {0}
+managerServlet.noCommand=ECHEC - Aucune commande n'a été spécifiée
+managerServlet.noContext=ECHEC - Aucun contexte n''existe pour le chemin [{0}]
 managerServlet.noDirectory=ECHEC - La base de document n''est pas un répertoire pour le chemin {0}
 managerServlet.noDocBase=ECHEC - Impossible de retirer la base de document pour le chemin {0}
-managerServlet.noGlobal=ECHEC - Aucune ressource JNDI globale n''est disponible
-managerServlet.noManager=ECHEC - Aucun gestionnaire n''existe pour le chemin {0}
+managerServlet.noGlobal=ECHEC - Aucune ressource JNDI globale n'est disponible
+managerServlet.noManager=ECHEC - Aucun gestionnaire n''existe pour le chemin [{0}]
 managerServlet.noReload=ECHEC - Rechargement non supporté par le WAR déployé au chemin {0}
 managerServlet.noRename=ECHEC - Impossible de déployer un WAR téléchargé pour le chemin {0}
 managerServlet.noRole=ECHEC - L''utilisateur ne possède pas le rôle {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.notDeployed=ECHEC - Le contexte {0} est défini dans server.xml et ne peut être retiré
-managerServlet.reloaded=OK - L''application associée au chemin de contexte {0} a été rechargée
+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.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.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.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.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.unknownCommand=ECHEC - Commande inconnue {0}
+managerServlet.savedContext=OK - Configuration du contexte [{0}] sauvegardée
+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=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.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.threaddump=OK - Etat des threads de la JVM
+managerServlet.undeployed=OK - Application non déployée pour le chemin de contexte [{0}]
+managerServlet.unknownCommand=ECHEC - Commande inconnue [{0}]
 managerServlet.userDatabaseError=ECHEC - Impossible de résoudre la base de données utilisateurs de référence
 managerServlet.userDatabaseMissing=ECHEC - Aucune base de données utilisateurs n''est disponible
+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..7fdb031
--- /dev/null
+++ b/java/org/apache/catalina/manager/host/LocalStrings_fr.properties
@@ -0,0 +1,84 @@
+# 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.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.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.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/mbeans/LocalStrings_fr.properties b/java/org/apache/catalina/mbeans/LocalStrings_fr.properties
index 8c3b8f7..1c6553b 100644
--- a/java/org/apache/catalina/mbeans/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/mbeans/LocalStrings_fr.properties
@@ -13,8 +13,9 @@
 # See the License for the specific language governing permissions and
 # 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.destroyServerFailed=Le connecteur serveur JMX pour le serveur {0} n''a pas pu être stoppé
-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}
+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éé 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}]
diff --git a/java/org/apache/catalina/realm/LocalStrings_fr.properties b/java/org/apache/catalina/realm/LocalStrings_fr.properties
index aac571f..a6e9b3c 100644
--- a/java/org/apache/catalina/realm/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/realm/LocalStrings_fr.properties
@@ -13,43 +13,88 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-jaasRealm.accountExpired=le nom d''utilisateur {0} N''A PAS été authentifié car le compte a expiré
-jaasRealm.authenticateSuccess=le nom d''utilisateur {0} a été authentifié avec succès
-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.loginException=Exception lors de l''authentification par login du nom d''utilisateur {0}
-
-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
+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é
+
+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
-
-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)
-
-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}
+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.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
+
+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
 
-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.alreadyStarted=Ce royaume (Realm) a déjà été démarré
-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.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}
+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.createUsernameRetriever.ClassCastException=La classe [{0}] n''est pas un X509UsernameRetriever.
+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}]
 realmBase.notAuthenticated=Erreur de configuration:  Impossible de conduire un contrôle d''accès sans un principal authentifié (authenticated principal)
 realmBase.notStarted=Ce royaume (Realm) n''a pas encore été démarré
 
 userDatabaseRealm.authenticateError=Erreur de configuration du contrôle d''accès (login) lors de l''authentification du nom d''utilisateur {0}
-userDatabaseRealm.lookup=Exception lors de la recherche dans la base de données utilisateurs avec la clé {0}
-userDatabaseRealm.noDatabase=Aucun composant base de données utilisateurs trouvé pour la clé {0}
+userDatabaseRealm.lookup=Exception lors de la recherche dans la base de données utilisateurs avec la clé [{0}]
+userDatabaseRealm.noDatabase=Aucun composant base de données utilisateurs trouvé pour la clé [{0}]
 userDatabaseRealm.noEngine=Aucun composant moteur (engine component) trouvé dans la hiérarchie des conteneurs
 userDatabaseRealm.noGlobal=Aucune ressource globale JNDI trouvée
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 7ea1f6f..7cc78da 100644
--- a/java/org/apache/catalina/session/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/session/LocalStrings_fr.properties
@@ -13,51 +13,67 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-JDBCStore.SQLException=Erreur SQL {0}
-JDBCStore.checkConnectionClassNotFoundException=La classe du driver JDBC n''a pas été trouvée {0}
+JDBCStore.SQLException=Erreur SQL [{0}]
+JDBCStore.checkConnectionClassNotFoundException=La classe du driver JDBC n''a pas été trouvée [{0}]
 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.loading=Chargement de la Session {0} depuis la base de données {1}
-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.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}]
 
 applicationSession.session.ise=état de session invalide
 applicationSession.value.iae=valeur nulle
 
-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}
+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.createSession.ise="createSession": Trop de sessions actives
-managerBase.sessionTimeout=Réglage du délai d''inactivité (timeout) de session invalide {0}
+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.activeSession=La session {0} a été en attente durant {1} secondes
 persistentManager.backupException=Exception lors de la sauvegarde de la session {0}: {1}
-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.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}]
 persistentManager.expiring=Expiration de {0} sessions avant leur sauvegarde
-persistentManager.loading=Chargement de {0} sessions persistantes
+persistentManager.loading=Chargement de [{0}] sessions persistantes
 persistentManager.processSwaps=Recherche de sessions à basculer vers stockage (swap out), {0} sessions actives en mémoire
-persistentManager.serializeError=Erreur lors de la sérialisation de la session {0}: {1}
-persistentManager.swapIn=Basculement depuis le stockage (swap in) de la session {0}
-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)
-persistentManager.unloading=Sauvegarde 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)
+persistentManager.unloading=Sauvegarde de [{0}] sessions persistantes
 
 serverSession.value.iae=valeur nulle
 
 standardManager.expireException="processsExpire":  Exception lors de l''expiration de la session
-standardManager.loading=Chargement des sessions qui ont persisté depuis {0}
+standardManager.loading=Chargement des sessions qui ont persisté depuis [{0}]
 standardManager.loading.cnfe="ClassNotFoundException" lors du chargement de sessions persistantes: {0}
 standardManager.loading.ioe="IOException" lors du chargement de sessions persistantes: {0}
 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=Sauvegarde des sessions ayant persisté vers [{0}]
+standardManager.unloading.debug=Déchargement des session persistées
 standardManager.unloading.ioe="IOException" lors de la sauvegarde de sessions persistantes: {0}
+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
@@ -68,10 +84,12 @@ standardSession.getThisAccessedTime.ise="getThisAccessedTime": Session déjà in
 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.notSerializable=Impossible de sérialiser l''attribut de session {0} pour la session {1}
+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.sessionCreated=Création de l''Id de Session = {0}
-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.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 b7295fb..5b4f60b 100644
--- a/java/org/apache/catalina/startup/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/startup/LocalStrings_fr.properties
@@ -13,53 +13,145 @@
 # 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
-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.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}
+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
+
+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.cce=L''objet donnée évènement cycle de vie (Lifecycle event data object) {0} n''est pas un Contexte
-contextConfig.defaultPosition=S''est produite à la ligne {0} colonne {1}
-contextConfig.jspFile.error=Le fichier JSP {0} doit commencer par un ''/''
-contextConfig.jspFile.warning=ATTENTION: Le fichier JSP {0} doit commencer par un  ''/'' dans l''API Servlet 2.4
-contextConfig.missingRealm=Aucun royaume (realm) n''a été configuré pour réaliser l''authentification
-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.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.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=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.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.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"
 
-hostConfig.cce=L''objet donnée évènement cycle de vie (Lifecycle event data object) {0} n''est pas un hôte
+expandWar.copy=Erreur lors de la copie de [{0}] vers [{1}]
+expandWar.createFailed=Impossible de créer le répertoire [{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.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.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=Déploiement du répertoire {0} de l''application web
-hostConfig.deploy.error=Exception lors du répertoire {0} de l''application web
-hostConfig.deployDescriptor=Déploiement du descripteur de configuration {0}
-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.deployDir.error=Erreur lors du déploiement du répertoire {0} de l''application web
-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.deploying=Déploiement des applications web découvertes (discovered)
-hostConfig.expand=Décompression de l''archive {0} de l''application web
-hostConfig.expand.error=Exception lors de la décompression de l''archive {0} de l''application web
-hostConfig.expanding=Décompression des archives des applications web découvertes (discovered)
+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.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.undeploy.error=Erreur lors du repli (undeploy) 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
 hostConfig.undeploying=Repli des applications web déployées
 
+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}]
+
 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=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.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/threads/res/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/transport/LocalStrings_fr.properties
similarity index 90%
copy from java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
copy to java/org/apache/catalina/tribes/transport/LocalStrings_fr.properties
index 09697dc..2bc314f 100644
--- a/java/org/apache/tomcat/util/threads/res/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/tribes/transport/LocalStrings_fr.properties
@@ -13,3 +13,4 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+PooledSender.senderDisconnectFail=Impossible de se déconnecter de l'envoyeur
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/catalina/tribes/util/LocalStrings_fr.properties
similarity index 84%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/catalina/tribes/util/LocalStrings_fr.properties
index 35917f1..cfb8056 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/tribes/util/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
+uuidGenerator.createRandom=La création d''une instance de SecureRandom pour le génération des UUID en utilisant [{0}] a pris [{1}] millisecondes
diff --git a/java/org/apache/catalina/users/LocalStrings_fr.properties b/java/org/apache/catalina/users/LocalStrings_fr.properties
index ed898da..8b62d4b 100644
--- a/java/org/apache/catalina/users/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/users/LocalStrings_fr.properties
@@ -13,6 +13,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-memoryUserDatabase.renameNew=Impossible de renommer le nouveau fichier en {0}
-memoryUserDatabase.renameOld=Impossible de renommer le fichier original en {0}
-memoryUserDatabase.writeException=IOException lors de l''écriture vers {0}
+memoryUserDatabase.fileNotFound=La base d''utilisateurs spécifiée [{0}] n''a pas été trouvée
+memoryUserDatabase.notPersistable=La base de donnée des utilisateurs ne peut pas être persistée, il n'y a pas de permissions d'écriture sur le répertoire
+memoryUserDatabase.nullGroup=Un nom de groupe nul ou vide a été spécifié, le groupe sera ignoré
+memoryUserDatabase.nullRole=Le nom du rôle spécifié est nul ou a une taille de zéro. Le rôle sera ignoré.
+memoryUserDatabase.nullUser=Le nom d'utilisateur est null ou a une longueur de zéro, il sera ignoré
+memoryUserDatabase.readOnly=La base de donnée utilisateurs a été configurée en mode lecture seule, les modifications ne peuvent être sauvegardées
+memoryUserDatabase.renameNew=Impossible de renommer le nouveau fichier en [{0}]
+memoryUserDatabase.renameOld=Impossible de renommer le fichier d''origine en [{0}]
+memoryUserDatabase.writeException=IOException lors de l''écriture vers [{0}]
+memoryUserDatabase.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
diff --git a/java/org/apache/catalina/util/LocalStrings_fr.properties b/java/org/apache/catalina/util/LocalStrings_fr.properties
index ec14b40..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.
 
-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).
+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.random=Exception durant l''initialisation de la classe du générateur de nombre aléatoire {0}
+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 abe6c9f..dc73e44 100644
--- a/java/org/apache/catalina/valves/LocalStrings_fr.properties
+++ b/java/org/apache/catalina/valves/LocalStrings_fr.properties
@@ -13,46 +13,125 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+accessLogValve.alreadyExists=Échec de renommage du journal d''accès de [{0}] en [{1}], le fichier existe déjà.
+accessLogValve.closeFail=Échec de fermeture du fichier de journal d'accès
+accessLogValve.deleteFail=Impossible d''effacer l''ancien journal d''accès [{0}]
+accessLogValve.invalidLocale=Impossible de définir les paramètres régionaux sur [{0}]
+accessLogValve.invalidPortType=Type de port [{0}] invalide, utilisation du port (local) de serveur
+accessLogValve.openDirFail=Echec de création du répertoire [{0}] pour les journaux d''accès
+accessLogValve.openFail=Echec à l''ouverture du journal d''accès [{0}]
+accessLogValve.renameFail=Échec de renommage du journal d''accès de [{0}] en [{1}]
+accessLogValve.rotateFail=Échec de rotation des journaux d'accès
+accessLogValve.unsupportedEncoding=Impossible de changer l''encodage en [{0}], le jeu de caractères par défaut du système sera utilisé
+
 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.
 
 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}]
 requestFilterValve.next=Aucune Valve ''suivante'' n''a été configurée
 requestFilterValve.syntax=Erreur de syntaxe dans le pattern de filtre de requête {0}
 
+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)
+
 valveBase.noNext=Erreur de configuration: aucune Valve ''suivante'' n''a été configurée
diff --git a/java/org/apache/coyote/LocalStrings_fr.properties b/java/org/apache/coyote/LocalStrings_fr.properties
new file mode 100644
index 0000000..38aa484
--- /dev/null
+++ b/java/org/apache/coyote/LocalStrings_fr.properties
@@ -0,0 +1,32 @@
+# 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.error=Erreur de lecture de la requête, ignorée
+abstractConnectionHandler.ioexception.debug=Les IOException sont normales et sont ignorées
+abstractConnectionHandler.socketexception.debug=Les SocketException sont normales et sont ignorées
+
+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.nonContainerThreadError=Un erreur s'est produite hors d'un des fils d'exécution du conteneur, la connection sera immédiatement fermée
+
+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}]
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..41d0762
--- /dev/null
+++ b/java/org/apache/coyote/ajp/LocalStrings_fr.properties
@@ -0,0 +1,29 @@
+# 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.request.prepare=Erreur lors de la préparation de la requête
+ajpprocessor.request.process=Erreur de traitement de la requête
diff --git a/java/org/apache/coyote/http11/LocalStrings_fr.properties b/java/org/apache/coyote/http11/LocalStrings_fr.properties
index c43f9cd..15c7d5d 100644
--- a/java/org/apache/coyote/http11/LocalStrings_fr.properties
+++ b/java/org/apache/coyote/http11/LocalStrings_fr.properties
@@ -13,6 +13,22 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+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.
+
 http11protocol.endpoint.starterror=Erreur au démarrage du point de contact
 http11protocol.proto.error=Erreur à la lecture de la requête, ignoré
 http11protocol.proto.ioexception.debug=Exception d'entrée/sortie (IOException) à la lecture de la requête
@@ -22,4 +38,11 @@ http11protocol.proto.socketexception.info=Exception "Socket" (SocketException) 
 http11protocol.start=Démarrage de Coyote HTTP/1.1 sur {0}
 
 iib.eof.error=Fin de flux (EOF) inattendue à la lecture sur la socket
+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.requestheadertoolarge.error=L'entête de requête est trop important
+
+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..f8cc2a2
--- /dev/null
+++ b/java/org/apache/coyote/http11/upgrade/LocalStrings_fr.properties
@@ -0,0 +1,23 @@
+# 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.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.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.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
diff --git a/java/org/apache/jasper/resources/LocalStrings_fr.properties b/java/org/apache/jasper/resources/LocalStrings_fr.properties
index 4bb5a8d..d3ea9b7 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}]
@@ -270,6 +271,7 @@ jsp.warning.unsupported.sourceVM=La VM source [{0}] demandée n''est pas support
 jsp.warning.unsupported.targetVM=La VM cible [{0}] demandée n''est pas supportée, [{1}] sera utilisé
 jsp.warning.xpoweredBy=WARNING: Valeur invalide pour le paramètre d'initialisation xpoweredBy, la valeur par défaut "false" sera utilisée
 
+jspc.delete.fail=Impossible d''effacer le fichier [{0}]
 jspc.error.fileDoesNotExist=Le fichier [{0}] donné en argument n''existe pas
 jspc.error.generalException=ERREUR-le fichier [{0}] a généré l''exception générale suivante:
 jspc.generation.result=La génération s''est terminée avec [{0}] erreurs en [{1}] millisecondes
@@ -354,3 +356,8 @@ 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 []
+
+xmlParser.skipBomFail=Echec pour passer le BOM lors du traitement du flux d'entrée XML
diff --git a/java/org/apache/naming/factory/LocalStrings_fr.properties b/java/org/apache/naming/factory/LocalStrings_fr.properties
index 18cc08f..e427e8b 100644
--- a/java/org/apache/naming/factory/LocalStrings_fr.properties
+++ b/java/org/apache/naming/factory/LocalStrings_fr.properties
@@ -15,6 +15,10 @@
 
 dataSourceLinkFactory.badWrapper=Pas un enrobeur pour le type [{0}]
 
+factoryBase.factoryClassError=Impossible de charger la classe de la fabrique de ressources
+factoryBase.factoryCreationError=Impossible de créer l'instance de la fabrique de ressources
+factoryBase.instanceCreationError=Impossible de créer l'instance de la ressource
+
 lookupFactory.circularReference=Trouvé une référence circulaire avec [{0}]
 lookupFactory.createFailed=Echec de création de l'instance de la classe de fabrique de recherche JNDI
 lookupFactory.loadFailed=Echec de chargement de la classe de fabrique de recherche JNDI
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/javax/servlet/LocalStrings_fr.properties b/java/org/apache/tomcat/util/buf/LocalStrings_fr.properties
similarity index 66%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/buf/LocalStrings_fr.properties
index 35917f1..435a9d8 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/buf/LocalStrings_fr.properties
@@ -13,7 +13,8 @@
 # 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
+b2cConverter.unknownEncoding=L''encodage de caractères [{0}] n''est pas supporté
 
-value.false=false
-value.true=true
+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/compat/LocalStrings_fr.properties
similarity index 85%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/compat/LocalStrings_fr.properties
index 35917f1..d77ce3e 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/compat/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
+jre9Compat.invalidModuleUri=L''URI du module fournie [{0}] n''a pas pu être convertie en URL pour être traitée par le JarScanner
diff --git a/java/javax/servlet/LocalStrings_fr.properties b/java/org/apache/tomcat/util/descriptor/LocalStrings_fr.properties
similarity index 59%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/descriptor/LocalStrings_fr.properties
index 35917f1..ccab11b 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/descriptor/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
+digesterFactory.missingSchema=Le schema XML [{0}] n''a pu être trouvé, cela empêchera certainement la validation de fonctionner si elle est activée
 
-value.false=false
-value.true=true
+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/org/apache/tomcat/util/http/LocalStrings_fr.properties b/java/org/apache/tomcat/util/http/LocalStrings_fr.properties
new file mode 100644
index 0000000..0ab9891
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/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.
+
+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.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 ''=''
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..7352aa6
--- /dev/null
+++ b/java/org/apache/tomcat/util/http/parser/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.
+
+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/javax/servlet/LocalStrings_fr.properties b/java/org/apache/tomcat/util/scan/LocalStrings_fr.properties
similarity index 53%
copy from java/javax/servlet/LocalStrings_fr.properties
copy to java/org/apache/tomcat/util/scan/LocalStrings_fr.properties
index 35917f1..151350a 100644
--- a/java/javax/servlet/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/scan/LocalStrings_fr.properties
@@ -13,7 +13,12 @@
 # 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.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/java/org/apache/tomcat/websocket/LocalStrings_fr.properties b/java/org/apache/tomcat/websocket/LocalStrings_fr.properties
new file mode 100644
index 0000000..f804dea
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/LocalStrings_fr.properties
@@ -0,0 +1,120 @@
+# 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.
+
+asyncChannelGroup.createFail=Impossible de créer un AsynchronousChannelGroup dédié poour les clients Websockets ce qui est nécessaire pour éviter des fuites de mémoire dans un conteneur EE
+
+asyncChannelWrapperSecure.closeFail=Impossible de fermer proprement le canal
+asyncChannelWrapperSecure.concurrentRead=Les opérations de lecture concurrentes ne sont pas permises
+asyncChannelWrapperSecure.concurrentWrite=Les opérations d'écriture concurrentes ne sont pas permises
+asyncChannelWrapperSecure.eof=Fin de flux inattendue
+asyncChannelWrapperSecure.statusUnwrap=Etat inattendu de SSLEngineResult après une opération unwrap()
+asyncChannelWrapperSecure.statusWrap=Etat inattendu de SSLEngineResult après une opération wrap()
+asyncChannelWrapperSecure.tooBig=Le résultat [{0}] est trop grand pour pouvoir être converti en Integer
+asyncChannelWrapperSecure.wrongStateRead=L'indicateur de lecture en cours était faux alors qu'il aurait dû vrai lors d'une tentative pour terminer une opération de lecture
+asyncChannelWrapperSecure.wrongStateWrite=L'indicateur d'écriture en cours était faux alors qu'il aurait dû vrai lors d'une tentative pour terminer une opération d'écriture
+
+backgroundProcessManager.processFailed=Un processus d'arrière-plan a échoué
+
+caseInsensitiveKeyMap.nullKey=Les clés nulles ne sont pas admises
+
+futureToSendHandler.timeout=Le délai d''attente de l''opération est dépassé après avoir attendu [{0}] [{1}] pour qu''elle se termine
+
+perMessageDeflate.deflateFailed=Impossible de décompresser une trame WebSocket compressée
+perMessageDeflate.duplicateParameter=Double définition pour le paramètre d''extension [{0}]
+perMessageDeflate.invalidWindowSize=Une taille [{1}] de fenêtre invalide a été spécifiée pour [{0}], les valeurs valides sont les entiers de 8 à 15 inclus
+perMessageDeflate.unknownParameter=Un paramètre d''extension inconnu [{0}] a été défini
+
+transformerFactory.unsupportedExtension=L''extension [{0}] n''est pas supportée
+
+util.invalidMessageHandler=Le gestionnaire de messages fourni n'a pas de méthode onMessage(Object)
+util.invalidType=Incapable de convertir la valeur [{0}] en le type [{1}]. Ce type n''est pas supporté.
+util.notToken=Un paramètre d''extension illégal a été spécifié avec le nom [{0}] et la valeur [{1}]
+util.unknownDecoderType=Le Decoder de type [{0}] n''est pas reconnu
+
+wsFrame.bufferTooSmall=Le tampon de taille [{0}] est trop petit pour le message de taille [{1}] et les messages asynchrones ne sont pas supportés
+wsFrame.byteToLongFail=trop d''octets fournis ([{0}]) pour une conversion vers "long"
+wsFrame.closed=Une nouvelle trame (frame) a été reçue après une trame de contrôle de fermeture
+wsFrame.controlFragmented=Une trame de contrôle fragmentée a été reçue mais les trames de contrôle ne peuvent pas être fragmentées
+wsFrame.controlNoFin=Une trame de contrôle qui a été envoyée n'avait pas le bit fin mis, alors qu'elles ne peuvent pas utiliser de trame de continuation
+wsFrame.controlPayloadTooBig=Une trame de contrôle a été envoyée avec des données de taille [{0}] ce qui est supérieur aux 125 octets autorisés au maximum
+wsFrame.invalidOpCode=Une trame a été envoyée avec un opCode non reconnu [{0}]
+wsFrame.invalidUtf8=Une trame texte Websocket a été reçue et n'a pu 6etre traitée car elle contenait des séquence d'octets UTF-8 invalides
+wsFrame.invalidUtf8Close=Une trame de fermeture Websocket a été reçue avec une cause qui contenait des séquences UTF-8 invalides
+wsFrame.ioeTriggeredClose=Une IOException non récupérable est survenue donc la connection a été fermée
+wsFrame.messageTooBig=Le message fait [{0}] octets mais le MessageHandler a une limite de [{1}] octets
+wsFrame.noContinuation=Un nouveau message a été démarré quand une trame de continuation était attendue
+wsFrame.notMasked=La trame du client n'a pas de masque alors que toutes les trames des clients doivent en avoir un
+wsFrame.oneByteCloseCode=Le client a envoyé une trame de fermeture avec un octet de données ce qui est invalide
+wsFrame.partialHeaderComplete=Une trame Websocket a été recue, fin [{0}], rsv [{1}], opCode [{2}], taille de données [{3}]
+wsFrame.sessionClosed=Les données du client ne peuvent pas être traitées car la session a déjà été fermée
+wsFrame.textMessageTooBig=Le message texte décodé était trop grand pour le tampon de sortie et la terminaison ne supporte pas les messages partiels
+wsFrame.wrongRsv=La trame cliente (client frame) a les bits réservés d''un message dont l''opCode est [{1}] définis à [{0}], et ce n''est pas supporté par cette terminaison
+
+wsFrameClient.ioe=Echec lors de la lecture des données envoyées par le serveur
+
+wsHandshakeRequest.invalidUri=La chaîne de caractères [{0}] ne peut être utilisée pour construire un URL valide
+wsHandshakeRequest.unknownScheme=Le schéma [{0}] de la requête n''est pas reconnu
+
+wsRemoteEndpoint.changeType=Quand un message fragmenté est envoyé, tous les fragments doivent être de même type
+wsRemoteEndpoint.closed=Le message ne sera pas envoyé parce que la session WebSocket a été fermée
+wsRemoteEndpoint.closedDuringMessage=Le reste du message ne sera pas envoyé parce que la session WebSocket est déjà fermée.
+wsRemoteEndpoint.closedOutputStream=La méthode ne peut pas être appelée alors que l'OutputStream a été fermée
+wsRemoteEndpoint.closedWriter=Cette méthode ne doit pas être appelée car le Writer a été fermé
+wsRemoteEndpoint.flushOnCloseFailed=Le groupement de messages est toujours actif après fermeture de la session, impossible d'envoyer les messages restants
+wsRemoteEndpoint.invalidEncoder=L''encodeur spécifié de type [{0}] n''a pu être instancié
+wsRemoteEndpoint.noEncoder=Pas d''encodeur spécifié pour un objet de classe [{0}]
+wsRemoteEndpoint.nullData=Argument nul invalide.
+wsRemoteEndpoint.nullHandler=Argument null invalide pour le gestionnaire
+wsRemoteEndpoint.tooMuchData=Un ping ou pong ne peut pas envoyer plus de 125 octets
+wsRemoteEndpoint.wrongState=La terminaison distante est dans l''état [{0}] ce qui est invalide pour la méthode appelée
+
+wsSession.closed=La session WebSocket [{0}] a été fermée et aucune méthode (à part close()) ne peut être appelée sur une session fermée
+wsSession.created=Création de la session WebSocket [{0}]
+wsSession.doClose=Fermeture de la session WebSocket [{1}]
+wsSession.duplicateHandlerBinary=Un gestionnaire de message binaire a déjà été configuré
+wsSession.duplicateHandlerPong=Un gestionnaire de messages pong a déjà été configuré
+wsSession.duplicateHandlerText=Un gestionnaire de message texte a déjà été configuré
+wsSession.flushFailOnClose=Impossible d'envoyer la file de messages lors de la fermeture de la session
+wsSession.instanceDestroy=Le désenregistrement de l'instance de la terminaison a échoué
+wsSession.instanceNew=L'enregistrement de l'instance de la terminaison a échoué
+wsSession.invalidHandlerTypePong=Un gestionnaire de message pong doit implémenter MessageHandler.Whole
+wsSession.messageFailed=Impossible d'écrire le message WebSocket complet car la connection a été fermée
+wsSession.removeHandlerFailed=Impossible d''enlever le gestionnaire [{0}] car il n''était pas enregistré dans la session
+wsSession.sendCloseFail=Impossible d''envoyer le message de fermeture pour la session [{0}] à la terminaison distante
+wsSession.timeout=Le délai d''attente maximum de la session WebSocket [{0}] a été dépassé
+wsSession.unknownHandler=Impossible d''ajouter le gestionnaire de messages [{0}] pour le type non reconnu [{1}]
+wsSession.unknownHandlerType=Incapable d''ajouter le gestionnaire de messages [{0}] puisqu''il est enveloppé (wrapped) comme le type non reconnu [{1}]
+
+wsWebSocketContainer.asynchronousSocketChannelFail=Impossible d'ouvrir une connection vers le serveur
+wsWebSocketContainer.defaultConfiguratorFail=Impossible de créer le configurateur par défaut
+wsWebSocketContainer.endpointCreateFail=Echec de création d''un point d''entrée local de type [{0}]
+wsWebSocketContainer.failedAuthentication=Echec du traitement du code de réponse HTTP [{0}], l''en-tête d''authentification n''a pas été accepté par le serveur
+wsWebSocketContainer.httpRequestFailed=La requête HTTP pour initier la connection WebSocket a échoué
+wsWebSocketContainer.invalidExtensionParameters=Le serveur a répondu avec des paramètres d'extension que le client n'est pas capable de traiter
+wsWebSocketContainer.invalidHeader=Impossible de traiter l''en-tête HTTP car deux-points n''est pas présents pour délimiter le nom et la valeur dans [{0}], l''en-tête a été sauté
+wsWebSocketContainer.invalidStatus=La réponse HTTP du serveur [{0}] n''a pas permis une mise à niveau de HTTP vers WebSocket
+wsWebSocketContainer.invalidSubProtocol=Le serveur WebSocket a renvoyé plusieurs valeurs pour l'en-tête Sec-WebSocket-Protocol
+wsWebSocketContainer.maxBuffer=L'implémentation limites la valeur maximale d'un tampon à Integer.MAX_VALUE
+wsWebSocketContainer.missingAnnotation=Impossible d''utiliser la classe POJO [{0}] car elle n''est pas annotée avec @ClientEndpoint
+wsWebSocketContainer.missingLocationHeader=Echec du traitement du code de réponse HTTP [{0}], l''en-tête location n''est pas présent dans la réponse
+wsWebSocketContainer.missingWWWAuthenticateHeader=Echec de traitement du code HTTP de réponse [{0}] : la réponse ne contient pas de header WWW-Authenticate.
+wsWebSocketContainer.pathNoHost=Aucun hôte n'est spécifié dans l'URI
+wsWebSocketContainer.pathWrongScheme=Le schéma [{0}] n''est pas supporté, seuls sont supportés ws et wss
+wsWebSocketContainer.proxyConnectFail=Impossible de se connecter au Proxy [{0}] configuré, le code HTTP de la réponse est [{0}]
+wsWebSocketContainer.redirectThreshold=L''en-tête Location [{0}] est cyclique, le nombre de redirections [{1}] a été atteint sur le maximum [{2}]
+wsWebSocketContainer.sessionCloseFail=La session avec ID  [{0}] n''a pas été fermée proprement.
+wsWebSocketContainer.shutdown=L'application web s'arrête
+wsWebSocketContainer.sslEngineFail=Impossible de créer un SSLEngine pour supporter les connections TLS
+wsWebSocketContainer.unsupportedAuthScheme=Impossible de gérer le code de réponse HTTP [{0}], un schéma authentification [{1}] non supporté a été retourné
diff --git a/java/org/apache/tomcat/websocket/server/LocalStrings_fr.properties b/java/org/apache/tomcat/websocket/server/LocalStrings_fr.properties
new file mode 100644
index 0000000..c5f0ba0
--- /dev/null
+++ b/java/org/apache/tomcat/websocket/server/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.
+
+serverContainer.addNotAllowed=Aucune terminaison ne peut être enregistré une fois qu'une tentative d'utilisation d'une des terminaisons précédemment enregistrée a été faite
+serverContainer.configuratorFail=Echec de création du configurateur de type [{0}] pour le POJO de type [{1}]
+serverContainer.duplicatePaths=Plusieurs terminaisons ne peuvent pas être déployés vers le même chemin [{0}]: la terminaison existante était [{1}] et la nouvelle est [{2}]
+serverContainer.encoderFail=Impossible de créer un encodeur de type [{0}]
+serverContainer.failedDeployment=Le déploiement de terminaisons WebSocket dans l''application web au chemin [{0}] dans l''hôte [{1}] n''est pas autorisé à cause de l''échec lors d''un précédent déploiement
+serverContainer.missingAnnotation=Impossible de déployer la classe POJO [{0}] car elle n''a pas été annotée avec @ServerEndpoint
+serverContainer.missingEndpoint=Une instance d''une terminaison a été demandée pour le chemin [{0}] mais aucune classe de terminaison correspondante n''a été trouvée
+serverContainer.pojoDeploy=La classe d''objet (POJO) [{0}] est déployée au chemin [{1}] dans le contexte [{2}]
+serverContainer.servletContextMismatch=Tentative d''enregistrer un POJO annoté pour WebSocket au chemin [{0}] dans le ServletContext qui a un chemin de contexte [{1}], alors que le ServerContainer est alloué au ServletContext avec le chemin de contexte [{2}]
+serverContainer.servletContextMissing=Aucun ServletContext n'a été spécifié
+
+upgradeUtil.incompatibleRsv=Des extensions qui ont été spécifiées ont une utilisation incompatible du bit RSV
+
+uriTemplate.duplicateParameter=Le paramètre [{0}] apparaît plus d''une fois dans le chemin ce qui n''est pas permis
+uriTemplate.emptySegment=Le chemin [{0}] contient un ou plusieurs segments vide ce qui n''est pas autorisé
+uriTemplate.invalidPath=Le chemin [{0}] est invalide
+uriTemplate.invalidSegment=Le segment [{0}] est invalide pour le chemin fourni [{1}]
+
+wsFrameServer.bytesRead=Lu [{0}] octets dans le buffer de réception prêts à être traités
+wsFrameServer.onDataAvailable=Entrée de méthode
+
+wsHttpUpgradeHandler.destroyFailed=Echec de la fermeture de la WebConnection lors de la destruction du HttpUpgradeHandler de WebSocket
+wsHttpUpgradeHandler.noPreInit=La méthode preInit() doit être appelée pour configurer le HttpUpgradeHandler de Websockets avant que le container n'appelle init(), cela veut habituellement dire que le Servlet qui a crée l'instance du WsHttpUpgradeHandler doit aussi appeler preInit()
+
+wsRemoteEndpointServer.closeFailed=Impossible de fermer le ServletOutputStream proprement
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 77bf673..0254ed8 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -164,6 +164,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>
diff --git a/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties b/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties
index 5ba2475..5ed4042 100644
--- a/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties
+++ b/webapps/examples/WEB-INF/classes/LocalStrings_fr.properties
@@ -14,35 +14,35 @@
 # limitations under the License.
 
 cookies.cookies=Votre navigateur retourne les cookies suivant:
-cookies.make-cookie=Création d''un cookie à retourner à votre navigateur
+cookies.make-cookie=Création d'un cookie à retourner à votre navigateur
 cookies.name=Nom:
 cookies.no-cookies=Votre navigateur ne retourne aucun cookie
-cookies.set=Vous venez d''envoyer le cookie suivant à votre navigateur:
-cookies.title=Exemple d''utilisation de Cookies
+cookies.set=Vous venez d'envoyer le cookie suivant à votre navigateur:
+cookies.title=Exemple d'utilisation de Cookies
 cookies.value=Valeur:
 
 helloworld.title=Salut le Monde!
 
-requestheader.title=Exemple d''information sur les entête de requête
+requestheader.title=Exemple d'information sur les entêtes de requête
 
 requestinfo.label.method=Méthode:
 requestinfo.label.pathinfo=Info de chemin:
 requestinfo.label.protocol=Protocole:
 requestinfo.label.remoteaddr=Adresse distante:
 requestinfo.label.requesturi=URI de requête:
-requestinfo.title=Exemple d''information sur la requête
+requestinfo.title=Exemple d'information sur la requête
 
 requestparams.firstname=Prénom:
 requestparams.lastname=Nom:
-requestparams.no-params=Pas de paramêtre, merci dans saisir quelqu'uns
+requestparams.no-params=Pas de paramêtre, merci d'en saisir quelques-uns
 requestparams.params-in-req=Paramêtres dans la requête:
-requestparams.title=Exemple de requête avec paramêtres
+requestparams.title=Exemple de requête avec paramètres
 
 sessions.adddata=Ajouter des données à votre session
 sessions.created=Crée le:
 sessions.data=Les données existantes dans votre session:
-sessions.dataname=Nom de l''Attribut de Session:
-sessions.datavalue=Valeur de l''Attribut de Session:
+sessions.dataname=Nom de l'Attribut de Session:
+sessions.datavalue=Valeur de l'Attribut de Session:
 sessions.id=ID de Session:
 sessions.lastaccessed=Dernier accès:
 sessions.title=Exemple de Sessions


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