# Traditional Chinese translations for R package.
# Copyright (C) 2012 The R Foundation
# This file is distributed under the same license as the R package.
# 陈斐 <feic@normipaiva.com>, 2012.
# Wei-Lun Chao <bluebat@member.fsf.org>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: R 3.5.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-24 10:53-0700\n"
"PO-Revision-Date: 2018-09-16 23:38+0800\n"
"Last-Translator: Wei-Lun Chao <bluebat@member.fsf.org>\n"
"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"

#: fork.c:215
#, c-format
msgid "unable to terminate child process: %s"
msgstr "無法終止子行程：%s"

#: fork.c:242
#, c-format
msgid "unable to terminate child: %s"
msgstr "無法終止子行程：%s"

#: 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 "無效的 '%s' 引數"

#: fork.c:437
msgid ""
"Error while shutting down parallel: unable to terminate some child "
"processes\n"
msgstr "當停止平行時發生錯誤：無法決定某些子行程\n"

#: 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
#, 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 "中央處理器親和度規格無效"

#: fork.c:1237
msgid "requested CPU set is too large for this system"
msgstr "所需要的中央處理器設定對於這個系統來說太大了"

#: fork.c:1260
msgid "retrieving CPU affinity set failed"
msgstr "無法取得中央處理器親和度"
