# 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: 2016-04-01 10:01-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"

#: 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:977
msgid "attempt to plot on null device"
msgstr "不能在无效装置上画图"

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

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

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

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

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

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

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

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

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

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

#: layout.c:593
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:260 unit.c:410 unit.c:1210 unit.c:1290 unit.c:1370 unit.c:1450
msgid "unimplemented unit function"
msgstr "单位函数目前没有实现"

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

#: unit.c:1702 unit.c:1733
msgid "Viewport has zero dimension(s)"
msgstr ""

#: unit.c:1765 unit.c:1780 unit.c:1795 unit.c:1810
msgid "Unsupported unit conversion"
msgstr ""

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

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

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

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