# 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 10:53-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"

#: gpar.c:473
msgid "updateGContext must only be called after initGContext"
msgstr ""

#: grid.c:212
msgid "cannot clip to rotated viewport"
msgstr "无法修剪至旋转了的視窗中"

#: grid.c:697 grid.c:702 grid.c:792 grid.c:797
msgid "cannot pop the top-level viewport ('grid' and 'graphics' output mixed?)"
msgstr "无法弹到最上层的視窗('grid'和'graphics'输出有混合？)"

#: grid.c:979
msgid "attempt to plot on null device"
msgstr "不能在无效装置上画图"

#: grid.c:1400
msgid "there is no layout defined"
msgstr "需要设定布局"

#: grid.c:1620
msgid "polygon edge not found (zero-width or zero-height?)"
msgstr "找不到多边形的边(零宽度或是零高度？)"

#: grid.c:1629
msgid "polygon edge not found"
msgstr "找不到多边形的边"

#: grid.c:1783
msgid "require at least two points to draw arrow"
msgstr "至少需要两点才能画一个箭头"

#: grid.c:2102
msgid "non-finite control point in Xspline"
msgstr "Xspline里不能有无限值的控制点"

#: grid.c:2982
msgid "non-finite x or y in graphics path"
msgstr "图形路径里x或y的值非限定"

#: grid.c:3026
msgid "Empty raster"
msgstr ""

#: grid.c:3509
msgid "invalid plotting symbol"
msgstr "图画符号值不对"

#: grid.c:3597
msgid "unable to clip to rotated rectangle"
msgstr "无法修剪到旋转了的长方形上"

#: layout.c:600
msgid "invalid 'layout.pos.row'"
msgstr "'layout.pos.row'的值不对"

#: layout.c:604
msgid "invalid 'layout.pos.col'"
msgstr "'layout.pos.col'的值不对"

#: matrix.c:50
msgid "singular transformation matrix"
msgstr "奇异转换矩阵"

#: state.c:170
msgid "unable to store 'grid' state.  Too many devices open?"
msgstr "无法保留'grid'的状况。是不是因为你打开了太多的装置?"

#: unit.c:65
msgid "Cannot create unit scalar from 0-length unit vector"
msgstr ""

#: unit.c:789 unit.c:1288
msgid "invalid unit or unit not yet implemented"
msgstr "要么没有这种单位，要么这个单位目前没有被实现"

#: unit.c:1345 unit.c:1376
msgid "Viewport has zero dimension(s)"
msgstr ""

#: unit.c:1408 unit.c:1423 unit.c:1438 unit.c:1453
msgid "Unsupported unit conversion"
msgstr ""

#: unit.c:1545
msgid "Invalid unit"
msgstr "单位不对"

#: unit.c:1560
msgid "'units' must be character"
msgstr "'units'必需是字符"

#: unit.c:1563
msgid "'units' must be of length > 0"
msgstr "'units'的长度必需大于零"

#: unit.c:1574
msgid ""
"data must be either NULL, have length 1, or match the length of the final "
"unit vector"
msgstr ""

#: unit.c:1586
msgid "no string supplied for 'strwidth/height' unit"
msgstr ""

#: unit.c:1590
msgid "no 'grob' supplied for 'grobwidth/height' unit"
msgstr ""

#: unit.c:1608
msgid "'gPath' must have depth 1 in 'grobwidth/height' units"
msgstr ""

#: unit.c:1613
msgid "non-NULL value supplied for plain unit"
msgstr ""

#: unit.c:1666 unit.c:1700 unit.c:1749
msgid "old version of unit class is no longer allowed"
msgstr ""

#: unit.c:1672
msgid "object is not coercible to a unit"
msgstr ""

#: unit.c:1698
msgid "object is not a unit"
msgstr ""

#: unit.c:1830
msgid "units can only be multiplied with numerics and integers"
msgstr ""

#: viewport.c:315
msgid "non-finite location and/or size for viewport"
msgstr "視窗的位置或大小不能是无限的"

#~ msgid "unimplemented unit function"
#~ msgstr "单位函数目前没有实现"
