# Korean translation for R tools package
# Copyright (C) 1995-2018 The R Core Team
#
# This file is distributed under the same license as the R tools 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:11-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"

#: Rmd5.c:36
msgid "argument 'files' must be character"
msgstr "인자 'files'는 반드시 문자이어야 합니다"

#: Rmd5.c:50
#, c-format
msgid "md5 failed on file '%s'"
msgstr "파일 '%s'에서 md5가 작동하지 않습니다"

#: getfmts.c:61
#, c-format
msgid "only %d arguments are allowed"
msgstr "오로지 %d 인자들만이 허용됩니다"

#: getfmts.c:66
msgid "'fmt' is not a character vector"
msgstr "'fmt'는 문자형 벡터가 아닙니다"

#: getfmts.c:69
msgid "'fmt' must be length 1"
msgstr "'fmt'는 반드시 길이가 1이어야 합니다"

#: getfmts.c:75
#, c-format
msgid "'fmt' length exceeds maximal format length %d"
msgstr "'fmt' 길이가 최대 포맷길이 %d를 초과합니다"

#: getfmts.c:96
#, c-format
msgid "unrecognised format specification '%s'"
msgstr "알 수 없는 포맷 지정 '%s'입니다"

#: getfmts.c:136
msgid "at most one asterisk '*' is supported in each conversion specification"
msgstr ""

#: gramLatex.c:2376 gramRd.c:3898
#, c-format
msgid "unable to allocate buffer for long string at line %d"
msgstr "라인 %d에 있는 긴 문자열에 대한 버퍼를 할당할 수 없습니다"

#: gramLatex.c:2613 gramRd.c:4387 gramRd.c:4393
#, c-format
msgid "invalid '%s' value"
msgstr "유효하지 않은 '%s' 값입니다"

#: gramRd.c:2531 gramRd.c:2534
#, c-format
msgid "bad markup (extra space?) at %s:%d:%d"
msgstr "%s:%d:%d에 잘못된 마크업이 있습니다"

#: gramRd.c:3113
#, c-format
msgid "Macro '%s' previously defined."
msgstr "매크로 '%s'는 이전에 정의되었습니다"

#: gramRd.c:3123
#, c-format
msgid "At most 4 arguments are allowed for user defined macros."
msgstr "사용자 정의된 매크로에서는 최대 4개의 인자들이 허용됩니다"

#: gramRd.c:3157
#, c-format
msgid "No macro definition for '%s'."
msgstr "'%s'에 주어진 매크로 정의가 없습니다."

#: gramRd.c:3313 gramRd.c:3317
#, c-format
msgid "newline within quoted string at %s:%d"
msgstr "%s:%d에 있는 따옴표 처리된 문자열 내에 새로운 행이 있습니다"

#: gramRd.c:3336
#, c-format
msgid "unable to allocate buffer for long macro at line %d"
msgstr "라인 %d에 있는 긴 매크로에 대해서 버퍼를 할당할 수 없습니다"

#: gramRd.c:3366
msgid "macros nested too deeply: infinite recursion?"
msgstr "매크로들이 너무 깊게 중첩되어 있습니다:  무한 반복을 하나요?"

#: gramRd.c:3760
#, c-format
msgid "Unable to find macro %s"
msgstr "매크로 %s를 찾을 수 없습니다"

#: gramRd.c:3958
#, c-format
msgid "Unexpected end of input (in %c quoted string opened at %s:%d:%d)"
msgstr "입력을 끝을 알 수 없습니다 (in %c quoted string opened at %s:%d:%d)"

#: gramRd.c:4400
msgid "cannot open the connection"
msgstr "커넥션을 열 수 없습니다"

#: gramRd.c:4407
msgid "cannot read from this connection"
msgstr "이 커넥션으로부터 읽을 수 없습니다"

#: gramRd.c:4415
msgid "invalid Rd file"
msgstr "유효한 Rd 파일이 아닙니다"

#: gramRd.c:4434
msgid "'deparseRd' only supports deparsing character elements"
msgstr ""

#: gramRd.c:4437
msgid "bad state"
msgstr "잘못된 상태입니다"

#: gramRd.c:4450
#, c-format
msgid "bad text mode %d in 'deparseRd'"
msgstr "'deparseRd'에 잘못된 텍스트 모드 %d가 있습니다"

#: http.c:32
msgid "invalid bind address specification"
msgstr "유효하지 않은 바인드 주소지정이 있습니다"

#: install.c:112 install.c:131 install.c:133
#, c-format
msgid "invalid '%s' argument"
msgstr "유효하지 않은 '%s' 인자입니다"

#: install.c:162
msgid "write error during file append"
msgstr "파일병합을 하는 동안 쓰기 에러가 발생했습니다"

#: signals.c:42
msgid "pskill() is not supported on this platform"
msgstr "이 플랫폼에서 pskill()은 지원되지 않습니다"

#: signals.c:140
msgid "psnice() is not supported on this platform"
msgstr "이 플랫폼에서 psnice()은 지원되지 않습니다"

#: text.c:67
msgid "invalid argument type"
msgstr "유효하지 않은 인자 타입입니다"

#: text.c:225 text.c:247
msgid "out of memory"
msgstr "메모리가 부족합니다"
