#
#
# 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			   = 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.file.not.set               = Filen har inte angetts.
agent.err.file.not.readable          = Filen g\u00e5r inte att l\u00e4sa.
agent.err.file.read.failed           = Det gick inte att l\u00e4sa filen
agent.err.file.not.found             = Filen hittades inte
agent.err.file.access.not.restricted = L\u00e4sbeh\u00f6righeten f\u00f6r filen m\u00e5ste begr\u00e4nsas

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.ConnectorBootstrap.initialize.file.readonly = L\u00e4sbeh\u00f6righeten f\u00f6r filen 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}
