# Traditional Chinese translation for R.
# Copyright (C) 2005 The R Project (msgids).
# This file is distributed under the same license as the R package.
# Wei-Lun Chao <bluebat@member.fsf.org>, 2018.
#
msgid ""
msgstr ""
"Project-Id-Version: R 3.5.1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-24 10:54-0700\n"
"PO-Revision-Date: 2018-09-16 23:21+0800\n"
"Last-Translator: Wei-Lun Chao <bluebat@member.fsf.org>\n"
"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
"Language: zh_TW\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:79
#: windows/widgets.c:82 windows/widgets.c:87
#, 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 "引言的字串於第 %d 列被 EOF 終止"

#: io.c:570
msgid "the first argument must be of mode character"
msgstr "第一個引數必須是模式的字元"

#: io.c:600
#, c-format
msgid "invalid 'numerals' string: \"%s\""
msgstr "無效的 'numerals' 字串：\"%s\""

#: 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 "關閉連接時有問題： %s"

#: 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
#, fuzzy, c-format
msgid "corrupt data frame -- length of column %d does not match nrows"
msgstr "損壞的資料框 -- 第 %d 行的長度不符合 nrows"

#: io.c:1168
#, c-format
msgid "column %s claims to be a factor but does not have numeric codes"
msgstr "第 %s 行宣稱是因子但是沒有數值碼"

#: io.c:1186
#, fuzzy
msgid "corrupt matrix -- dims do not match length"
msgstr "損壞的矩陣 -- 維度不符合長度"

#: 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' 規格"

#: stubs.c:254
#, c-format
msgid "'%s' contains missing values"
msgstr ""

#: 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 "nsl() 無法解析主機 %s"

#: 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 "選單函式只能在圖形介面中使用"

#: 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 版本"

#: windows/util.c:281
msgid "argument must be a character vector or a raw vector"
msgstr "引數必須是字元向量或純量向量"

#: windows/util.c:320
msgid "unable to open the clipboard"
msgstr "無法開啟剪貼簿"

#: windows/util.c:325
msgid "unable to write to the clipboard"
msgstr "無法寫入剪貼簿"

#: windows/util.c:404
msgid "'title' must be a character string"
msgstr "'title' 必須是字串"

#: windows/util.c:413
msgid "'text' must be a character string"
msgstr "'text' 必須是字串"

#: windows/util.c:452
#, c-format
msgid "'%s' must be length 1"
msgstr "'%s' 必須是長度 1"

#: windows/util.c:565
#, c-format
msgid "'%s' must be a list"
msgstr "'%s' 必須是串列"

#: windows/util.c:569
#, c-format
msgid "'%s' element %d is not a window handle"
msgstr "'%s' 元件 %d 並非視窗控柄"

#: windows/widgets.c:109
msgid "Select one or more"
msgstr "選取一或多個"

#: windows/widgets.c:109
msgid "Select one"
msgstr "選取一個"

#: windows/widgets.c:183 windows/widgets.c:251
msgid "'default' must be a character string"
msgstr "'default' 必須是字串"

#: windows/widgets.c:185 windows/widgets.c:253
msgid "'default' is overlong"
msgstr "'default' 過長"

#: windows/widgets.c:189 windows/widgets.c:257
msgid "'caption' must be a character string"
msgstr "'caption' 必須是字串"

#: windows/widgets.c:191
msgid "'multi' must be a logical value"
msgstr "'multi' 必須是邏輯值"

#: windows/widgets.c:193
msgid "'filterindex' must be an integer value"
msgstr "'filterindex' 必須是整數值"
