# Korean translation for R parallel package
# Copyright (C) 1995-2018 The R Core Team
#
# This file is distributed under the same license as the R parallel package.
# Maintained by Chel Hee Lee <gnustats@gmail.com>, 2008-2018.
#
msgid ""
msgstr ""
"Project-Id-Version: R-3.5.0\n"
"Report-Msgid-Bugs-To: bugs.r-project.org\n"
"POT-Creation-Date: 2018-03-29 07:06-0700\n"
"PO-Revision-Date: 2018-04-09 12:09-0600\n"
"Last-Translator: Chel Hee Lee <gnustats@gmail.com>\n"
"Language-Team: \n"
"Language: ko\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:181
msgid "unable to terminate child process: %s"
msgstr "자식 프로세스를 종료할 수 없습니다: %s"

#: fork.c:208
msgid "unable to terminate child: %s"
msgstr ""

#: fork.c:287 fork.c:556
msgid "memory allocation error"
msgstr "메모리 할당 에러입니다"

#: fork.c:337 fork.c:341 fork.c:345
#, c-format
msgid "invalid '%s' argument"
msgstr ""

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

#: fork.c:490 fork.c:493
msgid "unable to create a pipe"
msgstr "파이프(pipe)를 생성할 수 없습니다."

#: fork.c:515
#, c-format
msgid "unable to fork, possible reason: %s"
msgstr "포크할 수 없습니다. 아마도 다음과 같은 이유때문입니다: %s"

#: fork.c:683
msgid "only children can send data to the master process"
msgstr ""
"오로지 자식 프로세스들만이 데이터를 마스터 프로세스에 보낼 수 있습"
"니다"

#: fork.c:685
msgid "there is no pipe to the master process"
msgstr "마스터 프로세스에 연결된 파이프가 없습니다."

#: fork.c:687
msgid "content to send must be RAW, use serialize() if needed"
msgstr ""
"보내야할 컨텐츠는 반드시 RAW이어야 하며, 필요하다면 serialize()를 "
"이용하세요"

#: fork.c:696 fork.c:704 fork.c:1080
msgid "write error, closing pipe to the master"
msgstr "쓰기 에러입니다.  마스터에 연결된 파이프를 닫습니다"

#: fork.c:714
msgid "only the master process can send data to a child process"
msgstr ""
"오로지 마스터 프로세스만이 데이터를 자식프로세스에 보낼 수 있습니다"

#: fork.c:722
#, c-format
msgid "child %d does not exist"
msgstr "child %d는 존재하지 않습니다"

#: fork.c:728
msgid "write error"
msgstr "쓰기 에러가 발생했습니다."

#: fork.c:781
msgid "cannot wait for child %d as it does not exist"
msgstr ""

#: fork.c:848 fork.c:971
#, c-format
msgid "error '%s' in select"
msgstr "select 에서 에러 '%s'가 발생했습니다"

#: fork.c:1062
msgid "'mckill' failed"
msgstr "'mckill' 실패했습니다"

#: fork.c:1072
msgid "'mcexit' can only be used in a child process"
msgstr "'mcexit'는 오로지 자식 프로세스에서만 사용됩니다"

#: fork.c:1094
msgid "'mcexit' failed"
msgstr "'mcexit' 실패했습니다"

#: fork.c:1123 fork.c:1132
msgid "invalid CPU affinity specification"
msgstr "유효하지 않은 CPU affinity 지정입니다"

#: fork.c:1143
msgid "requested CPU set is too large for this system"
msgstr "요청된 CPU 셋은 이 시스템에 너무 큽니다"

#: fork.c:1166
msgid "retrieving CPU affinity set failed"
msgstr "CPU affiniy 셋을 검색하는데 실패했습니다"
