#
#
# Copyright (c) 2004, 2005, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation.  Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#

# Localizations for Level names.  For the US locale
# these are the same as the non-localized level name.

agent.err.error			   = Erreur
agent.err.exception                = Exception envoy\u00e9e par l'agent 
agent.err.warning		   = Avertissement

agent.err.configfile.notfound      = Fichier de configuration introuvable
agent.err.configfile.failed        = Impossible de lire le fichier de configuration
agent.err.configfile.closed.failed = Impossible de fermer le fichier de configuration
agent.err.configfile.access.denied = Acc\u00e8s au fichier de configuration refus\u00e9

agent.err.exportaddress.failed	   = Impossible d'exporter l'adresse du connecteur JMX dans le tampon d'instrumentation

agent.err.agentclass.notfound      = Classe d'agents de gestion introuvable
agent.err.agentclass.failed        = Une erreur s'est produite au niveau de la classe d'agents de gestion 
agent.err.premain.notfound         = premain(String) n'existe pas dans la classe d'agents
agent.err.agentclass.access.denied = Acc\u00e8s \u00e0 premain(String) refus\u00e9
agent.err.invalid.agentclass       = Valeur de propri\u00e9t\u00e9 com.sun.management.agent.class incorrecte

agent.err.invalid.jmxremote.port   = Num\u00e9ro com.sun.management.jmxremote.port incorrect

agent.err.file.not.set               = Fichier non sp\u00e9cifi\u00e9
agent.err.file.not.readable          = Fichier illisible
agent.err.file.read.failed           = Impossible de lire le fichier
agent.err.file.not.found             = Fichier introuvable
agent.err.file.access.not.restricted = L'acc\u00e8s \u00e0 la lecture du fichier doit \u00eatre limit\u00e9

agent.err.password.file.notset     = Le fichier de mots de passe n'est pas sp\u00e9cifi\u00e9 mais com.sun.management.jmxremote.authenticate=true
agent.err.password.file.not.readable = Fichier de mots de passe illisible
agent.err.password.file.read.failed = Impossible de lire le fichier de mots de passe
agent.err.password.file.notfound   = Fichier de mots de passe introuvable
agent.err.password.file.access.notrestricted = L'acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9

agent.err.access.file.notset       = Le fichier d'acc\u00e8s n'est pas sp\u00e9cifi\u00e9 mais com.sun.management.jmxremote.authenticate=true
agent.err.access.file.not.readable = Fichier d'acc\u00e8s illisible
agent.err.access.file.read.failed  = Impossible de lire le fichier d'acc\u00e8s
agent.err.access.file.notfound     = Fichier d'acc\u00e8s introuvable

agent.err.connector.server.io.error = Erreur de communication avec le serveur du connecteur JMX

agent.err.invalid.option	   = Option sp\u00e9cifi\u00e9e non valide
agent.err.invalid.snmp.port        = Num\u00e9ro com.sun.management.snmp.port incorrect
agent.err.invalid.snmp.trap.port   = Num\u00e9ro com.sun.management.snmp.trap incorrect
agent.err.unknown.snmp.interface   = Interface SNMP inconnue
agent.err.acl.file.notset          = Aucun fichier SNMP ACL n'est sp\u00e9cifi\u00e9 mais com.sun.management.snmp.acl=true
agent.err.acl.file.notfound        = Fichier SNMP ACL introuvable
agent.err.acl.file.not.readable    = Fichier SNMP ACL illisible
agent.err.acl.file.read.failed     = Impossible de lire le fichier SNMP ACL
agent.err.acl.file.access.notrestricted = L'acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9

agent.err.snmp.adaptor.start.failed = Impossible de d\u00e9marrer l'adaptateur SNMP avec l'adresse
agent.err.snmp.mib.init.failed     = Impossible d'initialiser SNMP MIB avec l'erreur

jmxremote.ConnectorBootstrap.initialize = D\u00e9marrage du serveur du connecteur JMX :
jmxremote.ConnectorBootstrap.initialize.noAuthentication = Pas d'authentification
jmxremote.ConnectorBootstrap.initialize.ready = Connecteur JMX pr\u00eat \u00e0 : {0}
jmxremote.ConnectorBootstrap.initialize.password.readonly = L''acc\u00e8s \u00e0 la lecture du fichier de mots de passe doit \u00eatre limit\u00e9 : {0}
jmxremote.ConnectorBootstrap.initialize.file.readonly = L''acc\u00e8s \u00e0 la lecture du fichier doit \u00eatre limit\u00e9\u00a0: {0}

jmxremote.AdaptorBootstrap.getTargetList.processing = Traitement d'ACL
jmxremote.AdaptorBootstrap.getTargetList.adding = Ajout de la cible : {0}
jmxremote.AdaptorBootstrap.getTargetList.starting = D\u00e9marrage du serveur de l'adaptateur :
jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptateur pr\u00eat.
jmxremote.AdaptorBootstrap.getTargetList.initialize2 = Adaptateur SNMP pr\u00eat sur : {0}:{1}
jmxremote.AdaptorBootstrap.getTargetList.terminate = terminer {0}
