# 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: \n"
"POT-Creation-Date: 2020-03-24 14:56-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:47
msgid "argument 'files' must be character"
msgstr "인자 'files'는 반드시 문자이어야 합니다"

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

#: Rmd5.c:65
#, 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:2390 gramRd.c:3790
#, c-format
msgid "unable to allocate buffer for long string at line %d"
msgstr "라인 %d에 있는 긴 문자열에 대한 버퍼를 할당할 수 없습니다"

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

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

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

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

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

#: gramRd.c:3053
#, fuzzy, c-format
msgid "Not enough arguments passed to user macro '%s'"
msgstr "사용자 정의된 매크로에서는 최대 4개의 인자들이 허용됩니다"

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

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

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

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

#: gramRd.c:3850
#, 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:4348
msgid "cannot open the connection"
msgstr "커넥션을 열 수 없습니다"

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

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

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

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

#: gramRd.c:4398
#, 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 "메모리가 부족합니다"
