#
#
# 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			   = Fel
agent.err.exception                = Agenten orsakade ett undantag 
agent.err.warning		   = Varning!

agent.err.configfile.notfound      = Konfigurationsfilen hittades inte
agent.err.configfile.failed        = Det g\u00e5r inte att l\u00e4sa konfigurationsfilen
agent.err.configfile.closed.failed = Det g\u00e5r inte att st\u00e4nga konfigurationsfilen
agent.err.configfile.access.denied = \u00c5tkomst till konfigurationsfilen nekad

agent.err.exportaddress.failed	   = Det g\u00e5r inte att exportera JMX-anslutningsadressen till instrumentbufferten

agent.err.agentclass.notfound      = Administrationsagentklassen hittades inte
agent.err.agentclass.failed        = Administrationsagentklassen misslyckades 
agent.err.premain.notfound         = premain(String) finns inte i agentklassen
agent.err.agentclass.access.denied = \u00c5tkomst till premain(String) nekad
agent.err.invalid.agentclass       = Ogiltigt egenskapsv\u00e4rde f\u00f6r com.sun.management.agent.class

agent.err.invalid.jmxremote.port   = Ogiltigt com.sun.management.jmxremote.port-nummer

agent.err.password.file.notset     = L\u00f6senordsfilen har inte angetts men com.sun.management.jmxremote.authenticate=true
agent.err.password.file.not.readable = L\u00f6senordsfilen \u00e4r inte l\u00e4sbar
agent.err.password.file.read.failed = Det g\u00e5r inte att l\u00e4sa l\u00f6senordsfilen
agent.err.password.file.notfound   = Det g\u00e5r inte att hitta l\u00f6senordsfilen
agent.err.password.file.access.notrestricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas

agent.err.access.file.notset       = Access-filen har inte angetts men com.sun.management.jmxremote.authenticate=true
agent.err.access.file.not.readable = Access-filen \u00e4r inte l\u00e4sbar
agent.err.access.file.read.failed  = Det g\u00e5r inte att l\u00e4sa access-filen
agent.err.access.file.notfound     = Access-filen hittades inte

agent.err.connector.server.io.error = Serverkommunikationsfel f\u00f6r JMX-anslutning

agent.err.invalid.option	   = Det angivna alternativet \u00e4r ogiltigt
agent.err.invalid.snmp.port        = Ogiltigt com.sun.management.snmp.port-nummer
agent.err.invalid.snmp.trap.port   = Ogiltigt com.sun.management.snmp.trap-nummer
agent.err.unknown.snmp.interface   = Ok\u00e4nt SNMP-gr\u00e4nssnitt
agent.err.acl.file.notset          = Ingen SNMP ACL-fil har angetts, men com.sun.management.snmp.acl=true
agent.err.acl.file.notfound        = SNMP ACL-filen hittades inte
agent.err.acl.file.not.readable    = SNMP ACL-filen \u00e4r inte l\u00e4sbar
agent.err.acl.file.read.failed     = Det g\u00e5r inte att l\u00e4sa filen SNMP ACL
agent.err.acl.file.access.notrestricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas

agent.err.snmp.adaptor.start.failed = Det g\u00e5r inte att starta SNMP-adaptern med adressen
agent.err.snmp.mib.init.failed     = Det g\u00e5r inte att initiera SNMP MIB med felet

jmxremote.ConnectorBootstrap.initialize = Startar JMX Connector-servern:
jmxremote.ConnectorBootstrap.initialize.noAuthentication = Ingen autentisering
jmxremote.ConnectorBootstrap.initialize.ready = JMX Connector redo p\u00e5: {0}
jmxremote.ConnectorBootstrap.initialize.password.readonly = L\u00e4sbeh\u00f6righeten f\u00f6r l\u00f6senordsfilen m\u00e5ste begr\u00e4nsas: {0}

jmxremote.AdaptorBootstrap.getTargetList.processing = ACL bearbetas
jmxremote.AdaptorBootstrap.getTargetList.adding = M\u00e5l l\u00e4ggs till: {0}
jmxremote.AdaptorBootstrap.getTargetList.starting = Adapterservern startas:
jmxremote.AdaptorBootstrap.getTargetList.initialize1 = Adaptern klar.
jmxremote.AdaptorBootstrap.getTargetList.initialize2 = SNMP-adaptern redo p\u00e5: {0}:{1}
jmxremote.AdaptorBootstrap.getTargetList.terminate = avsluta {0}
