# Chinese translations for R package
# Copyright (C) 2005 The R Foundation
# This file is distributed under the same license as the PACKAGE package.
# 陈斐 <feic@normipaiva.com>, 2006.
#
msgid ""
msgstr ""
"Project-Id-Version: R 2.15.0\n"
"Report-Msgid-Bugs-To: bugs.r-project.org\n"
"POT-Creation-Date: 2020-03-24 10:13\n"
"PO-Revision-Date: 2012-02-29 14:00+0000\n"
"Last-Translator: Fei Chen <feic@normipaiva.com>\n"
"Language-Team: Chinese\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=0;\n"

#, fuzzy
msgid "invalid value of %s"
msgstr "'seed'的值不对"

msgid "need at least one argument"
msgstr "至少需要一个参数"

msgid "zero-length inputs cannot be mixed with those of non-zero length"
msgstr "非零长度的输入和长度为零的输入不能同时混用"

msgid "dim(X) must have a positive length"
msgstr "dim(X)的长度必需是正数"

msgid "'X' must have named dimnames"
msgstr "'X'必需有名字的dimnames"

msgid "not all elements of 'MARGIN' are names of dimensions"
msgstr "'MARGIN'所有的元素都必需是尺寸的名字"

msgid "no cluster 'cl' supplied and none is registered"
msgstr "没有提供'cl'集群也没有注册"

msgid "not a valid cluster"
msgstr "群集不对"

msgid "unknown cluster type"
msgstr "未知的集群类型"

#, fuzzy
msgid "numeric 'names' must be >= 1"
msgstr "'nnodes'必需>=1"

msgid "node of a socket cluster on host %s with pid %d"
msgstr "pid是%2$d的在主机%1$s上插座集群的节点"

msgid "Connection setup failed or timed out."
msgstr ""

msgid "PORT must be specified"
msgstr ""

msgid "'nnodes' must be >= 1"
msgstr "'nnodes'必需>=1"

msgid "Cluster setup failed."
msgstr ""

msgid "invalid 'child' argument"
msgstr "'child'参数不对"

msgid "'children' must be a list of processes or a single process"
msgstr "'children'要么是进程列表，要么是一个单一的进程"

msgid "'process' must be of class %s"
msgstr "'process'的类别必需是%s"

msgid "'child' must be a valid child process"
msgstr "'child'必须是有效的子进程"

msgid "'what' must be a character or raw vector"
msgstr "'what'必须是一个字符或原始向量"

msgid "'mc.cores' must be >= 1"
msgstr "'mc.cores'必需>=1"

msgid "affinity.list and X must have the same length"
msgstr ""

msgid "%d function calls resulted in an error"
msgstr "%d个函数调用导致错误"

msgid "'mc.preschedule' must be false if 'affinity.list' is used"
msgstr ""

msgid "all scheduled cores encountered errors in user code"
msgstr "用户代码中所有预定的核心都出了错"

msgid "Zero-length inputs cannot be mixed with those of non-zero length"
msgstr "非零长度的输入和长度为零的输入不能同时混用"

msgid "invalid 'jobs' argument"
msgstr "'jobs'参数不对"

msgid "'v' must be a vector"
msgstr "'v'必须是一个向量"

msgid "some results may be missing, folded or caused an error"
msgstr "有些结果可能没有，可能被折叠，也可能出了错"

msgid "fork clusters are not supported on Windows"
msgstr "Windows不支持分叉集群"

msgid "'mc.cores' > 1 is not supported on Windows"
msgstr " Windows不支持'mc.cores' > 1"

msgid "Cluster setup failed. %d worker of %d failed to connect."
msgid_plural "Cluster setup failed. %d of %d workers failed to connect."
msgstr[0] ""
msgstr[1] ""

msgid "socket cluster with %d nodes on host %s"
msgid_plural "socket cluster with %d nodes on hosts %s"
msgstr[0] "主机%2$s上%1$d个节点的插座集群"
msgstr[1] "主机%2$s上%1$d个节点的插座集群"

msgid "%d parallel function call did not deliver a result"
msgid_plural "%d parallel function calls did not deliver results"
msgstr[0] ""
msgstr[1] ""

#, fuzzy
msgid ""
"scheduled core %s did not deliver a result, all values of the job will be "
"affected"
msgid_plural ""
"scheduled cores %s did not deliver results, all values of the jobs will be "
"affected"
msgstr[0] "预定内核%s的用户代码中出了错，所有作业值都将受到影响"
msgstr[1] "预定内核%s的用户代码中出了错，所有作业值都将受到影响"

msgid ""
"scheduled core %s encountered error in user code, all values of the job will "
"be affected"
msgid_plural ""
"scheduled cores %s encountered errors in user code, all values of the jobs "
"will be affected"
msgstr[0] "预定内核%s的用户代码中出了错，所有作业值都将受到影响"
msgstr[1] "预定内核%s的用户代码中出了错，所有作业值都将受到影响"

msgid "%d parallel job did not deliver a result"
msgid_plural "%d parallel jobs did not deliver results"
msgstr[0] ""
msgstr[1] ""

#~ msgid "socket cluster with %d nodes on hosts %s"
#~ msgstr "主机%2$s上%1$d个节点的插座集群"

#~ msgid ","
#~ msgstr ",，"

#~ msgid "host"
#~ msgstr "主机"
