The Simplified Chinese catalog had 20 `@msg` rows, against 714 to 718
in each catalog listed in COMPLETE_MESSAGES, so with the interface in
Simplified Chinese most status-bar and error messages showed in
English.
- zh-hans.tsv gains the 694 missing `@msg` rows in one block with a
header comment on its conventions: no final 。 unless the English
ends with a period, a space between Chinese and adjacent Latin
text, numbers or placeholders, and 、 between list items. The rows
use the catalog's existing terms (画板, 图稿, 编组, 描边, 色板, 实时上色,
图像描摹, 增效工具 ...).
- zh-hans joins COMPLETE_MESSAGES, so
complete_languages_translate_every_message and the narrower message
tests fail when a zh-hans message row is missing, and a new message
needs a zh-hans row.
- The registry comment, docs/development.md (which also gains Greek,
already in COMPLETE_MESSAGES), the zh-hans row of
docs/localization-parity.md, and the interface-languages line of
docs/target-app-parity.md (which also gains Czech, Greek, Hungarian,
Swedish and Finnish) list Simplified Chinese among the languages
that translate messages.
# Status and error messages (`@msg`), translated where the status bar shows them; the message itself
# stays English for agents and tests. `{_1}`, `{_2}` … stand for the `{}` of the format string, in order
# (`complete_languages_translate_every_message` lists any that are missing). Command ids, parameter
# names and values in backticks or code (`colorModel rgb`, `document.export`) stay as they are.
# Simplified Chinese: no final 。 unless the English ends with a period; a space between Chinese text and
# an adjacent Latin word, number or {placeholder}; 、 between the items of a list.
@msg `{key}` must be an array of these names: {_1} `{key}` 必须是由以下名称组成的数组:{_1}
@msg Reset {_1} 重置 {_1}
@msg Saving 正在保存
@msg Saving {_1} 正在保存 {_1}
@msg Sent to {_1} 已发送到 {_1}
@msg `to` must be "corner" or "smooth" `to` 必须是 "corner" 或 "smooth"
@msg a layer couldn't be read 无法读取某个图层
@msg it has more than one artboard 它有多个画板
@msg its editing data has no layers 其编辑数据中没有图层
@msg its editing data is damaged 其编辑数据已损坏
@msg its type is to come in as outlines, which only its page has 其文字需要以轮廓导入,而只有其页面中包含这些轮廓
@msg {_1} files {_1} 文件
@msg A browser with WebGPU or WebGL2 is required. 需要支持 WebGPU 或 WebGL2 的浏览器。
@msg Loading VectorCraft… 正在加载 VectorCraft…
@msg Reload the page to go on (changes not saved yet may be lost). 请重新加载页面以继续 (尚未保存的更改可能会丢失)。
@msg The graphics were lost and couldn't be restarted. 图形已丢失,且无法重新启动。
@msg The graphics were lost and have been restarted 图形已丢失,现已重新启动
@msg VectorCraft failed to start: {e} VectorCraft 启动失败:{e}
@msg Your unsaved changes are kept in this browser: reload the page to get them back. 您未保存的更改保留在此浏览器中:重新加载页面即可找回。
@msg The graphics processor tried first couldn't show the window, so VectorCraft started again on {summary} 首先尝试的图形处理器无法显示窗口,因此 VectorCraft 已在 {summary} 上重新启动
@msg The last start of VectorCraft ended on {name} before its window appeared, so it started on {summary}. To try that graphics processor again, change Preferences › Performance › Graphics Processor or start with WGPU_BACKEND set VectorCraft 上次启动时在其窗口出现之前于 {name} 上终止,因此本次在 {summary} 上启动。要再次尝试该图形处理器,请更改“首选项 › 性能 › 图形处理器”,或在设置 WGPU_BACKEND 后启动
@msg The last start of VectorCraft ended while it listed the graphics processors, so it started on {summary} with OpenGL alone. To try the other graphics backends again, change Preferences › Performance › Graphics Processor or start with WGPU_BACKEND set VectorCraft 上次启动时在列出图形处理器期间终止,因此本次仅使用 OpenGL 在 {summary} 上启动。要再次尝试其他图形后端,请更改“首选项 › 性能 › 图形处理器”,或在设置 WGPU_BACKEND 后启动
@msg not a DXF drawing 不是 DXF 图纸
@msg scale must be a number from {_1} to {_2}, not {s} 比例必须是 {_1} 到 {_2} 之间的数字,而不是 {s}
@msg the artboard to fit must be a positive size up to {_1} pt 要适合的画板尺寸必须为正数,且不超过 {_1} pt
@msg the drawing has no layout `{_1}` (it has {_2}) 图纸中没有布局 `{_1}` (它包含 {_2})
@msg this is a DWG drawing, which can't be read: save it from the CAD app as an ASCII DXF and open that 这是 DWG 图纸,无法读取:请在 CAD 应用中将其保存为 ASCII DXF,然后打开该文件
@msg at this scale the drawing is {w} × {h} pt, more than the canvas holds: choose a smaller scale or fit it to the artboard 按此比例,图纸为 {w} × {h} pt,超出画布的容量:请选择较小的比例,或使其适合画板
@msg the scale is not a usable number 比例不是可用的数字
@msg the drawing is too large to open 图纸过大,无法打开
@msg scale must be a number from {_1} to {_2}, not {_3} 比例必须是 {_1} 到 {_2} 之间的数字,而不是 {_3}
@msg image '{key}' has no pixels and was left out 图像 '{key}' 没有像素,已略去
@msg Embedded {n} image(s) 已嵌入 {n} 张图像
@msg object {0} cannot have children 对象 {0} 不能包含子对象
@msg range `{s}` is empty 范围 `{s}` 为空
@msg range `{s}`: `{part}` names no number 范围 `{s}`:`{part}` 未指定数字
@msg range `{s}`: `{part}` runs backwards 范围 `{s}`:`{part}` 的顺序颠倒
@msg range `{s}`: `{t}` is not a number from 1 to {count} 范围 `{s}`:`{t}` 不是 1 到 {count} 之间的数字
@msg not a graphic style library (format `{_1}`) 不是图形样式库 (格式为 `{_1}`)
@msg Show All Hidden Attributes: nothing is hidden 显示所有隐藏属性:没有隐藏任何内容
@msg Expand: no brush strokes selected 扩展:未选择画笔描边
@msg no brush named `{name}` 没有名为 `{name}` 的画笔
@msg no brush selected 未选择画笔
@msg no symbol instances selected 未选择符号实例
@msg select a symbol instance 请选择一个符号实例
@msg the art has no bounds 图稿没有边界
@msg Image Trace: the traced image is missing 图像描摹:缺少所描摹的图像
@msg Live Paint Merge: select a Live Paint group and the paths to add 实时上色合并:请选择一个实时上色组以及要添加的路径
@msg Live Paint: select paths or compound paths 实时上色:请选择路径或复合路径
@msg Live Paint: these paths are too degenerate to paint 实时上色:这些路径过于退化,无法上色
@msg Shape Builder: no region under the pointer 形状生成器:指针下方没有区域
@msg Shape Builder: select paths or compound paths 形状生成器:请选择路径或复合路径
@msg image data `{_1}` is missing 缺少图像数据 `{_1}`
@msg no Live Paint edge near that point 该点附近没有实时上色边缘
@msg no Live Paint face at that point 该点处没有实时上色表面
@msg select a Live Paint group 请选择一个实时上色组
@msg select an Image Trace object 请选择一个图像描摹对象
@msg select objects, not layers 请选择对象,而不是图层
@msg Blend colors: select at least three objects with filled colours 混合颜色:请至少选择三个填有颜色的对象
@msg no saved themes 没有已保存的主题
@msg `{keep}` is not a side of this axis `{keep}` 不是此轴的一侧
@msg unknown side `{other}` (left|right|top|bottom) 未知的侧边 `{other}` (left|right|top|bottom)
@msg an object in perspective would leave the edited grid 透视中的对象将离开所编辑的网格
@msg nothing to warp 没有可变形的内容
@msg select an object in perspective 请选择透视中的对象
@msg select the artwork to warp 请选择要变形的图稿
@msg select the objects to transform in perspective 请选择要在透视中变换的对象
@msg select type in perspective 请选择透视中的文字
@msg the object has no geometry 该对象没有几何形状
@msg the object has no stroke 该对象没有描边
@msg the object is beyond the plane's horizon 该对象位于平面的地平线之外
@msg the object isn't in perspective 该对象不在透视中
@msg the object isn't on a perspective plane 该对象不在透视平面上
@msg the object would cross the horizon of the perspective plane 该对象将越过透视平面的地平线
@msg the objects would leave the grid 这些对象将离开网格
@msg the pointer is beyond the plane's horizon 指针位于平面的地平线之外
@msg the selection isn't in perspective 所选对象不在透视中
@msg the stroke has no weight 描边没有粗细
@msg {command} didn't create an object {command} 未创建对象
@msg Make Guides: select paths 创建参考线:请选择路径
@msg Release Guides: no guides 释放参考线:没有参考线
@msg guides are locked 参考线已锁定
@msg no saved selection recalled 未调出任何已保存的选区
@msg no saved selections 没有已保存的选区
@msg no such artboard 没有此画板
@msg cannot split an open path at its end point 无法在开放路径的端点处拆分该路径
@msg closing needs three anchors 闭合需要三个锚点
@msg empty brush stroke 画笔描边为空
@msg no such anchor 没有此锚点
@msg no such segment 没有此线段
@msg no such subpath 没有此子路径
@msg object {id} is not a path 对象 {id} 不是路径
@msg object {id} is not a selected top-level object 对象 {id} 不是选中的顶层对象
@msg nothing to redo 没有可重做的操作
@msg nothing to undo 没有可撤销的操作
@msg Expand Appearance: the selection has a basic appearance 扩展外观:所选对象只有基本外观
@msg antiAlias `{id}`: none, art or type antiAlias `{id}`:none、art 或 type
@msg background {other}: transparent, white, black or a colour such as "#ff8800" background {other}:transparent、white、black 或颜色,例如 "#ff8800"
@msg no artboard {i} (0-based; the document has {count}) 没有画板 {i} (从 0 开始计数;文档有 {count} 个)
@msg no artboards named 未指定画板
@msg the document has no artboard 文档没有画板
@msg this format holds one artboard: export several as PDF or with document.exportForScreens 此格式只能包含一个画板:要导出多个画板,请导出为 PDF 或使用 document.exportForScreens
@msg this file was saved without PDF compatibility, and its editing data can't be read ({why}) 此文件保存时未启用 PDF 兼容性,且无法读取其编辑数据 ({why})
@msg the export wrote no file 导出未写入任何文件
@msg {_1} files can be opened but not written (see document.formats) {_1} 文件可以打开,但不能写入 (请参阅 document.formats)
@msg {path}: no file system here (pass dataBase64 to open; omit the path to get dataBase64) {path}:此处没有文件系统 (要打开文件,请传入 dataBase64;省略路径可获取 dataBase64)
@msg Save writes {_1}, not {_2}: use document.export for other formats 保存会写入 {_1},而不是 {_2}:其他格式请使用 document.export
@msg command `{0}` is not available right now: {1} 命令 `{0}` 当前不可用:{1}
@msg internal error in `{cmd}`: {msg} (the document was left as it was before; please report this bug) `{cmd}` 中出现内部错误:{msg} (文档保持原样;请报告此错误)
@msg invalid parameters for `{cmd}`: {msg} `{cmd}` 的参数无效:{msg}
@msg no active document 没有活动文档
@msg no interaction in progress 没有正在进行的交互
@msg no such object {0} 没有对象 {0}
@msg result would exceed the canvas (coordinates out of range) 结果将超出画布 (坐标超出范围)
@msg objects can't be nested more than 32 deep 对象的嵌套不能超过 32 层
@msg the SVG's elements are nested more than {0} deep SVG 的元素嵌套超过 {0} 层
@msg unknown command `{0}` 未知命令 `{0}`
@msg `{what}` closes nothing `{what}` 没有可结束的内容
@msg `{what}` closes something it didn't open `{what}` 结束了并非由它开始的内容
@msg a path has too many points 某条路径的点过多
@msg it ends inside a layer 它在图层内部结束
@msg it has art outside its layers 它有位于图层之外的图稿
@msg it has more than {MAX_NODES} objects 它包含超过 {MAX_NODES} 个对象
@msg it has no layers 它没有图层
@msg it has too many values in a row 它的一行中值过多
@msg it has {_1}, which VectorCraft doesn't read from it yet 它包含 {_1},VectorCraft 尚不能从中读取
@msg its objects are nested too deeply 其对象嵌套过深
@msg its section ending with `%{end}` doesn't end 其以 `%{end}` 结束的部分没有结束
@msg an image VectorCraft can't read was left out 已略去 VectorCraft 无法读取的图像
@msg an image whose data is cut short was left out 已略去数据不完整的图像
@msg gradient “{name}” isn't defined in the file: a plain colour stands in for it 文件中未定义渐变“{name}”:已改用纯色代替
@msg objects with several fills or strokes, effects or brushes came in as their drawn look ({_1}): their appearance isn't editable yet 带有多个填色或描边、效果或画笔的对象已按其绘制外观导入 ({_1}):其外观尚不可编辑
@msg patterns nested too deeply are filled with mid-grey 嵌套过深的图案以中灰色填充
@msg shadings of an unknown type were left out 已略去未知类型的着色
@msg shadings whose functions are of an unknown type are filled with their middle colour 函数类型未知的着色以其中间颜色填充
@msg the file's preview header points outside the file 文件的预览头指向文件之外
@msg this PostScript file can't be read ({why}): save it as PDF or SVG in the app that made it 无法读取此 PostScript 文件 ({why}):请在创建它的应用中将其保存为 PDF 或 SVG
@msg this is not a PostScript file 这不是 PostScript 文件
@msg a PostScript error ({name} in `{op}`) PostScript 错误 ({name},位于 `{op}`)
@msg a PostScript error ({name} in `{op}`), in {procs} PostScript 错误 ({name},位于 `{op}`),在 {procs} 中
@msg a PostScript error ({name} in `{op}`: {at}) PostScript 错误 ({name},位于 `{op}`:{at})
@msg a PostScript error ({name} in `{op}`: {at}), in {procs} PostScript 错误 ({name},位于 `{op}`:{at}),在 {procs} 中
@msg a PostScript error ({name}) PostScript 错误 ({name})
@msg it uses `{at}`, which VectorCraft's PostScript reader doesn't know 它使用了 `{at}`,VectorCraft 的 PostScript 读取器无法识别
@msg the file was read up to an error ({why}): what follows it was left out 文件已读取到出错处 ({why}):其后的内容已略去
@msg this file's PostScript couldn't be read ({why}): {what} 无法读取此文件的 PostScript ({why}):{what}
@msg it has no page 它没有页面
@msg it has too many text objects 它的文本对象过多
@msg it has too much text 它的文字过多
@msg its editing data doesn't say where its art is 其编辑数据未说明其图稿的位置
@msg its editing data doesn't say where its artboard is 其编辑数据未说明其画板的位置
@msg its editing data is for a different page 其编辑数据属于另一个页面
@msg its page has text, and its layers have no text objects to put it in 其页面中有文字,但其图层中没有可放置这些文字的文本对象
@msg the art on them differs from the page's in {_1}% of it 其上的图稿与页面的图稿有 {_1}% 不同
@msg the art on them differs from the page's in {_1}% of it: they come from its editing data all the same 其上的图稿与页面的图稿有 {_1}% 不同:它们仍从其编辑数据导入
@msg the file's layers weren't read ({_1}): it comes in as its page, in one layer 未读取文件的图层 ({_1}):文件以其页面导入,位于一个图层中
@msg the file's layers weren't read from its editing data ({_1}): they come from its PDF part 未从文件的编辑数据中读取图层 ({_1}):图层来自其 PDF 部分
@msg its Windows metafile preview was opened instead, which may simplify the art 已改为打开其 Windows 图元文件预览,图稿可能会被简化
@msg its preview was placed instead, at screen resolution 已改为以屏幕分辨率置入其预览
@msg shadings of more than 4096 patches or triangles were left out 已略去超过 4096 个面片或三角形的着色
@msg it uses `{at}`, which VectorCraft's PostScript reader doesn't know, in {procs} 它在 {procs} 中使用了 `{at}`,VectorCraft 的 PostScript 读取器无法识别
@msg the export region is not finite 导出区域不是有限值
@msg a page out of range 页面超出范围
@msg a page's placement is not finite 页面的位置不是有限值
@msg nothing to print 没有可打印的内容
@msg page size {w} × {h} 页面尺寸 {w} × {h}
@msg the preview image is empty 预览图像为空
@msg the thumbnail image is malformed 缩览图格式错误
@msg can't encode the document: {0} 无法编码文档:{0}
@msg can't save version {0}: VectorCraft writes versions {MIN_VERSION} to {VERSION} 无法保存版本 {0}:VectorCraft 写入的版本为 {MIN_VERSION} 到 {VERSION}
@msg file version {0} is newer than this VectorCraft supports ({VERSION}) 文件版本 {0} 比此 VectorCraft 支持的版本 ({VERSION}) 更新
@msg invalid image data for `{0}` `{0}` 的图像数据无效
@msg not a VectorCraft file: {0} 不是 VectorCraft 文件:{0}
@msg the compressed file unpacks to more than {_1} MB 压缩文件解压后超过 {_1} MB
@msg version {0} files can't be compressed: only version {COMPRESSED_SINCE} and later open compressed files 版本 {0} 的文件不能压缩:只有版本 {COMPRESSED_SINCE} 及更高版本能打开压缩文件
@msg the image's pixels don't match its size 图像的像素与其尺寸不符
@msg {bpp}-bit bitmaps can't be read 无法读取 {bpp} 位位图
@msg not an EMF or WMF file 不是 EMF 或 WMF 文件
@msg its layers use {_1}, which aren't read yet 其图层使用了 {_1},尚不能读取
@msg the EMF header is damaged EMF 文件头已损坏
@msg damaged 已损坏
@msg the WMF header is damaged WMF 文件头已损坏
@msg the export region is empty 导出区域为空
@msg a stream runs past the end 某个流超出了结尾
@msg a stream's length is wrong 某个流的长度错误
@msg a stream's length isn't a number 某个流的长度不是数字
@msg bad stream length 流长度错误
@msg PDF writer error: {0} PDF 写入器错误:{0}
@msg artboard {0} does not exist 画板 {0} 不存在
@msg cannot read PDF: {0} 无法读取 PDF:{0}
@msg invalid PDF setting: {0} PDF 设置无效:{0}
@msg page {0} does not exist (the PDF has {1}) 页面 {0} 不存在 (该 PDF 有 {1} 页)
@msg the PDF has no pages 该 PDF 没有页面
@msg the PDF is password-protected: give its password 该 PDF 受密码保护:请提供其密码
@msg the PDF password is wrong PDF 密码错误
@msg the file holds only a placeholder page, not its art (it was saved without PDF compatibility): save it again with PDF compatibility on, or as PDF or SVG 该文件只包含占位页面,不包含其图稿 (保存时未启用 PDF 兼容性):请在启用 PDF 兼容性后重新保存,或保存为 PDF 或 SVG
@msg this is a PostScript file (an .ai saved in an older format or without PDF compatibility, or an EPS file), not a PDF: File › Open and File › Place read it as EPS 这是 PostScript 文件 (以旧格式或未启用 PDF 兼容性保存的 .ai,或 EPS 文件),不是 PDF:“文件 › 打开”和“文件 › 置入”会将其作为 EPS 读取
@msg unsupported: {0} 不支持:{0}
@msg a page is missing 缺少某个页面
@msg a page tree kid isn't a reference 某个页面树子节点不是引用
@msg a page tree node has no kids 某个页面树节点没有子节点
@msg an object can't be read 无法读取某个对象
@msg bad page tree 页面树错误
@msg bad trailer 文件尾错误
@msg no catalog 没有目录
@msg no cross-reference table 没有交叉引用表
@msg no pages 没有页面
@msg no plug-in {0} is installed 未安装增效工具 {0}
@msg not a valid plug-in module: {0} 不是有效的增效工具模块:{0}
@msg plug-in ABI: {0} 增效工具 ABI:{0}
@msg plug-in exceeded its {0} 增效工具超出了其 {0}
@msg plug-in failed: {0} 增效工具失败:{0}
@msg plug-in manifest: {0} 增效工具清单:{0}
@msg plug-in output: {0} 增效工具输出:{0}
@msg plug-in parameters: {0} 增效工具参数:{0}
@msg plug-in trapped: {0} 增效工具运行时出错 (trap):{0}
@msg is not an image VectorCraft reads 不是 VectorCraft 可读取的图像
@msg not found 未找到
@msg SVG parse error: {0} SVG 解析错误:{0}
@msg decimals must be {_1}–{_2} (got {_3}) 小数位数必须为 {_1}–{_2} (实际为 {_3})
@msg Exporting {_1} 正在导出 {_1}
@msg Exported {what} 已导出 {what}
@msg "{0}" is not a colour: write it as #rrggbb "{0}" 不是颜色:请写为 #rrggbb
@msg could not decode image: {0} 无法解码图像:{0}
@msg image is empty 图像为空
@msg the image is {width} × {height} pixels, more than Image Trace takes ({max} megapixels) 图像为 {width} × {height} 像素,超出图像描摹的上限 ({max} 百万像素)
@msg this isn't a flat-colour logo ({_1}% of its solid areas match a few flat colours), so Flat Logo mode would turn its gradients into patches: use Color mode instead 这不是纯色标志 (其实色区域中只有 {_1}% 与少数几种纯色相符),因此“纯色标志”模式会把其中的渐变变成色块:请改用“颜色”模式
@msg this trace would make more than {max} anchor points, more than the document can show smoothly: raise Noise, lower Paths or Colors, or pick a lower-fidelity preset 此描摹将生成超过 {max} 个锚点,超出文档可流畅显示的数量:请提高“杂色”,降低“路径”或“颜色”,或选择保真度较低的预设
@msg internal error: {msg} (please report this bug) 内部错误:{msg} (请报告此错误)
@msg the background worker stopped 后台工作进程已停止
@msg {_1} failed: {e} {_1} 失败:{e}
@msg {label}… {label}…
@msg no blend options 没有混合选项
@msg bad color {v} 颜色 {v} 无效
@msg the Color Picker is not open 拾色器未打开
@msg the screen color sampler is already open 屏幕取色器已打开
@msg this system has no screen color sampler 此系统没有屏幕取色器
@msg Corners edits the corners of a path 转角用于编辑路径的转角
@msg give corners of the path: anchors where its sides meet at an angle 请给出路径的转角:其各边以一定角度相交处的锚点
@msg select one path, or give its `id` 请选择一条路径,或给出其 `id`
@msg the drawing is no longer loaded 该图纸已不再加载
@msg No saved selections (Select → Save Selection…) 没有已保存的选区 (选择 → 保存选区…)
@msg effect {k} is `{_1}`, not `{id}` 效果 {k} 是 `{_1}`,而不是 `{id}`
@msg no effect at index {k} 索引 {k} 处没有效果
@msg unknown effect `{id}` 未知效果 `{id}`
@msg `{id}` has no envelope dialog `{id}` 没有封套对话框
@msg select an envelope 请选择一个封套
@msg no format to export to 没有可导出的格式
@msg nothing to export: the document has no visible art (or turn on Use Artboards) 没有可导出的内容:文档中没有可见的图稿 (或请打开“使用画板”)
@msg add a format to export 请添加要导出的格式
@msg check an asset to export 请勾选要导出的资源
@msg `{tool}` isn't a freehand tool `{tool}` 不是手绘工具
@msg bad colour `{hex}` (#rrggbb) 颜色 `{hex}` 无效 (#rrggbb)
@msg no gradient stop or freeform point is selected 未选择渐变色标或任意形状点
@msg no graphic style `{n}` 没有图形样式 `{n}`
@msg select two or more graphic styles to merge 请选择两个或更多要合并的图形样式
@msg the PDF is no longer loaded 该 PDF 已不再加载
@msg no such layer or object 没有此图层或对象
@msg `{tool}` isn't a Liquify tool `{tool}` 不是液化工具
@msg {_1} linked file(s) can't be read here: their previews show 此处无法读取 {_1} 个链接文件:显示的是其预览
@msg {_1} linked image(s) changed on disk: Update Links shows the new versions 有 {_1} 个链接图像已在磁盘上更改:“更新链接”可显示新版本
@msg pick a colour, gradient or pattern to save as a swatch 请选取要保存为色板的颜色、渐变或图案
@msg Packaged {n} file(s) in {folder}{note} 已将 {n} 个文件打包到 {folder}{note}
@msg Packaged {n} file(s){note} 已打包 {n} 个文件{note}
@msg choose a location for the package 请为打包选择位置
@msg missing `folder` 缺少 `folder`
@msg the package came back damaged 返回的打包文件已损坏
@msg no preset editor 没有预设编辑器
@msg no perspective grid preset named `{name}` 没有名为 `{name}` 的透视网格预设
@msg no active perspective plane 没有活动的透视平面
@msg plane must be left, right or ground plane 必须是 left、right 或 ground
@msg missing `id` (see plugin.list) 缺少 `id` (请参阅 plugin.list)
@msg no plug-in {id} is installed 未安装增效工具 {id}
@msg {_1} is a live effect (Effect › Plug-ins) {_1} 是实时效果 (效果 › 增效工具)
@msg a preset named `{_1}` exists 名为 `{_1}` 的预设已存在
@msg no print preset named `{base}` 没有名为 `{base}` 的打印预设
@msg no print preset named `{name}` 没有名为 `{name}` 的打印预设
@msg no saved print preset named `{name}` ({DEFAULT_PRESET} is protected: start a new one from it) 没有名为 `{name}` 的已保存打印预设 ({DEFAULT_PRESET} 受保护:请以它为基础新建一个)
@msg print settings are not an object 打印设置不是对象
@msg no colour group `{g}` 没有颜色组 `{g}`
@msg select artwork (or a colour group) to recolor 请选择要重新着色的图稿 (或颜色组)
@msg Downloaded {_1} file(s) 已下载 {_1} 个文件
@msg Preview in Browser needs the desktop app (the web downloads files instead) “在浏览器中预览”需要桌面应用 (网页版会改为下载文件)
@msg the compressed file unpacks to more than VectorCraft reads ({_1} MB of document, {_2} MB per image) 压缩文件解压后超出 VectorCraft 的读取上限 (文档 {_1} MB,每张图像 {_2} MB)
@msg the document is too large to save compressed ({0}): save it with Use Compression off 文档过大,无法压缩保存 ({0}):请关闭“使用压缩”后保存
@msg the file stopped being read (please report this bug) 文件读取已中断 (请报告此错误)
@msg the image can't be read as a texture 无法将图像作为纹理读取
@msg give a fraction `t` from 0 to 1 请给出 0 到 1 之间的比例 `t`
@msg give the path `id` 请给出路径的 `id`
@msg invalid stroke widths 描边宽度无效
@msg object has no weighted stroke 对象没有带粗细的描边
@msg Angles require two straight segments 角度需要两条直线段
@msg Choose two different points 请选择两个不同的点
@msg Choose two non-parallel straight segments 请选择两条不平行的直线段
@msg Choose two nonzero angle arms 请选择两条长度不为零的角边
@msg Dimension point is outside the canvas 尺寸标注点位于画布之外
@msg Dimension size is outside its supported range 尺寸标注大小超出支持的范围
@msg First measured segment no longer exists 第一条测量线段已不存在
@msg Invalid dimension distance 尺寸标注距离无效
@msg Invalid dimension font name 尺寸标注字体名称无效
@msg Invalid drawing scale 图纸比例无效
@msg Invalid real scale 实际比例无效
@msg Measured anchor no longer exists 测量锚点已不存在
@msg Measured segment no longer exists 测量线段已不存在
@msg Non-finite dimension 尺寸标注不是有限值
@msg Scale must be drawing:real, for example 1:10 比例必须为 图纸:实际,例如 1:10
@msg Scale ratio must be between 1:1000000 and 1000000:1 比例必须介于 1:1000000 和 1000000:1 之间
@msg Second measured segment no longer exists 第二条测量线段已不存在
@msg Unknown dimension mode 未知的尺寸标注模式
@msg Unknown dimension option {k} 未知的尺寸标注选项 {k}
@msg span must be "object" or "selection", got {v} span 必须是 "object" 或 "selection",实际为 {v}
@msg span: "selection" places a `gradient`, not a swatch span: "selection" 放置的是 `gradient`,而不是色板
@msg span: "selection" places a gradient: give `gradient` span: "selection" 放置渐变:请给出 `gradient`
@msg span: "selection" places a linear or radial gradient, not a freeform one span: "selection" 放置线性或径向渐变,而不是任意形状渐变
@msg span: "selection" places the gradient itself: leave out `start` and `end` (they already place it in document coordinates) span: "selection" 自行放置渐变:请省略 `start` 和 `end` (它们已按文档坐标放置渐变)
@@ -233,7 +233,7 @@ other `sv-*` locale resolve to it), Czech (`cs`, every menu label) and Brazilian
control channel, MCP and tests read them) and are translated only where the status bar draws them
(`i18n::msg`). `@msg` catalog rows hold a whole message or a template such as
`Couldn't open {name}: {e}`; `{_1}`, `{_2}` … stand for the format string's `{}`, and the values in the
placeholders are translated in turn (the reason after `: {e}` is often a message too). Czech, German, Spanish, French, Hungarian, Italian, Japanese, Korean, Polish, Brazilian Portuguese, Russian, Swedish, Ukrainian, Vietnamese and Finnish cover every
placeholders are translated in turn (the reason after `: {e}` is often a message too). Czech, German, Greek, Spanish, French, Hungarian, Italian, Japanese, Korean, Polish, Brazilian Portuguese, Russian, Simplified Chinese, Swedish, Ukrainian, Vietnamese and Finnish cover every
message literal the test scan finds (`complete_languages_translate_every_message`, languages listed in
`COMPLETE_MESSAGES`): a new `Err("…")`, `Other(…)`, `#[error(…)]` or `status(…)` message needs a row in each of those catalogs (`VECTORCRAFT_I18N_DUMP_MESSAGES=messages.txt cargo test -p vectorcraft-ui-egui
complete_languages_translate_every_message` lists them all). Other languages show messages in English
@@ -24,7 +24,7 @@ Chinese by `imachus`). None is recorded as reviewed by a native speaker; the cat
| Language | Code | UI strings translated | Dialogs / tooltips / messages | Script support | Native review | Status | To `full` (h) |
|---|---|---|---|---|---|---|---|
| English | `en` | source, 100% | all | Latin | — | full | — |
| Simplified Chinese (Mandarin) | `zh-hans` | 3,647 rows; menus, panels, dialogs complete (tests); 85% overall | messages in English (1 of 604) | CJK UI font from craft-fonts (BIZ UDPGothic) when embedded, else a system font; IME with marked text at the caret; vertical type partial ([type-parity.md](type-parity.md)) | no | partial | 2–3 |
| Simplified Chinese (Mandarin) | `zh-hans` | 4,761 rows, 714 of them `@msg` (counted 2026-10-16): menus, `tl!` literals and messages complete (tests) | all | CJK UI font from craft-fonts (BIZ UDPGothic) when embedded, else a system font; IME with marked text at the caret; vertical type partial ([type-parity.md](type-parity.md)) | no | full | — (review) |
| Spanish | `es` | 4,009 / 4,020 (99.7%) | all (604 messages) | Latin | no | full | — (review) |
| Hindi | `hi` | 0 | none | Devanagari: the document's text shapes (HarfRust), with tests of conjuncts, reph, pre-base matras, nukta forms and caret stops that run when an OpenType Devanagari font is installed, but the egui interface does no complex shaping | no | none | 20–30 |
| Arabic | `ar` | 0 | none | document text: bidi layout and Paragraph Direction; interface: no right-to-left layout, no Arabic shaping in egui | no | none | 25–40 |
@@ -565,7 +565,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
For Auto Size area type in columns, the bisection for the frame's height runs on the lines of the one-column layout, and its result is checked with at most two layouts of the columns. When the text wraps around objects or does not fit the one-column layout, or when the check fails, the columns are laid out at every step of the bisection, as before. Typing at the start of a story of 50,000 characters in 2 columns took 1,670 ms a keystroke and now takes 292 ms (release build, `auto_height_in_columns_typing_timing`).
An edit copies a thread's story only when it changes one of the thread's frames: with a story of 50,000 characters threaded through 8 frames with a style change at every word, moving another object took 7.8 ms and now takes 0.013 ms, and a frame of a drag took 7.2 ms and now takes 0.012 ms (release build, `threaded_story_edit_timing`).
The Paragraph panel menu's Hyphenation… (`ui.hyphenation`, `text.setFormat {wordsLongerThan, afterFirst, beforeLast, hyphenLimit, hyphenationZone, hyphenateCapitalized}`) sets each paragraph's hyphenation limits: the shortest word that breaks, the fewest letters on each side of the hyphen, the most hyphenated lines in a row, a zone at the right edge where the Single-line Composer breaks before a word instead of hyphenating it, and whether capitalized words break. The defaults are words longer than 5 letters, 3 letters on each side, no limit or zone, and capitalized words hyphenated; paragraph styles and the native file keep the options.
- **Interface languages, vertical type:** Preferences ▸ User Interface (or VectorCraft ▸ Language on macOS) picks Automatic (the system locale) or a registered language, persisted as `interfaceLanguage`. Translations come from per-language catalogs (`i18n/*.tsv`): Traditional and Simplified Chinese, Japanese, German (every `de-*` locale), Spanish (neutral international Spanish, for every `es-*` locale), French (every `fr-*` locale), Italian (every `it-*` locale) Russian (every `ru-*` locale) and Ukrainian (every `uk-*` locale) cover the whole interface, Czech every menu label; German, Spanish, French, Italian, Japanese, Korean, Vietnamese, Polish, Brazilian Portuguese, Russian and Ukrainian also translate status-bar and error messages as they are shown (`@msg` templates, every message literal tested; the messages themselves stay English for agents); untranslated text stays English. Japanese and Chinese glyphs come from the craft-fonts build input (release builds) or the installed fonts, Czech, German, Spanish, French, Italian, Russian and Ukrainian ones from the bundled UI fonts. The web app follows the browser's languages (or `?lang=`). The Basic toolbar's Type button holds Vertical Type in its flyout. Vertical Type, Vertical Area Type and Vertical Type on a Path create vertical text (columns right to left, upright CJK glyphs and marks with `vert` alternates, Latin and longer numbers on their side, two- and three-digit numbers set as tate-chu-yoko in one em of the column (kept whole when justified), upright glyphs centred on the column (tracked or justified too), point type's anchor on the first column's centre line); kinsoku applies to horizontal and vertical Japanese (Paragraph panel › Kinsoku Set, `text.setFormat {kinsoku}`: Hard, the default, keeps closing marks, iteration marks, the prolonged sound mark and small kana off the line start and opening brackets off its end; Soft lets 々, ー and small kana start a line as JLREQ's level 3 rules do; None turns it off), and justified Japanese lines spread their room between characters (not inside Latin words); Paragraph panel › Mojikumi Set (shown with Preferences › Type › Show East Asian Options, `text.setFormat {mojikumi}`): None or Line-end Punctuation Half Width (new type's default, as in Illustrator; older documents and imported text keep None) shares one half-em space between consecutive punctuation, sets a closing mark ending a line half width and an opening bracket starting a line flush with its start (a paragraph's first line at its first-line indent, JIS X 4051's principle in JLREQ 3.1.5), and puts a quarter em between Japanese and Latin letters or digits; Paragraph panel menu › Top-to-Top / Bottom-to-Bottom Leading measures leading from em box top to top (area type's first line touches the frame) or from baseline to baseline (new type in a Japanese interface starts top to top, with em box centre character alignment, #432); Paragraph panel menu › Burasagari None / Regular / Force (`text.setFormat {burasagari: "none"|"standard"|"forced"}`) hangs an East Asian comma or full stop (、。,.、。) ending an area type line outside it, Regular (new type's default) when it doesn't fit and Force always (the rest of the line then fills the measure; closing brackets and Latin punctuation don't hang); Character panel menu › Character Alignment (with the East Asian options; `text.setFormat` or `text.setRangeStyle {charAlign}`) lines characters smaller than the largest on their line up on the Roman baseline, the em box top/right, centre or bottom/left, or the ICF (ideographic character face) top/right or bottom/left, from the font's BASE table or, without one, the average ink box of some ideographs and kana; Proportional Metrics (the same menu; `{proportionalMetrics}`) sets full-width glyphs on the font's proportional widths (OpenType `palt`) in horizontal type and upright glyphs on its proportional heights (`vpal`, shaped top to bottom; fonts without vertical metrics keep their cells) in vertical type, and Line-end Punctuation Half Width takes nothing more off the punctuation they re-spaced; Type ▸ Type Orientation switches existing text; caret, selection, hit testing and arrow keys follow the writing direction. Vertical text exports to PDF as real text and to SVG as outlines. The interface is available in Polish (`pl`): menus, panels, dialogs and messages, with one/few/many plurals; AI-drafted, native review pending (#1498).
- **Interface languages, vertical type:** Preferences ▸ User Interface (or VectorCraft ▸ Language on macOS) picks Automatic (the system locale) or a registered language, persisted as `interfaceLanguage`. Translations come from per-language catalogs (`i18n/*.tsv`): Traditional and Simplified Chinese, Japanese, German (every `de-*` locale), Spanish (neutral international Spanish, for every `es-*` locale), French (every `fr-*` locale), Italian (every `it-*` locale) Russian (every `ru-*` locale) and Ukrainian (every `uk-*` locale) cover the whole interface, Czech every menu label; Czech, German, Greek, Spanish, French, Hungarian, Italian, Japanese, Korean, Vietnamese, Polish, Brazilian Portuguese, Russian, Simplified Chinese, Swedish, Ukrainian and Finnish also translate status-bar and error messages as they are shown (`@msg` templates, every message literal tested; the messages themselves stay English for agents); untranslated text stays English. Japanese and Chinese glyphs come from the craft-fonts build input (release builds) or the installed fonts, Czech, German, Spanish, French, Italian, Russian and Ukrainian ones from the bundled UI fonts. The web app follows the browser's languages (or `?lang=`). The Basic toolbar's Type button holds Vertical Type in its flyout. Vertical Type, Vertical Area Type and Vertical Type on a Path create vertical text (columns right to left, upright CJK glyphs and marks with `vert` alternates, Latin and longer numbers on their side, two- and three-digit numbers set as tate-chu-yoko in one em of the column (kept whole when justified), upright glyphs centred on the column (tracked or justified too), point type's anchor on the first column's centre line); kinsoku applies to horizontal and vertical Japanese (Paragraph panel › Kinsoku Set, `text.setFormat {kinsoku}`: Hard, the default, keeps closing marks, iteration marks, the prolonged sound mark and small kana off the line start and opening brackets off its end; Soft lets 々, ー and small kana start a line as JLREQ's level 3 rules do; None turns it off), and justified Japanese lines spread their room between characters (not inside Latin words); Paragraph panel › Mojikumi Set (shown with Preferences › Type › Show East Asian Options, `text.setFormat {mojikumi}`): None or Line-end Punctuation Half Width (new type's default, as in Illustrator; older documents and imported text keep None) shares one half-em space between consecutive punctuation, sets a closing mark ending a line half width and an opening bracket starting a line flush with its start (a paragraph's first line at its first-line indent, JIS X 4051's principle in JLREQ 3.1.5), and puts a quarter em between Japanese and Latin letters or digits; Paragraph panel menu › Top-to-Top / Bottom-to-Bottom Leading measures leading from em box top to top (area type's first line touches the frame) or from baseline to baseline (new type in a Japanese interface starts top to top, with em box centre character alignment, #432); Paragraph panel menu › Burasagari None / Regular / Force (`text.setFormat {burasagari: "none"|"standard"|"forced"}`) hangs an East Asian comma or full stop (、。,.、。) ending an area type line outside it, Regular (new type's default) when it doesn't fit and Force always (the rest of the line then fills the measure; closing brackets and Latin punctuation don't hang); Character panel menu › Character Alignment (with the East Asian options; `text.setFormat` or `text.setRangeStyle {charAlign}`) lines characters smaller than the largest on their line up on the Roman baseline, the em box top/right, centre or bottom/left, or the ICF (ideographic character face) top/right or bottom/left, from the font's BASE table or, without one, the average ink box of some ideographs and kana; Proportional Metrics (the same menu; `{proportionalMetrics}`) sets full-width glyphs on the font's proportional widths (OpenType `palt`) in horizontal type and upright glyphs on its proportional heights (`vpal`, shaped top to bottom; fonts without vertical metrics keep their cells) in vertical type, and Line-end Punctuation Half Width takes nothing more off the punctuation they re-spaced; Type ▸ Type Orientation switches existing text; caret, selection, hit testing and arrow keys follow the writing direction. Vertical text exports to PDF as real text and to SVG as outlines. The interface is available in Polish (`pl`): menus, panels, dialogs and messages, with one/few/many plurals; AI-drafted, native review pending (#1498).
- **Transparency:** opacity masks (clip/invert/disable/link), exported as SVG `<mask>` and PDF soft masks. The constant alpha soft mask that PDF and `.ai` export draw a CMYK page with transparency through is white, so applications that read every soft mask by its luminosity show the page too (#1359, part of #1286).
Disable, Enable, Unlink and Link Opacity Mask and Opacity Mask Options (`transparency.setOpacityMask`) record no undo step when every mask they act on already has the flags they set.
- **Image Trace, thin closed outlines:** generated `fit::snap_area_tests` verify nonzero interiors after straightening, opposite closed-boundary winding and Noise controls; see [quality notes](image-trace-quality.md#thin-closed-outlines-with-snap-curves-to-lines). Scores and hours unchanged; open-piece fitting is unchanged.
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.