# 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: 2021-11-06 17:18+0100\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:3976
#, c-format
msgid "unable to allocate buffer for long string at line %d"
msgstr "라인 %d에 있는 긴 문자열에 대한 버퍼를 할당할 수 없습니다"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#: install.c:98
msgid "path too long"
msgstr ""

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

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

#: pdscan.c:67
msgid "too many items"
msgstr ""

#: pdscan.c:115
msgid "non-character argument"
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:69
msgid "invalid argument type"
msgstr "유효하지 않은 인자 타입입니다"

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