# Chinese translations for R package
# Copyright (C) 2012 The R Foundation
# This file is distributed under the same license as the PACKAGE package.
# 陈斐 <feic@normipaiva.com>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: R 2.15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-24 10:53-0700\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"

#: fork.c:215
#, fuzzy, c-format
msgid "unable to terminate child process: %s"
msgstr "无法分叉，可能的原因是：%s"

#: fork.c:242
#, fuzzy, c-format
msgid "unable to terminate child: %s"
msgstr "无法建立管道"

#: fork.c:321 fork.c:602
msgid "memory allocation error"
msgstr "内存分配错误"

#: fork.c:373 fork.c:377 fork.c:381
#, c-format
msgid "invalid '%s' argument"
msgstr ""

#: fork.c:437
msgid ""
"Error while shutting down parallel: unable to terminate some child "
"processes\n"
msgstr ""

#: fork.c:526 fork.c:529
msgid "unable to create a pipe"
msgstr "无法建立管道"

#: fork.c:551
#, c-format
msgid "unable to fork, possible reason: %s"
msgstr "无法分叉，可能的原因是：%s"

#: fork.c:743
msgid "only children can send data to the master process"
msgstr "只有子进程才能给主进程发送数据"

#: fork.c:745
msgid "there is no pipe to the master process"
msgstr "有没可以接到主进程的管道"

#: fork.c:747
msgid "content to send must be RAW, use serialize() if needed"
msgstr "发送的内容必须是原始的，如果需要的话请用serialize（）"

#: fork.c:756 fork.c:764 fork.c:1174
msgid "write error, closing pipe to the master"
msgstr "书写错误，请关闭通往主进程的管道"

#: fork.c:774
msgid "only the master process can send data to a child process"
msgstr "只有主进程才能给子进程发送数据"

#: fork.c:782
#, c-format
msgid "child %d does not exist"
msgstr "不存在%d这个子进程"

#: fork.c:788
msgid "write error"
msgstr "书写错误"

#: fork.c:874
#, fuzzy, c-format
msgid "cannot wait for child %d as it does not exist"
msgstr "不存在%d这个子进程"

#: fork.c:933 fork.c:1053
#, c-format
msgid "error '%s' in select"
msgstr "选择时出了'%s'这样一个错"

#: fork.c:1143
msgid "'mckill' failed"
msgstr "'mckill'失败"

#: fork.c:1156
msgid "'mcexit' can only be used in a child process"
msgstr "'mcexit'只能用于子进程"

#: fork.c:1188
msgid "'mcexit' failed"
msgstr "'mcexit'失败"

#: fork.c:1217 fork.c:1226
msgid "invalid CPU affinity specification"
msgstr "CPU亲和力规范不对"

#: fork.c:1237
msgid "requested CPU set is too large for this system"
msgstr "所需要的CPU设置对于这个系统来说太大了"

#: fork.c:1260
msgid "retrieving CPU affinity set failed"
msgstr "无法收取CPU亲和力"
