#
#
# 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			   = \uc624\ub958
agent.err.exception                = \uc5d0\uc774\uc804\ud2b8\uc5d0 \uc608\uc678 \ubc1c\uc0dd 
agent.err.warning		   = \uacbd\uace0

agent.err.configfile.notfound      = \uad6c\uc131 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
agent.err.configfile.failed        = \uad6c\uc131 \ud30c\uc77c \uc77d\uae30\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
agent.err.configfile.closed.failed = \uad6c\uc131\ud30c\uc77c\uc744 \ub2eb\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
agent.err.configfile.access.denied = \uad6c\uc131 \ud30c\uc77c\uc5d0 \uc561\uc138\uc2a4\uac00 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4.

agent.err.exportaddress.failed	   = \ubc84\ud37c \uad6c\ud604\uc744 \uc704\ud574 JMX \ucee4\ub125\ud130 \uc8fc\uc18c\ub97c \uac00\uc838\uc624\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.

agent.err.agentclass.notfound      = \uad00\ub9ac \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4\ub97c \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
agent.err.agentclass.failed        = \uad00\ub9ac \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4 \uc2e4\ud328 
agent.err.premain.notfound         = \uc5d0\uc774\uc804\ud2b8 \ud074\ub798\uc2a4\uc5d0 premain(\ubb38\uc790\uc5f4)\uc774 \uc5c6\uc2b5\ub2c8\ub2e4.
agent.err.agentclass.access.denied = premain(\ubb38\uc790\uc5f4)\uc5d0 \uc561\uc138\uc2a4\uac00 \uac70\ubd80\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
agent.err.invalid.agentclass       = \uc798\ubabb\ub41c com.sun.management.agent.class \uc18d\uc131 \uac12

agent.err.invalid.jmxremote.port   = \uc798\ubabb\ub41c com.sun.management.jmxremote.port \ubc88\ud638

agent.err.password.file.notset     = com.sun.management.jmxremote.authenticate=true\ub97c \uc81c\uc678\ud55c \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
agent.err.password.file.not.readable = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
agent.err.password.file.read.failed = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
agent.err.password.file.notfound   = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
agent.err.password.file.access.notrestricted = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.

agent.err.access.file.notset       = com.sun.management.jmxremote.authenticate=true\ub97c \uc81c\uc678\ud55c \uc561\uc138\uc2a4 \ud30c\uc77c\uc774 \uc9c0\uc815\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.
agent.err.access.file.not.readable = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
agent.err.access.file.read.failed  = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
agent.err.access.file.notfound     = \uc561\uc138\uc2a4 \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.

agent.err.connector.server.io.error = JMX \ucee4\ub125\ud130 \uc11c\ubc84 \ud1b5\uc2e0 \uc624\ub958

agent.err.invalid.option	   = \uc9c0\uc815\ub41c \uc635\uc158\uc774 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
agent.err.invalid.snmp.port        = \uc798\ubabb\ub41c com.sun.management.snmp.port \ubc88\ud638
agent.err.invalid.snmp.trap.port   = \uc798\ubabb\ub41c com.sun.management.snmp.trap \ubc88\ud638
agent.err.unknown.snmp.interface   = \uc54c \uc218 \uc5c6\ub294 SNMP \uc778\ud130\ud398\uc774\uc2a4
agent.err.acl.file.notset          = \uc9c0\uc815\ub41c SNMP ACL \ud30c\uc77c\uc774 \uc5c6\ub294\ub370 com.sun.management.snmp.acl=true\ub85c \uc124\uc815\ub418\uc5c8\uc2b5\ub2c8\ub2e4.
agent.err.acl.file.notfound        = SNMP ACL \ud30c\uc77c\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
agent.err.acl.file.not.readable    = SNMP ACL \ud30c\uc77c\uc744 \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.
agent.err.acl.file.read.failed     = SNMP ACL \ud30c\uc77c\uc744 \uc77d\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
agent.err.acl.file.access.notrestricted = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.

agent.err.snmp.adaptor.start.failed = \uc8fc\uc18c\uac00 \uc788\ub294 SNMP \uc5b4\ub311\ud130\ub97c \uc2dc\uc791\ud558\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
agent.err.snmp.mib.init.failed     = \uc624\ub958\uac00 \uc788\ub294 SNMP MIB\ub97c \ucd08\uae30\ud654\ud558\ub294 \ub370 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.

jmxremote.ConnectorBootstrap.initialize = JMX \ucee4\ub125\ud130 \uc11c\ubc84 \uc2dc\uc791:
jmxremote.ConnectorBootstrap.initialize.noAuthentication = \uc778\uc99d \uc5c6\uc74c
jmxremote.ConnectorBootstrap.initialize.ready = \ub2e4\uc74c\uc5d0\uc11c JMX \ucee4\ub125\ud130 \uc900\ube44: {0}
jmxremote.ConnectorBootstrap.initialize.password.readonly = \ube44\ubc00\ubc88\ud638 \ud30c\uc77c \uc77d\uae30 \uc561\uc138\uc2a4\ub294 \uc81c\ud55c\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4. {0}

jmxremote.AdaptorBootstrap.getTargetList.processing = ACL \ucc98\ub9ac
jmxremote.AdaptorBootstrap.getTargetList.adding = \ub300\uc0c1 \ucd94\uac00: {0}
jmxremote.AdaptorBootstrap.getTargetList.starting = \uc5b4\ub311\ud130 \uc11c\ubc84 \uc2dc\uc791:
jmxremote.AdaptorBootstrap.getTargetList.initialize1 = \uc5b4\ub311\ud130 \uc900\ube44
jmxremote.AdaptorBootstrap.getTargetList.initialize2 = \ub2e4\uc74c\uc5d0 SNMP \uc5b4\ub311\ud130 \uc900\ube44: {0}:{1}
jmxremote.AdaptorBootstrap.getTargetList.terminate = {0} \uc885\ub8cc
