# 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: bugs.r-project.org\n"
"POT-Creation-Date: 2020-03-24 10:13\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"

msgid "named list expected"
msgstr ""

#, fuzzy
msgid "some named values are not arguments to the supplied log-likelihood"
msgstr "'fixed'里的一些带名参数不是给所提供的对数似然作为参数来用的"

msgid "Mismatch in length of start values"
msgstr ""

msgid "fixed values violate constraints"
msgstr ""

msgid "start values do not satisfy constraints"
msgstr ""

msgid ""
"profiling has found a better solution, so original fit had not converged"
msgstr "通过靠模切削找到了一个更好的答案，因此原来的拟合没有收敛"

msgid "levels truncated to positive values only"
msgstr "阶层截为正数值"

msgid "extra arguments discarded"
msgstr "多余的参数略过不用"

#~ msgid "'start' must be a named list"
#~ msgstr "'start'必需是带名串列"

#~ msgid ""
#~ "some named arguments in 'start' are not arguments to the supplied log-"
#~ "likelihood"
#~ msgstr "'start'里的一些带名参数不是给所提供的对数似然作为参数来用的"
