#
#
# Copyright 2004-2005 Sun Microsystems, Inc.  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.  Sun designates this
# particular file as subject to the "Classpath" exception as provided
# by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
# CA 95054 USA or visit www.sun.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			   = Fehler
agent.err.exception                = Agent-Ausnahmefehler 
agent.err.warning		   = Warnung

agent.err.configfile.notfound      = Konfigurationsdatei wurde nicht gefunden.
agent.err.configfile.failed        = Konfigurationsdatei konnte nicht gelesen werden.
agent.err.configfile.closed.failed = Konfigurationsdatei konnte nicht geschlossen werden.
agent.err.configfile.access.denied = Zugriff auf Konfigurationsdatei wurde verweigert.

agent.err.exportaddress.failed	   = Export der JMX-Anschlussadresse an Instrumentierungspuffer schlug fehl.

agent.err.agentclass.notfound      = Verwaltungsagentenklasse nicht gefunden
agent.err.agentclass.failed        = Verwaltungsagentenklasse fehlgeschlagen 
agent.err.premain.notfound         = premain(String) ist in Agentenklasse nicht vorhanden.
agent.err.agentclass.access.denied = Zugriff auf premain(String) wurde verweigert.
agent.err.invalid.agentclass       = Ung\u00fcltiger Eigenschaftswert f\u00fcr com.sun.management.agent.class

agent.err.invalid.jmxremote.port   = Ung\u00fcltige Nummer f\u00fcr com.sun.management.jmxremote.port

agent.err.password.file.notset     = Es wurde keine Passwortdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist.
agent.err.password.file.not.readable = Passwortdatei kann nicht gelesen werden.
agent.err.password.file.read.failed = Passwortdatei konnte nicht gelesen werden.
agent.err.password.file.notfound   = Passwortdatei konnte nicht gefunden werden.
agent.err.password.file.access.notrestricted = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein.

agent.err.access.file.notset       = Es wurde keine Zugriffsdatei angegeben, obwohl com.sun.management.jmxremote.authenticate auf \"true\" gesetzt ist.
agent.err.access.file.not.readable = Zugriffsdatei kann nicht gelesen werden.
agent.err.access.file.read.failed  = Zugriffsdatei konnte nicht gelesen werden.
agent.err.access.file.notfound     = Zugriffsdatei konnte nicht gefunden werden.

agent.err.connector.server.io.error = Fehler bei der JMX-Anschlussserver-Kommunikation

agent.err.invalid.option	   = Ung\u00fcltige Option angegeben
agent.err.invalid.snmp.port        = Ung\u00fcltige Nummer f\u00fcr com.sun.management.snmp.port
agent.err.invalid.snmp.trap.port   = Ung\u00fcltige Nummer f\u00fcr com.sun.management.snmp.trap
agent.err.unknown.snmp.interface   = Unbekannte SNMP-Schnittstelle
agent.err.acl.file.notset          = Es wurde keine SNMP-ACL-Datei angegeben, obwohl com.sun.management.snmp.acl auf \"true\" gesetzt ist.
agent.err.acl.file.notfound        = SNMP-ACL-Datei konnte nicht gefunden werden.
agent.err.acl.file.not.readable    = SNMP-ACL-Datei kann nicht gelesen werden.
agent.err.acl.file.read.failed     = SNMP-ACL-Datei konnte nicht gelesen werden.
agent.err.acl.file.access.notrestricted = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein.

agent.err.snmp.adaptor.start.failed = Fehler beim Starten des SNMP-Adapters mit Adresse
agent.err.snmp.mib.init.failed     = Initialisierung von SNMP-MIB fehlgeschlagen mit Fehler

jmxremote.ConnectorBootstrap.initialize = JMX-Anschlussserver starten:
jmxremote.ConnectorBootstrap.initialize.noAuthentication = Keine Authentifizierung
jmxremote.ConnectorBootstrap.initialize.ready = JMX-Anschluss bereit unter: {0}
jmxremote.ConnectorBootstrap.initialize.password.readonly = Lesezugriff auf Passwortdatei muss eingeschr\u00e4nkt sein. {0}

jmxremote.AdaptorBootstrap.getTargetList.processing = ACL verarbeiten
jmxremote.AdaptorBootstrap.getTargetList.adding = Ziel hinzuf\u00fcgen: {0}
jmxremote.AdaptorBootstrap.getTargetList.starting = Adapterserver starten:
jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adapter bereit.
jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-Adapter bereit unter: {0}:{1}
jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} beenden
