# Chinese translations for R package
# Copyright (C) 2006 The R Foundation
# This file is distributed under the same license as the PACKAGE package.
# 陈斐 <feic@normipaiva.com>, 2007.
#
msgid ""
msgstr ""
"Project-Id-Version: R 2.4.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-24 14:56-0700\n"
"PO-Revision-Date: 2005-02-04 08:37+0000\n"
"Last-Translator: 陈斐 <feic@normipaiva.com>\n"
"Language-Team: Chinese\n"
"Language: zh_CN\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'的长度必需为一"

#: 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 "用户定义的宏最多只允许四个参数"

#: 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 "用户定义的宏最多只允许四个参数"

#: 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 "意外结束输入（在%c 引号的字符串于%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 "'deparseRd'只支持反解析字符元素"

#: 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 "内存不足"
