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

#: io.c:329 io.c:333 io.c:343 io.c:574 io.c:774 io.c:827 io.c:840 io.c:844
#: io.c:850 io.c:851 io.c:1097 io.c:1098 io.c:1100 io.c:1101 io.c:1102
#: io.c:1103 io.c:1104 io.c:1105 stubs.c:47 stubs.c:67 windows/dialogs.c:169
#: windows/dialogs.c:194 windows/dialogs.c:197 windows/dialogs.c:241
#: windows/dialogs.c:278 windows/dialogs.c:289 windows/dialogs.c:313
#: windows/dialogs.c:321 windows/util.c:117 windows/widgets.c:78
#: windows/widgets.c:81 windows/widgets.c:86
#, c-format
msgid "invalid '%s' argument"
msgstr "인자 '%s'의 값이 올바르지 않습니다."

#: io.c:352 io.c:837
msgid "invalid quote symbol set"
msgstr "올바르지 않은 인용부호셋 입니다."

#: io.c:364 io.c:860 io.c:1085
msgid "cannot open the connection"
msgstr "커넥션을 열 수 없습니다"

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

#: io.c:418 io.c:436
#, c-format
msgid "quoted string on line %d terminated by EOF"
msgstr ""

#: io.c:570
msgid "the first argument must be of mode character"
msgstr "첫번째 인자는 반드시 문자형이어야 합니다."

#: io.c:600
#, c-format
msgid "invalid 'numerals' string: \"%s\""
msgstr ""

#: io.c:776
#, c-format
msgid "Selection: "
msgstr "선택: "

#: io.c:870 io.c:886
msgid "cannot allocate buffer in 'readTableHead'"
msgstr "'readTableHead' 내에서 버퍼를 할당할 수 없습니다"

#: io.c:900
msgid "\\ followed by EOF"
msgstr "\\ 가 EOF 뒤에 놓였습니다"

#: io.c:953 io.c:958
#, c-format
msgid "incomplete final line found by readTableHeader on '%s'"
msgstr ""
"'%s'에서 readTableHeader에 의하여 발견된 완성되지 않은 마지막 라인입니다"

#: io.c:1016
msgid "index out of range"
msgstr "범위밖의 인덱스입니다"

#: io.c:1053
#, c-format
msgid "Problem closing connection:  %s"
msgstr ""

#: io.c:1055
msgid "Problem closing connection"
msgstr "커넥션을 닫는 도중 문제가 발생했습니다."

#: io.c:1078
msgid "'file' is not a connection"
msgstr "'file'은 커넥션이 아닙니다."

#: io.c:1081
msgid "cannot write to this connection"
msgstr "이 커넥션에 쓰기를 할 수 없습니다."

#: io.c:1111
msgid "'dec' must be a single character"
msgstr "'dec'는 반드시 한개의 문자이어야 합니다"

#: io.c:1137
#, c-format
msgid "corrupt data frame -- length of column %d does not not match nrows"
msgstr ""
"데이터 프레임이 손상되었습니다 -- 열의 길이 %d가 행의 개수와 일치하지 않습"
"니다"

#: io.c:1168
#, c-format
msgid "column %s claims to be a factor but does not have numeric codes"
msgstr ""

#: io.c:1186
msgid "corrupt matrix -- dims not not match length"
msgstr "올바른 행렬이 아닙니다 -- dims 가 길이가 일치하지 않습니다"

#: stubs.c:56
msgid "'savehistory' can only be used in Rgui and Rterm"
msgstr "'savehistory'는 오로지 Rgui 와 Rterm에서만 사용될 수 있습니다"

#: stubs.c:73
msgid "'loadhistory' can only be used in Rgui and Rterm"
msgstr "'loadhistory'는 오로지 Rgui 와 Rterm에서만 사용될 수 있습니다"

#: stubs.c:85
msgid "invalid timestamp"
msgstr "잘못된 타임스탬프입니다."

#: stubs.c:151 stubs.c:159
msgid "X11 dataentry cannot be loaded"
msgstr "X11 데이터 항목을 로드할 수 없습니다."

#: stubs.c:155 stubs.c:184 stubs.c:190
msgid "X11 is not available"
msgstr "X11이 사용가능하지 않습니다."

#: stubs.c:248 stubs.c:251
#, c-format
msgid "invalid '%s' specification"
msgstr "유효하지 않은 '%s' 지정입니다"

#: utils.c:85
msgid "'hostname' must be a character vector of length 1"
msgstr "'hostname'은 반드시 길이가 1인 문자형 벡터이어야 합니다"

#: utils.c:91
#, c-format
msgid "nsl() was unable to resolve host '%s'"
msgstr ""

#: utils.c:98
msgid "unknown format returned by 'gethostbyname'"
msgstr "알수없는 형식이 'gethostbyname'에 의해서 반환되었습니다"

#: utils.c:107
msgid "nsl() is not supported on this platform"
msgstr "이 플랫폼에서는 nsl()를 사용할 수 없습니다."

#: windows/dialogs.c:181
msgid "unknown type"
msgstr "알수없는 유형입니다"

#: windows/dialogs.c:213 windows/dialogs.c:237 windows/dialogs.c:275
#: windows/dialogs.c:310
msgid "menu functions can only be used in the GUI"
msgstr "메뉴 함수들은 GUI내에서만 사용할 수 있습니다"

#: windows/dialogs.c:245
#, c-format
msgid "unable to retrieve items for %s (%s)"
msgstr "%s (%s)대한 항목들을 불러올 수 없습니다"

#: windows/dialogs.c:283
#, c-format
msgid "unable to add menu (%s)"
msgstr "메뉴 %s를 추가할 수 없습니다"

#: windows/dialogs.c:295
#, c-format
msgid "unable to add menu item (%s)"
msgstr "메뉴항목 %s을 추가할 수 없습니다"

#: windows/dialogs.c:318
msgid "menu does not exist"
msgstr "메뉴가 존재하지 않습니다"

#: windows/dialogs.c:325
#, c-format
msgid "unable to delete menu item (%s)"
msgstr "메뉴항목 %s를 삭제할 수 없습니다"

#: windows/registry.c:73 windows/registry.c:248 windows/registry.c:251
#: windows/registry.c:254
#, c-format
msgid "invalid '%s' value"
msgstr "'%s'의 값이 잘못되었습니다"

#: windows/registry.c:266
#, c-format
msgid "Registry key '%ls' not found"
msgstr "레지스트리 키 '%ls'를 찾을 수 없습니다"

#: windows/util.c:42
msgid "unsupported version of Windows"
msgstr "지원되지 않는 버전의 윈도우즈입니다"

#: windows/util.c:281
msgid "argument must be a character vector or a raw vector"
msgstr "인자는 반드시 문자형 벡터 또는  raw 벡터이어야 합니다"

#: windows/util.c:318
msgid "unable to open the clipboard"
msgstr "클립보드를 열 수 없습니다."

#: windows/util.c:323
msgid "unable to write to the clipboard"
msgstr "클립보드에 쓸 수 없습니다."

#: windows/util.c:402
msgid "'title' must be a character string"
msgstr "'title'은 반드시 문자열이어야 합니다"

#: windows/util.c:411
msgid "'text' must be a character string"
msgstr "'text'는 반드시 문자열이어야 합니다"

#: windows/util.c:450
#, c-format
msgid "'%s' must be length 1"
msgstr "'%s'는 반드시 길이가 1이어야 합니다"

#: windows/util.c:563
#, c-format
msgid "'%s' must be a list"
msgstr "'%s'은 반드시 리스트 형이어야 합니다"

#: windows/util.c:567
#, c-format
msgid "'%s' element %d is not a window handle"
msgstr "'%s'의 구성요소 %d는 윈도우 핸들이 아닙니다"

#: windows/widgets.c:108
msgid "Select one or more"
msgstr "하나 이상을 선택해 주세요"

#: windows/widgets.c:108
msgid "Select one"
msgstr "하나를 선택해주세요"

#: windows/widgets.c:182 windows/widgets.c:250
msgid "'default' must be a character string"
msgstr "'default'는 반드시 문자열이어야 합니다"

#: windows/widgets.c:184 windows/widgets.c:252
msgid "'default' is overlong"
msgstr "'default'가 너무 깁니다"

#: windows/widgets.c:188 windows/widgets.c:256
msgid "'caption' must be a character string"
msgstr "'caption'은 반드시 문자열이어야 합니다"

#: windows/widgets.c:190
msgid "'multi' must be a logical value"
msgstr "'multi'는 반드시 논리값이어야 합니다"

#: windows/widgets.c:192
msgid "'filterindex' must be an integer value"
msgstr "'filterindex'의 값은 반드시 정수이어야 합니다."
