#
#
# Copyright 2000-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.
#

# "rmid", inetd", and "wait" should not be translated.
rmid.syntax.exec.invalid=\
        rmid \u5df2\u5f9e inetd \u555f\u52d5\uff0c\u4e14\u72c0\u614b\u7121\u6548 (\u5fc5\u9808\u662f wait)

# "rmid" and "inetd" should not be translated.
rmid.syntax.port.badarg=\
        \u5982\u679c rmid \u5f9e inetd \u555f\u52d5\uff0c\u5247\u7121\u6cd5\u6307\u5b9a\u9023\u63a5\u57e0

# "port" here refers to a TCP port for the server to listen on.
rmid.syntax.port.badnumber=\
	port \u4e0d\u662f\u4e00\u500b\u6578\u5b57

# "-port" should not be translated, because it's part of command syntax.
rmid.syntax.port.missing=\
	-port \u9078\u9805\u9700\u8981\u5f15\u6578

# "-log" should not be translated, because it's part of command syntax.
rmid.syntax.log.missing=\
	-log \u9078\u9805\u9700\u8981\u5f15\u6578

# "-log" should not be translated, because it's part of command syntax.
rmid.syntax.log.required=\
        -log \u9078\u9805\u662f\u5fc5\u9700\u7684

# {0} = the (string) illegal argument in question
rmid.syntax.illegal.option=\
	\u975e\u6cd5\u9078\u9805\uff1a{0}

# {0} = the (string) reason text that came with a thrown exception
# "Activation.main" should not be translated, because it's a codepoint
rmid.unexpected.exception=\
	Activation.main: \u767c\u751f\u7570\u5e38\u72c0\u6cc1\ufe55{0}

# "java.home" should not be translated, because it's a property name
# "ActivatorImpl" should not be translated, because it's a codepoint
rmid.unfound.java.home.property=\
	ActivatorImpl: \u627e\u4e0d\u5230 java.home \u7684\u6240\u5728

# "rmid" should not be translated
rmid.inherited.channel.info=\
        rmid \u4f7f\u7528\u7e7c\u627f\u7684\u901a\u9053\u555f\u52d5

# "Activation.main" should not be translated, because it's a codepoint
rmid.exec.policy.invalid=\Activation.main: \u7121\u6548\u7684\u57f7\u884c\u7b56\u7565\u985e\u5225

# "rmid" should not be translated
rmid.exec.policy.exception=\
	rmid: \u5617\u8a66\u53d6\u5f97\u57f7\u884c\u7b56\u7565\u62cb\u68c4\uff1a

# "rmid" should not be translated
rmid.exec.command=\
	rmid: debugExec\uff1a\u57f7\u884c "{0}"

# "rmid" should not be translated
rmid.group.inactive=\
	rmid:\u555f\u52d5\u7fa4\u7d44\u672a\u5728\u4f7f\u7528\u4e2d\ufe30{0}

# "Activation.main", "sun.rmi.activation.execPolicy", "ExecPermission" and 
# "ExecOptionPermission" should not be translated, since they refer to
# class/permission names.
rmid.exec.perms.inadequate=\
	Activation.main: \u8b66\u544a: sun.rmi.activation.execPolicy \u7cfb\u7d71\n\
       \u5c6c\u6027\u672a\u6307\u5b9a\uff0c\u4e26\u4e14\u672a\u6388\u4e88 ExecPermissions/ExecOptionPermissions\uff1b\n\
       \u5f8c\u7e8c\u7684\u555f\u52d5\u5617\u8a66\u53ef\u80fd\u6703\u56e0\u70ba\u672a\u6210\u529f\u7684\n\
	ExecPermission/ExecOptionPermission \u8a31\u53ef\u6b0a\u6aa2\u67e5\u800c\u5931\u6557\u3002\u5982\u9700\n\
	\u95dc\u65bc\u5982\u4f55\u914d\u7f6e rmid \u5b89\u5168\u7684\u8aaa\u660e\u6587\u4ef6\uff0c\u8acb\u53c3\u8003\uff1a\n\
\n\
        http://java.sun.com/j2se/1.4/docs/tooldocs/solaris/rmid.html\n\
        http://java.sun.com/j2se/1.4/docs/tooldocs/win32/rmid.html\n

# "rmid", "-port", "-log", "-stop", "-C" and "-J" should not be translated,
# because they are syntax
rmid.usage=\u7528\u6cd5: {0} <options>\
\n\
\n\u5176\u4e2d <options> \u5305\u62ec\uff1a\
\n  -port <port>        \u6307\u5b9a\u4f9b rmid \u4f7f\u7528\u7684\u9023\u63a5\u57e0\
\n  -log <directory>    \u6307\u5b9a\u4f9b rmid \u5beb\u5165\u65e5\u8a8c\u7684\u76ee\u9304\
\n  -stop               \u505c\u6b62\u76ee\u524d rmid \u7684\u547c\u53eb (\u91dd\u5c0d\u6307\u5b9a\u7684\u9023\u63a5\u57e0)\
\n  -C<runtime flag>    \u50b3\u905e\u5f15\u6578\u81f3\u6bcf\u4e00\u5b50\u904e\u7a0b (\u4f5c\u7528\u7fa4\u7d44)\
\n  -J<runtime flag>    \u50b3\u905e\u5f15\u6578\u81f3 java \u89e3\u8b6f\u7a0b\u5f0f\
\n\

# This means "The currently running activation daemon has been shut down,
# and is about to exit".
rmid.daemon.shutdown=\
	\u505c\u6b62 activation \u5e38\u99d0\u7a0b\u5f0f

# "rmid" should not be translated
rmid.restart.group.warning=\
\nrmid: (\u8b66\u544a) \u91cd\u65b0\u555f\u52d5\u7fa4\u7d44\u62cb\u68c4\uff1a

# "rmid" should not be translated
rmid.restart.service.warning=\
\nrmid: (\u8b66\u544a) \u91cd\u65b0\u555f\u52d5\u670d\u52d9\u62cb\u68c4\uff1a

# "rmid" should not be translated
rmid.log.update.warning=\
\nrmid: (\u8b66\u544a) \u8a18\u9304\u66f4\u65b0\u62cb\u68c4\uff1a

# "rmid" should not be translated
rmid.log.snapshot.warning=\
\nrmid: (\u56b4\u91cd) \u8a18\u9304\u5feb\u7167\u62cb\u68c4\uff1a

# "rmid" should not be translated
rmid.log.recover.warning=\
\nrmid: (\u8b66\u544a) {0}\uff1a\u5728\u56de\u5fa9\u904e\u7a0b\u4e2d\u7565\u904e\u65e5\u8a8c\u8a18\u9304\uff1a
