# 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.

fileStore.saving=Sauvegarde de la Session {0} vers le fichier {1}
fileStore.loading=Chargement de la Session {0} depuis le fichier {1}
fileStore.removing=Retrait de la Session {0} du fichier {1}
JDBCStore.saving=Sauvegarde de la Session {0} vers la base de donn\u00e9es {1}
JDBCStore.loading=Chargement de la Session {0} depuis la base de donn\u00e9es {1}
JDBCStore.removing=Retrait de la Session {0} de la base de donn\u00e9es {1}
JDBCStore.SQLException=Erreur SQL {0}
JDBCStore.checkConnectionDBClosed=La connexion \u00e0 la base de donn\u00e9es est nulle ou a \u00e9t\u00e9 trouv\u00e9e ferm\u00e9e. Tentative de r\u00e9ouverture.
JDBCStore.checkConnectionDBReOpenFail=La tentative de r\u00e9ouverture de la base de donn\u00e9es a \u00e9chou\u00e9. La base de donn\u00e9es est peut-\u00eatre arr\u00eat\u00e9e.
JDBCStore.checkConnectionSQLException=Une exception SQL s''est produite {0}
JDBCStore.checkConnectionClassNotFoundException=La classe du driver JDBC n''a pas \u00e9t\u00e9 trouv\u00e9e {0}
managerBase.createSession.ise="createSession": Trop de sessions actives
managerBase.sessionTimeout=R\u00e9glage du d\u00e9lai d''inactivit\u00e9 (timeout) de session invalide {0}
standardManager.loading=Chargement des sessions qui ont persist\u00e9 depuis {0}
standardManager.loading.exception="Exception" lors du chargement de sessions persistantes
standardManager.unloading=Sauvegarde des sessions ayant persist\u00e9 vers {0}
standardManager.unloading.ioe="IOException" lors de la sauvegarde de sessions persistantes: {0}
standardManager.managerLoad=Exception au chargement des sessions depuis le stockage persistant (persistent storage)
standardManager.managerUnload=Exception au d\u00e9chargement des sessions vers le stockage persistant (persistent storage)
standardSession.attributeEvent=L''\u00e9couteur d''\u00e9v\u00e8nement Attribut de Session (attribute event listener) a g\u00e9n\u00e9r\u00e9 une exception
standardSession.invalidate.ise="invalidate": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.isNew.ise="isNew": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.getAttribute.ise="getAttribute": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.getAttributeNames.ise="getAttributeNames": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.getCreationTime.ise="getCreationTime": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.getThisAccessedTime.ise="getThisAccessedTime": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.getLastAccessedTime.ise="getLastAccessedTime": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.getValueNames.ise="getValueNames": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.notSerializable=Impossible de s\u00e9rialiser l''attribut de session {0} pour la session {1}
standardSession.removeAttribute.ise="removeAttribute": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.sessionEvent=L''\u00e9couteur d''\u00e9v\u00e8nement de session (session event listener) a g\u00e9n\u00e9r\u00e9 une exception
standardSession.setAttribute.iae="setAttribute": Attribut {0} non s\u00e9rialisable
standardSession.setAttribute.ise="setAttribute": Session d\u00e9j\u00e0 invalid\u00e9e
standardSession.setAttribute.namenull="setAttribute": le nom de param\u00e8tre ne peut \u00eatre nul
persistentManager.loading=Chargement de {0} sessions persistantes
persistentManager.unloading=Sauvegarde de {0} sessions persistantes
persistentManager.deserializeError=Erreur lors de la d\u00e9s\u00e9rialisation de la session {0}: {1}
persistentManager.serializeError=Erreur lors de la s\u00e9rialisation de la session {0}: {1}
persistentManager.swapMaxIdle=Basculement de la session {0} vers le stockage (Store), en attente pour {1} secondes
persistentManager.backupMaxIdle=Sauvegarde de la session {0} vers le stockage (Store), en attente pour {1} secondes
persistentManager.tooManyActive=Trop de sessions actives, {0}, \u00e0 la recherche de sessions en attente pour basculement vers stockage (swap out)
persistentManager.swapTooManyActive=Basculement vers stockage (swap out) de la session {0}, en attente pour {1} secondes trop de sessions actives
persistentManager.swapIn=Basculement depuis le stockage (swap in) de la session {0}
