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

#: tcltk.c:69
msgid "parse error in R expression"
msgstr "R表达式里句法分析错误"

#: tcltk.c:178 tcltk.c:255
msgid "tcl error.\n"
msgstr "tcl错误。\n"

#: tcltk.c:207 tcltk.c:281 tcltk.c:298 tcltk.c:318 tcltk.c:338 tcltk.c:413
#: tcltk.c:478 tcltk.c:532 tcltk.c:771
msgid "invalid argument"
msgstr "参数不对"

#: tcltk.c:288
msgid "no such variable"
msgstr ""

#: tcltk.c:320 tcltk.c:340 tcltk.c:415 tcltk.c:480 tcltk.c:534
msgid "invalid tclObj -- perhaps saved from another session?"
msgstr "tclObj无效--是不是因此它是由另外一个对话期间保存的？"

#: tcltk.c:644
msgid "argument list is too long in tcltk internal function 'callback_closure'"
msgstr "tcltk内部函数'callback_closure'的参数串列太长"

#: tcltk.c:677
msgid "argument is not of correct type"
msgstr "参数的种类不对"

#: tcltk.c:729
msgid "no DISPLAY variable so Tk is not available"
msgstr "没有DISPLAY变量，因此没有Tk这个功能"

#: tcltk_unix.c:94
msgid "Tcl is not loaded"
msgstr "还没有载入Tcl"

#: tcltk_unix.c:98
msgid "Tcl is not last loaded handler"
msgstr "Tcl不是最后载入的处理器"

#~ msgid "Tcl already loaded"
#~ msgstr "已经载入了Tcl"
