Files
SnapOtter/packages/shared/src/i18n/zh-CN.ts
T
SnapOtter 7daaa11e7d refactor(shared): modality-scoped tool categories, dissolve ai category
Replace the flat 12-category structure with 27 modality-scoped
sub-categories. The cross-modality "ai" category is dissolved: each
AI tool moves into its natural modality's sub-category (e.g.
remove-background -> image/enhance, auto-subtitles -> video/subtitles,
ocr -> documents/convert, transcribe-audio -> audio/convert).

New category hierarchy:
- Image (8): essentials, adjustments, enhance, watermark, layout,
  utilities, optimization, format
- Video (5): video-edit, video-convert, video-effects,
  video-subtitles, video-metadata
- Audio (4): audio-edit, audio-convert, audio-effects, audio-metadata
- Documents (5): pdf-organize, pdf-edit, pdf-security, pdf-optimize,
  doc-convert
- Data (2): data, archives

No tool IDs, routes, or backend behavior changed. Category labels
updated across all 21 locales.
2026-06-13 14:45:06 +08:00

3281 lines
107 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationKeys } from "./en.js";
export const zhCN: TranslationKeys = {
common: {
upload: "从电脑上传",
process: "处理",
download: "下载",
cancel: "取消",
save: "保存",
delete: "删除",
settings: "设置",
search: "搜索工具...",
dropFiles: "拖放文件到此处或点击上传按钮",
loading: "加载中...",
error: "发生错误",
confirm: "确认",
close: "关闭",
back: "返回",
next: "下一步",
clear: "清除",
copy: "复制",
copied: "已复制!",
noResults: "未找到结果",
showLess: "收起",
showMore: "展开 {count} 项",
experimental: "实验性",
enabled: "已启用",
disabled: "已禁用",
rename: "重命名",
edit: "编辑",
actions: "操作",
create: "创建",
or: "或",
goHome: "回到首页",
somethingWentWrong: "出了点问题",
unexpectedError: "发生了意外错误。",
retry: "重试",
privacyPolicy: "隐私政策",
pageNotFound: "Page not found",
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
},
categories: {
essentials: "基础工具",
adjustments: "调整",
enhance: "Enhance & AI",
watermark: "水印与叠加",
layout: "布局与排版",
utilities: "实用工具",
optimization: "优化",
format: "格式与转换",
"video-edit": "Video",
"video-convert": "Convert",
"video-effects": "Effects & Compose",
"video-subtitles": "Subtitles",
"video-metadata": "Metadata",
"audio-edit": "Edit",
"audio-convert": "Convert",
"audio-effects": "Effects & Compose",
"audio-metadata": "Metadata",
"pdf-organize": "Organize",
"pdf-edit": "Edit & Annotate",
"pdf-security": "Security",
"pdf-optimize": "Optimize",
"doc-convert": "Convert",
data: "Data Files",
archives: "Archives",
},
modalities: {
image: "Image",
video: "Video",
audio: "Audio",
documentsAndFiles: "Documents & Files",
},
tools: {
resize: {
name: "调整大小",
description: "按像素、百分比或社交媒体预设调整大小",
},
crop: { name: "裁剪", description: "自由裁剪、预设比例、形状裁剪" },
rotate: { name: "旋转和翻转", description: "旋转、翻转和校正图片" },
convert: { name: "转换", description: "在图片格式之间转换" },
compress: { name: "压缩", description: "通过质量或目标大小缩减文件体积" },
"optimize-for-web": {
name: "网页优化",
description: "通过格式转换、质量控制和实时预览优化网页图片",
},
"strip-metadata": {
name: "移除元数据",
description: "移除 EXIF、GPS 和相机信息",
},
"edit-metadata": {
name: "编辑元数据",
description: "编辑 EXIF、IPTC、XMP、GPS、关键词和日期",
},
"bulk-rename": { name: "批量重命名", description: "使用模式批量重命名多个文件" },
"image-to-pdf": {
name: "图片转 PDF",
description: "将多张图片合并为 PDF 文档",
},
"pdf-to-image": { name: "PDF 转图片", description: "将 PDF 页面转换为图片" },
favicon: {
name: "Favicon 生成器",
description: "生成所有 Favicon 和应用图标尺寸",
},
"adjust-colors": {
name: "调整颜色",
description: "亮度、对比度、曝光度、饱和度、色温、锐度和效果",
},
sharpening: {
name: "锐化",
description: "自适应、USM 锐化和高通锐化,含预设",
},
"replace-color": {
name: "替换和反转颜色",
description: "替换特定颜色或反转",
},
"color-blindness": {
name: "色盲模拟",
description: "模拟不同类型色觉缺陷下图片的显示效果",
},
"remove-background": {
name: "移除背景",
description: "AI 智能抠图",
},
upscale: { name: "图片放大", description: "AI 超分辨率增强" },
"erase-object": { name: "物体擦除", description: "AI 智能移除不需要的物体" },
ocr: {
name: "OCR / 文字提取",
description: "AI 高精度图片文字识别",
},
"ocr-pdf": {
name: "PDF OCR",
description: "使用AI驱动的OCR从PDF文档中提取文字",
},
"blur-faces": {
name: "人脸 / 隐私模糊",
description: "自动检测并模糊人脸和敏感信息",
},
"enhance-faces": {
name: "人脸增强",
description: "AI 修复和增强人脸",
},
"smart-crop": {
name: "智能裁剪",
description: "基于主体、人脸或裁切的智能裁剪",
},
"image-enhancement": {
name: "图片增强",
description: "一键自动优化曝光、对比度、色彩和锐度",
},
"noise-removal": {
name: "降噪",
description: "AI 智能降噪去颗粒",
},
"red-eye-removal": {
name: "红眼消除",
description: "AI 智能检测和修复闪光灯导致的红眼",
},
"restore-photo": {
name: "照片修复",
description: "AI 修复老照片的划痕、撕裂和损伤",
},
"content-aware-resize": {
name: "内容感知缩放",
description: "智能调整图片大小,同时保留重要内容",
},
"ai-canvas-expand": {
name: "AI 画布扩展",
description: "AI 智能填充扩展画布",
},
colorize: {
name: "AI 上色",
description: "利用 AI 深度学习模型将黑白照片转为彩色",
},
"passport-photo": {
name: "证件照",
description: "自动人脸检测,生成符合各国规格的护照、签证和证件照",
},
"transcribe-audio": {
name: "音频转文字",
description: "使用AI转录将语音转换为文字",
},
"auto-subtitles": {
name: "自动字幕",
description: "从视频音轨生成字幕文件",
},
"transparency-fixer": {
name: "PNG 透明度修复",
description: "一键修复伪透明 PNG 图片",
},
"background-replace": {
name: "替换背景",
description: "将图像背景替换为纯色",
},
"blur-background": {
name: "模糊背景",
description: "模糊背景同时保持主体清晰",
},
"watermark-text": { name: "文字水印", description: "添加文字水印覆盖层" },
"watermark-image": { name: "图片水印", description: "叠加 Logo 作为水印" },
"text-overlay": { name: "文字叠加", description: "在图片上添加样式化文字" },
compose: { name: "图片合成", description: "通过位置和透明度叠加图层" },
"meme-generator": {
name: "Meme 生成器",
description:
"使用热门模板或自己的图片制作 Meme。经典 Impact 风格文字,可自定义字体、颜色和位置。",
},
info: { name: "图片信息", description: "查看所有元数据和图片属性" },
compare: { name: "图片对比", description: "两张图片并排对比" },
"find-duplicates": {
name: "查找重复",
description: "检测重复和近似重复的图片",
},
"color-palette": {
name: "色彩提取",
description: "从图片中提取主色调",
},
"qr-generate": {
name: "QR 码生成器",
description: "生成自定义颜色、图案和 Logo 的 QR 码",
},
"html-to-image": {
name: "HTML to Image",
description: "Capture webpages as high-quality images",
},
"barcode-read": {
name: "条码识别",
description: "扫描图片中的 QR 码、条形码和二维码",
},
collage: {
name: "拼贴 / 网格",
description: "使用 25+ 模板将图片拼成精美网格拼贴",
},
stitch: {
name: "拼接 / 合并",
description: "将图片横向、纵向或网格排列拼接",
},
split: {
name: "图片分割",
description: "按网格或像素大小分割图片,支持实时预览",
},
border: {
name: "边框与相框",
description: "添加边框、内边距、圆角和阴影,支持一键预设",
},
beautify: {
name: "截图美化",
description: "为截图添加渐变背景、设备外框、阴影和社交媒体尺寸",
},
"circle-crop": {
name: "Circle Crop",
description: "Crop image to a centered circle with transparent corners",
},
duotone: {
name: "Duotone",
description: "Apply a two-color duotone effect with custom shadow and highlight colors",
},
"image-pad": {
name: "Image Pad",
description: "Pad image to a target aspect ratio with a solid color background",
},
pixelate: {
name: "Pixelate",
description: "Apply a pixelation effect to the full image or a specific region",
},
vignette: {
name: "Vignette",
description: "Add a vignette effect with adjustable strength and color",
},
"gif-webp": {
name: "GIF/WebP Converter",
description: "Convert animated GIF to WebP and vice versa, preserving all frames",
},
histogram: {
name: "Histogram",
description: "Generate an RGB histogram chart from an image",
},
"lqip-placeholder": {
name: "LQIP Placeholder",
description: "Generate a tiny low-quality image placeholder with base64 data URI",
},
"sprite-sheet": {
name: "Sprite Sheet",
description: "Combine multiple images into a single sprite sheet grid",
},
"svg-to-raster": {
name: "SVG 转位图",
description: "将 SVG 转换为 PNG、JPEG、WebP、AVIF、TIFF、GIF 或 HEIF,支持自定义缩放和 DPI",
},
vectorize: {
name: "图片转 SVG",
description: "将图片转换为可缩放矢量图形",
},
"gif-tools": {
name: "GIF 工具",
description: "调整大小、优化、变速、倒放、提取帧和旋转动画 GIF",
},
"image-to-base64": {
name: "图片转 Base64",
description: "将图片转换为 Base64 字符串,可嵌入 HTML、CSS 等",
},
"barcode-generate": {
name: "Barcode Generator",
description: "Generate barcodes in Code 128, EAN-13, UPC-A, Code 39, ITF-14, and Data Matrix",
},
"chart-maker": {
name: "Chart Maker",
description: "Create bar, line, or pie charts from CSV or JSON data",
},
"convert-video": {
name: "Convert Video",
description: "Convert videos between MP4, MOV, and WebM",
},
"compress-video": {
name: "Compress Video",
description: "Shrink video file size with quality control",
},
"trim-video": {
name: "Trim Video",
description: "Cut a clip out of a video",
},
"mute-video": {
name: "Mute Video",
description: "Remove the audio track from a video",
},
"video-to-gif": {
name: "Video to GIF",
description: "Turn a video clip into an animated GIF",
},
"resize-video": {
name: "Resize Video",
description: "Scale a video to a new resolution or preset size",
},
"crop-video": {
name: "Crop Video",
description: "Crop a region out of a video",
},
"rotate-video": {
name: "Rotate Video",
description: "Rotate or flip a video",
},
"change-fps": {
name: "Change FPS",
description: "Change the frame rate of a video",
},
"video-color": {
name: "Video Color",
description: "Adjust brightness, contrast, saturation, and gamma",
},
"video-speed": {
name: "Video Speed",
description: "Speed up or slow down a video",
},
"reverse-video": {
name: "Reverse Video",
description: "Play a video clip backwards",
},
"video-loudnorm": {
name: "Normalize Audio",
description: "Normalize video audio volume to broadcast standard",
},
"aspect-pad": {
name: "Aspect Pad",
description: "Add solid-color bars to fit a target aspect ratio",
},
"blur-pad": {
name: "Blur Pad",
description: "Fill bars with a blurred copy of the video",
},
"watermark-video": {
name: "Watermark Video",
description: "Burn a text watermark onto video frames",
},
"stabilize-video": {
name: "Stabilize Video",
description: "Reduce camera shake with two-pass stabilization",
},
"gif-to-video": {
name: "GIF to Video",
description: "Convert an animated GIF into an MP4 or WebM video",
},
"video-to-webp": {
name: "Video to WebP",
description: "Convert a video clip into an animated WebP image",
},
"video-to-frames": {
name: "Video to Frames",
description: "Extract frames from a video as a ZIP of images",
},
"merge-videos": {
name: "Merge Videos",
description: "Join multiple video clips into one file",
},
"replace-audio": {
name: "Replace Audio",
description: "Swap the audio track of a video with another file",
},
"burn-subtitles": {
name: "Burn Subtitles",
description: "Permanently render subtitles onto video frames",
},
"embed-subtitles": {
name: "Embed Subtitles",
description: "Mux a subtitle track into the video container",
},
"extract-subtitles": {
name: "Extract Subtitles",
description: "Pull the subtitle track out of a video as an SRT file",
},
"images-to-video": {
name: "Images to Video",
description: "Turn a set of images into a slideshow video",
},
"video-metadata": {
name: "Clean Video Metadata",
description: "Strip metadata from a video and report what was found",
},
"convert-audio": {
name: "Convert Audio",
description: "Convert audio between MP3, WAV, OGG, and more",
},
"trim-audio": {
name: "Trim Audio",
description: "Cut a section out of an audio file",
},
"extract-audio": {
name: "Extract Audio",
description: "Pull the audio track out of a video",
},
"volume-adjust": {
name: "Volume Adjust",
description: "Increase or decrease audio volume by a fixed gain",
},
"normalize-audio": {
name: "Normalize Audio",
description: "Even out loudness to broadcast standard levels",
},
"fade-audio": {
name: "Fade Audio",
description: "Add fade-in and fade-out effects to audio",
},
"reverse-audio": {
name: "Reverse Audio",
description: "Play audio backwards",
},
"audio-speed": {
name: "Audio Speed",
description: "Speed up or slow down audio playback",
},
"pitch-shift": {
name: "Pitch Shift",
description: "Raise or lower pitch by semitones without changing speed",
},
"audio-channels": {
name: "Audio Channels",
description: "Convert between mono, stereo, or swap left and right channels",
},
"silence-removal": {
name: "Silence Removal",
description: "Strip silent sections from audio",
},
"noise-reduction": {
name: "Noise Reduction",
description: "Reduce background noise with FFT-based denoising",
},
"merge-audio": {
name: "Merge Audio",
description: "Combine multiple audio files into one",
},
"split-audio": {
name: "Split Audio",
description: "Split audio by time, equal parts, or silence detection",
},
"ringtone-maker": {
name: "Ringtone Maker",
description: "Create a ringtone clip from any audio file",
},
"waveform-image": {
name: "Waveform Image",
description: "Generate a waveform visualization as a PNG image",
},
"audio-metadata": {
name: "Audio Metadata",
description: "View, edit, or strip audio tags (ID3)",
},
"merge-pdf": {
name: "Merge PDFs",
description: "Combine multiple PDFs into one",
},
"split-pdf": {
name: "Split PDF",
description: "Extract pages or split into parts",
},
"compress-pdf": {
name: "Compress PDF",
description: "Shrink PDF file size",
},
"rotate-pdf": {
name: "Rotate PDF",
description: "Rotate pages in a PDF",
},
"convert-document": {
name: "Convert Document",
description: "Convert between Word, OpenDocument, RTF, and plain text formats",
},
"convert-presentation": {
name: "Convert Presentation",
description: "Convert between PowerPoint and OpenDocument presentation formats",
},
"convert-spreadsheet": {
name: "Convert Spreadsheet",
description:
"Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV.",
},
"excel-to-pdf": {
name: "Excel to PDF",
description: "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages.",
},
"word-to-pdf": {
name: "Word to PDF",
description: "Convert Word documents to PDF",
},
"extract-pages": {
name: "Extract Pages",
description: "Pull selected pages into a new PDF",
},
"remove-pages": {
name: "Remove Pages",
description: "Delete specific pages from a PDF",
},
"organize-pdf": {
name: "Organize PDF",
description: "Reorder pages with an explicit page order",
},
"protect-pdf": {
name: "Protect PDF",
description: "Add password protection (AES-256 encryption)",
},
"unlock-pdf": {
name: "Unlock PDF",
description: "Remove password protection from a PDF",
},
"repair-pdf": {
name: "Repair PDF",
description: "Attempt to repair a damaged or corrupted PDF",
},
"linearize-pdf": {
name: "Web-Optimize PDF",
description: "Linearize a PDF for fast web viewing",
},
"grayscale-pdf": {
name: "Grayscale PDF",
description: "Convert all colors to grayscale",
},
"pdfa-convert": {
name: "PDF/A Convert",
description: "Convert to archival PDF/A-2",
},
"crop-pdf": {
name: "Crop PDF",
description: "Crop all pages with a uniform margin",
},
"nup-pdf": {
name: "N-up PDF",
description: "Arrange multiple pages per sheet",
},
"booklet-pdf": {
name: "Booklet PDF",
description: "Arrange pages for folding into a booklet",
},
"watermark-pdf": {
name: "Watermark PDF",
description: "Add a text watermark to every page",
},
"pdf-page-numbers": {
name: "PDF Page Numbers",
description: "Add page numbers to every page",
},
"flatten-pdf": {
name: "Flatten PDF",
description: "Bake forms and annotations into page content",
},
"redact-pdf": {
name: "Redact PDF",
description: "Permanently remove text occurrences (verified true redaction)",
},
"pdf-to-text": {
name: "PDF to Text",
description: "Extract plain text from a PDF",
},
"pdf-to-word": {
name: "PDF to Word",
description: "Best for text-based PDFs; scanned pages need OCR",
},
"pdf-metadata": {
name: "PDF Metadata",
description: "Read and write PDF document metadata",
},
"powerpoint-to-pdf": {
name: "PowerPoint to PDF",
description: "Convert presentations to PDF",
},
"html-to-pdf": {
name: "HTML to PDF",
description: "Convert an HTML file to PDF. Remote resources are disabled for privacy.",
},
"markdown-to-docx": {
name: "Markdown to Word",
description: "Convert a Markdown file to a Word document (DOCX)",
},
"markdown-to-html": {
name: "Markdown to HTML",
description:
"Convert a Markdown file to a standalone HTML page. Remote images in the source are left as-is in the output.",
},
"markdown-to-pdf": {
name: "Markdown to PDF",
description:
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy.",
},
"epub-convert": {
name: "Convert EPUB",
description:
"Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched.",
},
"to-epub": {
name: "Convert to EPUB",
description: "Convert Word, Markdown, HTML, or plain text files to EPUB",
},
"csv-excel": {
name: "CSV to Excel",
description: "Convert between CSV and Excel (XLSX), both directions",
},
"csv-json": {
name: "CSV to JSON",
description: "Convert between CSV and JSON, both directions",
},
"json-xml": {
name: "JSON to XML",
description: "Convert between JSON and XML, both directions",
},
"split-csv": {
name: "Split CSV",
description: "Split a CSV into smaller files by row count",
},
"merge-csvs": {
name: "Merge CSVs",
description: "Combine multiple CSV or TSV files with matching columns into one",
},
"yaml-json": {
name: "YAML / JSON",
description: "Convert between YAML and JSON, both directions",
},
"xml-to-csv": {
name: "XML to CSV",
description: "Extract repeating elements from XML into a CSV table",
},
"create-zip": {
name: "Create ZIP",
description: "Bundle multiple files into a single ZIP archive",
},
"extract-zip": {
name: "Extract ZIP",
description:
"Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly.",
},
pipeline: { name: "Pipeline 构建器", description: "将多个工具串联为工作流" },
processing: { canceled: "Processing canceled" },
mediaPlayer: {
unsupported: "Your browser does not support this media format.",
},
documentView: {
loadFailed: "Failed to load document.",
previousPage: "Previous page",
nextPage: "Next page",
},
},
toolSettings: {
compress: {
compressionMode: "压缩模式",
targetSize: "目标大小",
quality: "质量",
smallestFile: "最小文件",
bestQuality: "最佳质量",
submit: "压缩",
submitBatch: "压缩({count} 个文件)",
progressLabel: "压缩中",
original: "原始:{size} KB",
processed: "处理后:{size} KB",
saved: "节省:{percent}%",
},
resize: {
customSize: "自定义大小",
scale: "缩放",
presets: "预设",
contentAware: "内容感知",
widthPx: "宽度(px",
heightPx: "高度(px",
fitMode: "适应模式",
cropToFit: "裁剪适应",
fitInside: "内部适应",
stretch: "拉伸",
limitToOriginalSize: "限制为原始大小",
limitToOriginalSizeHint: "如果图片已经小于目标尺寸,则保持原样而不进行放大",
scalePercent: "缩放(%",
resizeToSquare: "调整为正方形",
protectFaces: "保护人脸",
smoothing: "平滑度",
edgeSensitivity: "边缘灵敏度",
submit: "调整大小",
submitBatch: "调整大小({count} 个文件)",
progressLabel: "调整中",
},
crop: {
aspectRatio: "宽高比",
custom: "自定义",
positionAndSize: "位置与大小",
ruleOfThirds: "三分法",
leftOffsetPx: "左偏移(px",
topOffsetPx: "上偏移(px",
submit: "裁剪",
submitBatch: "裁剪({count} 个文件)",
progressLabel: "裁剪中",
},
rotate: {
rotate: "旋转",
angle: "角度",
straighten: "校正",
flip: "翻转",
horizontal: "水平",
vertical: "垂直",
resetAllChanges: "重置所有更改",
submit: "应用",
submitBatch: "应用({count} 个文件)",
progressLabel: "应用中",
},
convert: {
targetFormat: "目标格式",
sourceFormat: "原始格式",
quality: "质量",
submit: "转换",
submitBatch: "转换({count} 个文件)",
progressLabel: "转换中",
},
"optimize-for-web": {
outputFormat: "输出格式",
quality: "质量",
smallestFile: "最小文件",
bestQuality: "最佳质量",
maxDimensions: "最大尺寸",
maxWidth: "最大宽度",
maxHeight: "最大高度",
stripMetadata: "移除元数据",
sizeComparison: "大小对比",
optimized: "优化后:",
smaller: "缩小 {percent}%",
larger: "增大 {percent}%",
submit: "处理并下载",
submitBatch: "处理并下载({count} 个文件)",
progressLabel: "优化中",
},
"strip-metadata": {
currentMetadata: "当前元数据",
readingMetadata: "正在读取元数据...",
noMetadataFound: "此图片未发现元数据。",
removeAllMetadata: "移除所有元数据",
selectSpecific: "或选择特定元数据:",
stripExif: "移除 EXIF(相机信息、日期、曝光)",
stripGps: "移除 GPS(位置数据)",
stripIcc: "移除 ICC(颜色配置文件)",
stripXmp: "移除 XMP(扩展元数据)",
locationFound: "已发现位置信息",
locationWarning: "此图片包含精确的位置信息。建议在分享前移除 GPS 数据。",
metadataSections: "发现 {count} 个元数据部分",
metadataSectionsPlural: "发现 {count} 个元数据部分",
metadataRemoved: "已移除元数据:{size} KB",
submit: "移除元数据",
progressLabel: "正在移除元数据",
},
"edit-metadata": {
readingMetadata: "正在读取元数据...",
couldNotReadMetadata: "无法读取元数据,字段将从空白开始。",
basicInfo: "基本信息",
description: "描述",
artist: "作者",
copyright: "版权",
software: "软件",
iptc: "IPTC",
title: "标题",
headline: "标题",
city: "城市",
stateProvince: "省份",
country: "国家",
dateAndTime: "日期与时间",
editDates: "编辑日期",
shiftAllDates: "偏移所有日期",
dateModified: "修改日期",
dateTaken: "拍摄日期",
shiftHint: "将所有日期字段偏移指定量(适用于时区校正)",
direction: "方向",
forward: "+ 向前",
backward: "- 向后",
hoursMinutes: "时:分",
locationGps: "位置(GPS",
locationDataFound: "已发现位置数据",
noGpsData: "无 GPS 数据。在下方添加坐标。",
latitude: "纬度",
longitude: "经度",
altitudeMeters: "海拔(米)",
removeAllGpsData: "移除所有 GPS 数据",
keywords: "关键词",
addKeywordPlaceholder: "添加关键词并按回车",
addToExisting: "追加到已有",
replaceAll: "全部替换",
allMetadata: "所有元数据",
templates: "模板",
templateNamePlaceholder: "模板名称",
uploadPrompt: "上传图片以编辑其元数据。",
changes: "{count} 项更改:",
modified: "{count} 项已修改",
removed: "{count} 项已移除",
gpsCleared: "GPS 已清除",
gpsAdded: "GPS 已添加",
datesShifted: "日期已偏移",
submit: "应用元数据",
progressLabel: "正在写入元数据",
},
"bulk-rename": {
pattern: "模式",
patternHint: "变量:{{index}}、{{padded}}、{{original}}",
startIndex: "起始索引",
preview: "预览",
andMore: "... 还有 {count} 项",
renaming: "重命名中...",
submit: "重命名 {count} 个文件",
zipDownloaded: "ZIP 下载成功",
},
"image-to-pdf": {
imageCount: "{count} 张图片将被转换为{mode}",
imageCountPlural: "{count} 张图片将被转换为{mode}",
singlePdfMode: "单个 PDF,每页一张图片",
separatePdfMode: "独立 PDF,每张图片一个",
combineAllImages: "将所有图片合并为一个 PDF",
pageSize: "页面大小",
orientation: "方向",
portrait: "纵向",
landscape: "横向",
margin: "边距",
targetSizeLabel: "目标文件大小(可选)",
targetSizePlaceholder: "例如 2",
targetSizeHint: "留空则保持最高质量",
targetSizeMet: "已达到目标",
targetSizeNotMet: "无法达到目标。文件已压缩至最低质量。",
targetSizeTooSmall: "目标大小至少为 50KB",
jpegQualityLabel: "使用的 JPEG 质量",
noImage: "无图片",
submitCollate: "创建 PDF{count} 页)",
submitSeparate: "创建 {count} 个 PDF",
downloadPdf: "下载 PDF",
downloadZip: "下载 ZIP",
progressLabel: "正在创建 PDF",
uploadingImages: "正在上传图片...",
processingPages: "正在处理 {count} 页...",
},
"pdf-to-image": {
dropPdf: "拖放 PDF 文件到此处或点击选择",
readingPdf: "正在读取 PDF...",
pageCount: "{count} 页",
pageCountPlural: "{count} 页",
outputFormat: "输出格式",
quality: "质量",
resolutionDpi: "分辨率(DPI",
dpiScreen: "屏幕",
dpiStandard: "标准",
dpiPrint: "打印",
dpiHighQuality: "高质量",
colorMode: "色彩模式",
colorModeColor: "彩色",
colorModeGrayscale: "灰度",
colorModeBw: "黑白",
pages: "页面",
allPages: "所有页面",
pagesHint: "例如 1-3、5、8-10(文档共 {count} 页)",
converting: "正在转换...",
submit: "转换 {count} 页",
submitPlural: "转换 {count} 页",
downloadAllZip: "全部下载(ZIP",
},
favicon: {
uploadHint: "上传正方形图片(建议 512x512 或更大)以生成所有 Favicon 和应用图标尺寸。",
multipleHint: "每张图片(共 {count} 张)将在 ZIP 中生成独立的文件夹。",
generatedSizes: "生成的尺寸(每张图片)",
plusManifest: "+ manifest.json + HTML 代码片段",
submit: "生成 Favicon{count} 张图片)",
submitPlural: "生成 Favicon{count} 张图片)",
downloadZip: "下载 Favicon ZIP",
progressLabel: "正在生成 Favicon",
},
"adjust-colors": {
light: "光线",
brightness: "亮度",
contrast: "对比度",
exposure: "曝光",
color: "色彩",
saturation: "饱和度",
temperature: "色温",
temperatureHint: "冷色 / 暖色",
tint: "色调",
tintHint: "绿色 / 品红",
hue: "色相",
detail: "细节",
sharpness: "锐度",
effects: "效果",
none: "无",
grayscale: "灰度",
sepia: "怀旧",
invert: "反转",
colorChannels: "颜色通道",
channelModified: "已修改",
red: "红",
green: "绿",
blue: "蓝",
resetAll: "全部重置",
submit: "应用",
submitBatch: "应用({count} 个文件)",
progressLabel: "正在调整颜色",
},
sharpening: {
method: "方法",
adaptive: "自适应",
unsharpMask: "USM 锐化",
highPass: "高通",
presets: "预设",
textureAmount: "纹理量",
amount: "量",
strength: "强度",
noiseReduction: "降噪",
off: "关闭",
lightDenoise: "轻度",
mediumDenoise: "中度",
strongDenoise: "强力",
advancedControls: "高级控制",
radius: "半径",
flatProtection: "平面保护",
detailThreshold: "细节阈值",
haloLimitLight: "光晕限制(亮)",
haloLimitDark: "光晕限制(暗)",
threshold: "阈值",
kernelSize: "核大小",
submit: "锐化",
submitBatch: "锐化({count} 个文件)",
progressLabel: "锐化中",
},
"replace-color": {
sourceColor: "源颜色(要替换的)",
targetColor: "目标颜色(替换为)",
makeTransparent: "替换为透明",
tolerance: "容差",
exactMatch: "精确匹配",
wideRange: "宽泛范围",
submit: "替换颜色",
submitBatch: "替换颜色({count} 个文件)",
progressLabel: "正在替换颜色",
},
"color-blindness": {
simulationType: "模拟类型",
redGreen: "红绿色盲",
blueYellow: "蓝黄色盲",
monochromatic: "全色盲",
submit: "模拟",
submitBatch: "模拟({count} 个文件)",
progressLabel: "正在模拟色盲效果",
},
"remove-background": {
subject: "主体",
people: "人物",
products: "商品",
general: "通用",
passportIdPhoto: "证件照",
quality: "质量",
fast: "快速",
hd: "高清",
max: "超清",
ultra: "极致",
background: "背景",
transparent: "透明",
bgColor: "颜色",
gradient: "渐变",
image: "图片",
gradientDirection: "方向",
chooseBackgroundImage: "选择背景图片",
effectsSection: "效果",
effectsActive: "已启用",
blurBackground: "模糊背景",
intensity: "强度",
addShadow: "添加阴影",
opacity: "不透明度",
outputFormat: "Output Format",
edgeSmoothing: "Edge Smoothing",
edgeSmoothingOff: "Off",
edgeSmoothingLight: "Light",
edgeSmoothingMedium: "Medium",
edgeSmoothingStrong: "Strong",
colorDecontamination: "Color Decontamination",
rendering: "渲染中...",
submit: "移除背景",
submitBatch: "移除背景({count} 个文件)",
progressLabel: "正在移除背景",
},
upscale: {
scaleFactor: "放大倍数",
quality: "质量",
enhanceFaces: "增强人脸",
noiseReduction: "降噪",
noiseReductionHint: "平滑颗粒和噪点。数值越高去噪越强,但可能会模糊细节。",
outputFormat: "输出格式",
submit: "放大 {scale}x",
submitBatch: "放大 {scale}x{count} 个文件)",
progressLabel: "正在放大图片",
progressLabelBatch: "正在放大 {count} 张图片",
},
"erase-object": {
brushSize: "画笔大小",
fine: "细",
wide: "粗",
undo: "撤销",
clear: "清除",
outputFormat: "输出格式",
quality: "质量",
paintHint: "涂抹要移除的物体。按 Ctrl+Z 撤销。",
submit: "擦除物体",
submitBatch: "全部擦除({count}",
progressLabel: "正在擦除物体",
},
ocr: {
quality: "质量",
enhanceBeforeScanning: "扫描前增强",
enhanceHint: "扫描前自动校正倾斜、增强对比度、去除噪点并放大图片,以提高识别精度。",
language: "语言",
autoDetect: "自动检测",
extractedText: "提取的文字",
noTextDetected: "此图片未检测到文字",
characters: "{count} 个字符",
submit: "提取文字",
submitBatch: "提取文字({count} 个文件)",
progressLabel: "正在提取文字",
},
"ocr-pdf": {
quality: "质量",
language: "语言",
autoDetect: "自动检测",
pages: "页面",
pagesPlaceholder: "all, 1-3, 5",
pagesHint: "输入页码或范围(例如 1-3, 5, 8-10)。最多50页。",
submit: "提取文字",
submitBatch: "提取文字({count}个文件)",
progressLabel: "正在从PDF中提取文字",
},
"blur-faces": {
blurRadius: "模糊半径",
blurLight: "轻度",
blurHeavy: "强力",
detectionSensitivity: "检测灵敏度",
moreFaces: "更多人脸",
fewerFaces: "更少人脸",
submit: "模糊人脸",
progressLabel: "正在模糊人脸",
},
"enhance-faces": {
quality: "质量",
enhancementStrength: "增强强度",
onlyCenterFace: "仅中心人脸",
detectionSensitivity: "检测灵敏度",
submit: "增强人脸",
submitBatch: "增强人脸({count} 个文件)",
progressLabel: "正在增强人脸",
},
"smart-crop": {
subjectFocus: "主体聚焦",
faceFocus: "人脸聚焦",
autoTrim: "自动裁切",
customSize: "自定义大小",
socialPresets: "社交媒体预设",
detectionStrategy: "检测策略",
detectionStrategyHint:
"注意力模式找到视觉上最显著的区域。信息熵模式找到细节和信息最丰富的区域。",
attention: "注意力",
entropy: "信息熵",
padding: "内边距",
paddingHint: "焦点区域周围的额外空间",
outputQuality: "输出质量",
outputQualityHint: "适用于 JPEG 和 WebP 输出。PNG 始终为无损。",
subjectDescription: "利用显著性分析检测最感兴趣的区域,并裁剪到目标尺寸。",
framing: "构图",
facePadding: "人脸边距",
facePaddingHint: "检测到的人脸周围的额外空间",
fewerFalsePositives: "减少误检",
faceDescription: "使用 AI 人脸检测保持人脸正确构图。若未检测到人脸,则回退到主体聚焦。",
trimTolerance: "容差",
trimDescription: "边缘像素与边框颜色的最大差异值。数值越高裁切越激进。",
padToSquare: "填充为正方形",
targetSizePx: "目标大小(px",
padColor: "填充颜色",
trimHint: "移除主体周围的单色边框。启用「填充为正方形」可生成电商适用的图片。",
submitSubject: "智能裁剪",
submitFace: "人脸裁剪",
submitTrim: "裁切边框",
},
imageEnhancement: {
enhancementMode: "增强模式",
auto: "自动",
portrait: "人像",
landscape: "风景",
lowLight: "低光照",
food: "美食",
document: "文档",
intensity: "强度",
deepEnhance: "深度增强(AI",
deepEnhanceDescription: "利用 AI 移除噪点和伪影",
deepEnhanceRequires: "需要「放大与增强」功能包",
analyzingImage: "正在分析图片...",
detectedIssues: "检测到的问题",
imageLooksGood: "图片状态良好。可使用强度滑块进行微调。",
issueUnderexposed: "曝光不足",
issueOverexposed: "过度曝光",
issueLowContrast: "对比度平淡",
issueColorCast: "偏色",
issueDesaturated: "饱和度不足",
issueSoftFocus: "对焦偏软",
issueNoisy: "噪点较多",
submit: "增强",
submitDeep: "深度增强",
submitBatch: "增强({count} 个文件)",
submitDeepBatch: "深度增强({count} 个文件)",
progressLabel: "正在增强图片",
progressLabelBatch: "正在增强 {count} 张图片",
},
"noise-removal": {
denoisingTier: "降噪等级",
quick: "快速",
balanced: "均衡",
quality: "高质量",
maximum: "极致",
quickDesc: "快速,轻量",
balancedDesc: "质量好,速度适中",
qualityDesc: "AI 驱动,较慢",
maximumDesc: "最佳 AI 模型,最慢",
strength: "强度",
subtle: "轻微",
aggressive: "激进",
detailPreservation: "细节保留",
smooth: "平滑",
sharp: "锐利",
colorNoise: "色彩噪点",
heavy: "严重",
outputFormat: "输出格式",
gifAiWarning: "GIF 文件的 AI 降噪仅处理第一帧。对于动画 GIF,请使用快速或均衡等级。",
submit: "去除噪点",
submitBatch: "去除噪点({count} 个文件)",
progressLabel: "正在去除噪点",
progressLabelBatch: "正在去除 {count} 张图片的噪点",
},
"red-eye-removal": {
sensitivity: "灵敏度",
strict: "严格",
aggressive: "激进",
correctionStrength: "校正强度",
subtle: "轻微",
dark: "深色",
outputFormat: "输出格式",
quality: "质量",
submit: "修复红眼",
submitBatch: "修复红眼({count} 个文件)",
progressLabel: "正在修复红眼",
progressLabelBatch: "正在修复 {count} 张图片的红眼",
},
"restore-photo": {
scratchRemoval: "划痕修复",
scratchRemovalDesc: "检测和修复划痕、撕裂、污点",
faceEnhancement: "人脸增强",
faceEnhancementDesc: "使用 CodeFormer AI 修复退化的人脸",
faceFidelity: "人脸保真度",
enhanced: "增强",
faithful: "忠实",
noiseReduction: "降噪",
noiseReductionDesc: "去除老照片的颗粒和噪点",
denoiseStrength: "降噪强度",
autoColorize: "自动上色",
autoColorizeDesc: "使用 DDColor AI 为黑白照片上色",
colorizeStrength: "上色强度",
vivid: "鲜艳",
submit: "修复照片",
submitBatch: "修复照片({count}",
progressLabel: "正在修复照片",
progressLabelBatch: "正在修复 {count} 张照片",
},
"content-aware-resize": {
widthPx: "宽度(px",
heightPx: "高度(px",
resizeToSquare: "调整为正方形",
protectFaces: "保护人脸",
protectFacesHint: "通过人脸检测识别并保护人脸区域不被接缝移除",
smoothing: "平滑度",
edgeSensitivity: "边缘灵敏度",
submit: "调整大小",
submitBatch: "调整大小({count} 个文件)",
progressLabel: "内容感知缩放中",
},
"ai-canvas-expand": {
quality: "质量",
fast: "快速",
balanced: "均衡",
highQuality: "高质量",
fastDesc: "快速预览,较少 AI 迭代",
balancedDesc: "质量好,速度适中",
highQualityDesc: "最佳效果,速度较慢",
extendToAspectRatio: "扩展为指定比例",
extendByPixels: "扩展像素数",
top: "上",
right: "右",
bottom: "下",
left: "左",
newSize: "新尺寸:{width} x {height}",
submit: "扩展画布",
submitBatch: "扩展({count} 个文件)",
progressLabel: "正在扩展画布",
},
colorize: {
aiModel: "AI 模型",
fast: "快速",
fastDesc: "快速出图",
balanced: "均衡",
balancedDesc: "当前最佳",
best: "极致",
bestDesc: "最高质量",
colorIntensity: "色彩强度",
grayscaleLabel: "灰度",
subtleLabel: "淡雅",
naturalLabel: "自然",
vividLabel: "鲜艳",
intensityHint: "较低的值会产生更柔和、复古风格的色彩。",
strength: "上色强度",
submit: "上色",
submitBatch: "上色({count} 个文件)",
progressLabel: "上色中",
progressLabelBatch: "正在为 {count} 张图片上色",
},
"passport-photo": {
country: "国家",
searchCountries: "搜索国家...",
noCountriesFound: "未找到国家",
customDimensions: "自定义尺寸",
documentType: "证件类型",
dimensionsMm: "尺寸(mm",
dpi: "DPI",
pixelsPerInch: "像素/英寸",
backgroundColor: "背景颜色",
maxFileSize: "最大文件大小",
noLimit: "无限制",
customKb: "自定义 KB...",
uploadPortrait: "上传一张人像照片",
uploadHint: "在左侧面板中拖放或上传图片以预览证件照",
analyzingPhoto: "正在分析照片",
detectingLandmarks: "正在检测人脸特征点并移除背景...",
generatePassportPhoto: "生成证件照",
generating: "生成中...",
downloadPhoto: "下载照片",
faceCentered: "人脸居中",
headLevel: "头部水平",
lookingStraight: "目视前方",
faceSize: "人脸大小",
whatYouSee: "所见即所得",
dragToAdjust: "拖动调整",
scrollToZoom: "滚轮缩放",
photoGenerated: "照片已生成。从左侧面板下载。",
},
"transcribe-audio": {
language: "语言",
autoDetect: "自动检测",
outputFormat: "输出格式",
plainText: "纯文本",
submit: "转录",
submitBatch: "转录 ({count} 个文件)",
progressLabel: "正在转录音频",
},
"auto-subtitles": {
language: "语言",
autoDetect: "自动检测",
format: "字幕格式",
submit: "生成字幕",
submitBatch: "生成字幕 ({count} 个文件)",
progressLabel: "正在生成字幕",
},
"transparency-fixer": {
description: "上传一张伪透明 PNG 图片,一键修复透明背景。",
removeWatermark: "移除水印",
removeWatermarkHelp: "检测并移除半透明水印",
requiresEraser: "需要「物体擦除」功能包",
advanced: "高级",
defringe: "去边",
outputFormat: "输出格式",
submit: "修复透明度",
submitBatch: "修复透明度({count} 个文件)",
progressLabel: "正在修复透明度",
},
"background-replace": {
color: "背景颜色",
submit: "替换背景",
submitBatch: "替换背景 ({count} 个文件)",
progressLabel: "正在替换背景",
},
"blur-background": {
intensity: "模糊强度",
submit: "模糊背景",
submitBatch: "模糊背景 ({count} 个文件)",
progressLabel: "正在模糊背景",
},
"watermark-text": {
watermarkText: "水印文字",
fontSize: "字号",
color: "颜色",
opacity: "不透明度",
position: "位置",
rotation: "旋转",
center: "居中",
topLeft: "左上",
topRight: "右上",
bottomLeft: "左下",
bottomRight: "右下",
tiled: "平铺",
submit: "添加水印",
submitBatch: "添加水印({count} 个文件)",
progressLabel: "正在添加水印",
},
"watermark-image": {
uploadWatermark: "上传水印图片",
position: "位置",
opacity: "不透明度",
scale: "缩放",
submit: "应用水印",
submitBatch: "应用水印({count} 个文件)",
},
"text-overlay": {
text: "文字",
fontSize: "字号",
color: "颜色",
position: "位置",
top: "顶部",
center: "居中",
bottom: "底部",
backgroundBox: "背景框",
backgroundColor: "背景颜色",
shadow: "阴影",
submit: "添加文字",
submitBatch: "添加文字({count} 个文件)",
progressLabel: "正在添加文字叠加",
download: "Download",
defaultText: "Your Text Here",
},
compose: {
uploadOverlay: "上传叠加图片",
xPosition: "X 位置",
yPosition: "Y 位置",
opacity: "不透明度",
blendMode: "混合模式",
submit: "合成",
},
"meme-generator": {
selectTemplate: "从图库中选择模板或上传自己的图片开始制作。",
chooseLayout: "为自定义图片选择文字布局。",
textContent: "文字内容",
textStyle: "文字样式",
font: "字体",
fontSize: "字号",
textColor: "文字颜色",
strokeColor: "描边颜色",
allCaps: "全部大写",
generate: "生成 Meme",
generating: "生成中...",
downloadMeme: "下载 Meme",
backToGallery: "返回图库",
},
info: {
loadingInfo: "正在加载信息...",
filename: "文件名",
fileSize: "文件大小",
dimensions: "尺寸",
format: "格式",
channels: "通道",
colorSpace: "色彩空间",
density: "密度",
bitDepth: "位深",
progressive: "渐进式",
pages: "页数",
hasAlpha: "含 Alpha 通道",
hasProfile: "含色彩配置文件",
hasExif: "含 EXIF",
hasIcc: "含 ICC",
hasXmp: "含 XMP",
readInfo: "Read Info",
reading: "Reading...",
channelStats: "Channel Stats",
yes: "Yes",
no: "No",
na: "N/A",
failedToRead: "Failed to read info",
},
compare: {
uploadSecondImage: "上传第二张图片",
similarity: "相似度:{percent}%",
submit: "对比",
downloadDiff: "下载差异图",
},
"find-duplicates": {
preset: "预设",
exact: "精确",
similar: "相似",
loose: "宽泛",
exactDesc: "像素级相同的副本,相同图片不同格式。",
similarDesc: "经过缩放、重新压缩或轻微编辑的副本。",
looseDesc: "视觉相关的图片,轻微裁剪、不同曝光。",
threshold: "阈值",
submit: "扫描重复项",
scanning: "扫描中...",
},
"color-palette": {
submit: "提取色板",
extracting: "提取中...",
dominantColors: "主色调",
clickToCopy: "点击复制",
},
"qr-generate": {
contentType: "内容类型",
url: "URL",
text: "文本",
wifi: "WiFi",
vcard: "vCard",
email: "邮箱",
phone: "电话",
sms: "短信",
styling: "样式",
dotStyle: "点样式",
cornerSquareStyle: "角方块样式",
cornerDotStyle: "角点样式",
foregroundColor: "前景色",
bgColor: "背景色",
logo: "Logo",
downloadFormat: "下载格式",
submit: "生成 QR 码",
download: "下载 QR 码",
},
"html-to-image": {
modeUrl: "URL",
modeHtml: "HTML File",
htmlFile: "HTML File",
url: "URL",
urlPlaceholder: "https://snapotter.com",
format: "Output Format",
quality: "Quality",
devicePreset: "Device",
viewportWidth: "Width",
viewportHeight: "Height",
fullPage: "Full Page",
submit: "Capture",
download: "Download Screenshot",
capturing: "Capturing webpage...",
errorTimeout: "Page took too long to load",
errorBlocked: "This URL cannot be captured",
errorUnavailable: "Screenshot service is not available",
errorFailed: "Failed to capture the page",
placeholder: "Enter a URL and click Capture",
presets: {
desktop: "Desktop",
tablet: "Tablet",
mobile: "Mobile",
custom: "Custom",
},
},
"barcode-read": {
submit: "扫描条码",
submitBatch: "扫描({count} 个文件)",
scanning: "扫描中...",
noBarcodesFound: "未找到条码",
barcodesFound: "找到 {count} 个条码",
barcodesFoundPlural: "找到 {count} 个条码",
},
collage: {
template: "模板",
aspectRatio: "宽高比",
gap: "间距",
cornerRadius: "圆角",
backgroundColor: "背景颜色",
outputFormat: "输出格式",
quality: "质量",
submit: "创建拼贴",
downloadCollage: "下载拼贴",
},
stitch: {
direction: "方向",
horizontal: "水平",
vertical: "垂直",
grid: "网格",
gridColumns: "网格列数",
resizeMode: "缩放模式",
fit: "适应",
original: "原始",
stretchMode: "拉伸",
cropMode: "裁剪",
alignment: "对齐",
start: "起始",
center: "居中",
end: "末尾",
gap: "间距",
border: "边框",
cornerRadius: "圆角",
backgroundColor: "背景颜色",
outputFormat: "输出格式",
quality: "质量",
submit: "拼接图片",
},
split: {
modeGrid: "网格",
modeTileSize: "切片大小",
presets: "预设",
columns: "列数",
rows: "行数",
tileWidth: "切片宽度",
tileHeight: "切片高度",
outputFormat: "输出格式",
quality: "质量",
submit: "分割图片",
downloadAll: "全部下载(ZIP",
},
border: {
presets: "预设",
borderWidth: "边框宽度",
borderColor: "边框颜色",
padding: "内边距",
paddingColor: "内边距颜色",
cornerRadius: "圆角",
shadow: "阴影",
shadowBlur: "阴影模糊",
shadowOffsetX: "阴影 X 偏移",
shadowOffsetY: "阴影 Y 偏移",
shadowColor: "阴影颜色",
shadowOpacity: "阴影不透明度",
submit: "添加边框",
submitBatch: "添加边框({count} 个文件)",
progressLabel: "正在添加边框",
},
beautify: {
preset: "预设",
backgroundType: "背景类型",
solidColor: "纯色",
linearGradient: "线性渐变",
radialGradient: "径向渐变",
customImage: "自定义图片",
gradientAngle: "渐变角度",
padding: "内边距",
borderRadius: "圆角半径",
shadowPreset: "阴影预设",
deviceFrame: "设备外框",
submit: "美化",
submitBatch: "美化({count} 个文件)",
progressLabel: "正在美化截图",
},
"circle-crop": {
submit: "Circle Crop",
submitBatch: "Circle Crop ({count} files)",
progressLabel: "Cropping to circle",
},
duotone: {
shadow: "Shadow Color",
highlight: "Highlight Color",
submit: "Apply Duotone",
submitBatch: "Apply Duotone ({count} files)",
progressLabel: "Applying duotone",
},
"image-pad": {
target: "Target Ratio",
color: "Background Color",
submit: "Pad Image",
submitBatch: "Pad Image ({count} files)",
progressLabel: "Padding image",
},
pixelate: {
blockSize: "Block Size",
submit: "Pixelate",
submitBatch: "Pixelate ({count} files)",
progressLabel: "Pixelating",
},
vignette: {
strength: "Strength",
color: "Vignette Color",
submit: "Apply Vignette",
submitBatch: "Apply Vignette ({count} files)",
progressLabel: "Applying vignette",
},
"gif-webp": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting animation",
},
histogram: {
submit: "Generate Histogram",
submitBatch: "Generate Histogram ({count} files)",
progressLabel: "Generating histogram",
},
"lqip-placeholder": {
width: "Width",
blur: "Blur",
submit: "Generate Placeholder",
submitBatch: "Generate Placeholder ({count} files)",
progressLabel: "Generating placeholder",
},
"sprite-sheet": {
columns: "Columns",
padding: "Padding",
background: "Background Color",
submit: "Create Sprite Sheet",
submitBatch: "Create Sprite Sheet",
progressLabel: "Creating sprite sheet",
},
"svg-to-raster": {
outputFormat: "输出格式",
sizing: "尺寸",
scaleMode: "缩放",
customMode: "自定义",
scalePresets: "缩放预设",
dpiPresets: "DPI 预设",
customWidth: "宽度(px",
customHeight: "高度(px",
background: "背景",
bgTransparent: "透明",
bgColor: "颜色",
quality: "质量",
submit: "转换 SVG",
submitBatch: "转换({count} 个文件)",
progressLabel: "正在转换 SVG",
},
vectorize: {
preset: "预设",
logo: "Logo",
illustration: "插画",
photo: "照片",
sketch: "素描",
customPreset: "自定义",
colorMode: "色彩模式",
bw: "黑白",
colorModeColor: "彩色",
threshold: "阈值",
colorPrecision: "色彩精度",
layerDifference: "图层差异",
filterSpeckle: "过滤斑点",
pathMode: "路径模式",
cornerThreshold: "拐角阈值",
invertColors: "反转颜色",
submit: "矢量化",
submitBatch: "矢量化({count} 个文件)",
progressLabel: "矢量化中",
},
"gif-tools": {
mode: "模式",
resize: "调整大小",
optimize: "优化",
speed: "速度",
reverse: "倒放",
extract: "提取",
rotateMode: "旋转",
pixel: "像素",
percentage: "百分比",
colors: "颜色数",
dither: "抖动",
effort: "处理强度",
speedFactor: "速度倍率",
loopControl: "循环控制",
infinite: "无限",
once: "一次",
customLoop: "自定义",
loopCount: "循环次数",
extractSingle: "单帧",
extractRange: "范围",
extractAll: "全部",
frameNumber: "帧号",
frameStart: "起始帧",
frameEnd: "结束帧",
extractFormat: "格式",
submit: "处理 GIF",
submitBatch: "处理({count} 个文件)",
progressLabel: "正在处理 GIF",
},
"image-to-base64": {
outputFormat: "输出格式",
keepOriginal: "保持原始格式",
quality: "质量",
maxWidth: "最大宽度",
maxHeight: "最大高度",
submit: "转换为 Base64",
submitBatch: "转换({count} 个文件)",
copyBase64: "复制 Base64",
copyDataUri: "复制 Data URI",
copyImgTag: "复制 <img> 标签",
copyCssUrl: "复制 CSS url()",
},
"barcode-generate": {
text: "Text",
type: "Barcode Type",
scale: "Scale",
includeText: "Include Text",
submit: "Generate Barcode",
download: "Download Barcode",
},
"chart-maker": {
kind: "Chart Type",
title: "Title",
width: "Width",
height: "Height",
submit: "Create Chart",
submitBatch: "Create Chart ({count} files)",
progressLabel: "Creating chart",
},
"enhance-faces-standalone": {
model: "模型",
fast: "快速",
balanced: "均衡",
best: "极致",
},
"convert-video": {
format: "Output format",
quality: "Quality",
high: "High",
balanced: "Balanced",
small: "Smallest",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"compress-video": {
quality: "Compression",
light: "Light",
balanced: "Balanced",
strong: "Strong",
resolution: "Resolution",
original: "Original",
submit: "Compress",
submitBatch: "Compress ({count} files)",
progressLabel: "Compressing",
},
"trim-video": {
start: "Start (seconds)",
end: "End (seconds)",
precise: "Frame-accurate (re-encodes)",
submit: "Trim",
submitBatch: "Trim ({count} files)",
progressLabel: "Trimming",
},
"mute-video": {
submit: "Remove audio",
submitBatch: "Remove audio ({count} files)",
progressLabel: "Muting",
},
"video-to-gif": {
fps: "Frames per second",
width: "Width (px)",
start: "Start (seconds)",
duration: "Duration (seconds)",
submit: "Create GIF",
submitBatch: "Create GIFs ({count} files)",
progressLabel: "Creating GIF",
},
"resize-video": {
preset: "Preset",
width: "Width (px)",
height: "Height (px)",
hint: "Leave one dimension empty to keep aspect ratio",
submit: "Resize",
submitBatch: "Resize ({count} files)",
progressLabel: "Resizing",
},
"crop-video": {
width: "Width (px)",
height: "Height (px)",
x: "X offset",
y: "Y offset",
submit: "Crop",
submitBatch: "Crop ({count} files)",
progressLabel: "Cropping",
},
"rotate-video": {
transform: "Transform",
cw90: "Rotate 90 clockwise",
ccw90: "Rotate 90 counter-clockwise",
rotate180: "Rotate 180",
hflip: "Flip horizontal",
vflip: "Flip vertical",
submit: "Rotate",
submitBatch: "Rotate ({count} files)",
progressLabel: "Rotating",
},
"change-fps": {
fps: "Frames per second",
submit: "Change FPS",
submitBatch: "Change FPS ({count} files)",
progressLabel: "Changing FPS",
},
"video-color": {
brightness: "Brightness",
contrast: "Contrast",
saturation: "Saturation",
gamma: "Gamma",
submit: "Apply",
submitBatch: "Apply ({count} files)",
progressLabel: "Adjusting color",
},
"video-speed": {
factor: "Speed factor",
keepPitch: "Keep original pitch",
submit: "Change speed",
submitBatch: "Change speed ({count} files)",
progressLabel: "Changing speed",
},
"reverse-video": {
hint: "Limited to clips up to 5 minutes",
submit: "Reverse",
submitBatch: "Reverse ({count} files)",
progressLabel: "Reversing",
},
"video-loudnorm": {
hint: "Normalizes audio to EBU R128 broadcast standard",
submit: "Normalize",
submitBatch: "Normalize ({count} files)",
progressLabel: "Normalizing",
},
"aspect-pad": {
target: "Target ratio",
color: "Background color",
colorHint: "Hex color, e.g. #000000",
submit: "Pad",
submitBatch: "Pad ({count} files)",
progressLabel: "Padding",
},
"blur-pad": {
target: "Target ratio",
blur: "Blur strength",
submit: "Pad",
submitBatch: "Pad ({count} files)",
progressLabel: "Padding",
},
"watermark-video": {
text: "Watermark text",
position: "Position",
fontSize: "Font size",
opacity: "Opacity",
color: "Color",
colorHint: "Hex color, e.g. #ffffff",
submit: "Watermark",
submitBatch: "Watermark ({count} files)",
progressLabel: "Watermarking",
},
"stabilize-video": {
smoothing: "Smoothing",
hint: "Runs two passes and takes longer than most tools",
submit: "Stabilize",
submitBatch: "Stabilize ({count} files)",
progressLabel: "Stabilizing",
},
"gif-to-video": {
format: "Output format",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"video-to-webp": {
fps: "Frames per second",
width: "Width (px)",
quality: "Quality",
loop: "Loop animation",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"video-to-frames": {
mode: "Extraction mode",
modeAll: "All frames",
modeNth: "Every Nth frame",
modeTimestamps: "Specific timestamps",
n: "Take every Nth frame",
timestamps: "Timestamps (seconds)",
timestampsHint: "Comma-separated, e.g. 0.5, 2, 4.5",
format: "Image format",
submit: "Extract Frames",
submitBatch: "Extract Frames ({count} files)",
progressLabel: "Extracting frames",
},
"merge-videos": {
hint: "Files are joined in upload order",
submit: "Merge",
submitBatch: "Merge ({count} files)",
progressLabel: "Merging",
},
"replace-audio": {
hint: "Upload the video first, then the audio",
submit: "Replace Audio",
submitBatch: "Replace Audio ({count} files)",
progressLabel: "Replacing audio",
},
"burn-subtitles": {
fontSize: "Font size",
hint: "Upload a video and a subtitle file (.srt or .vtt)",
submit: "Burn Subtitles",
submitBatch: "Burn Subtitles ({count} files)",
progressLabel: "Burning subtitles",
},
"embed-subtitles": {
language: "Language code",
languageHint: "Three-letter ISO 639-2 code, e.g. eng, spa, fra",
submit: "Embed Subtitles",
submitBatch: "Embed Subtitles ({count} files)",
progressLabel: "Embedding subtitles",
},
"extract-subtitles": {
submit: "Extract Subtitles",
submitBatch: "Extract Subtitles ({count} files)",
progressLabel: "Extracting subtitles",
},
"images-to-video": {
secondsPerImage: "Seconds per image",
resolution: "Resolution",
fps: "Frames per second",
submit: "Create Video",
submitBatch: "Create Video ({count} files)",
progressLabel: "Creating slideshow",
},
"video-metadata": {
hint: "Metadata report appears in the result",
submit: "Strip Metadata",
submitBatch: "Strip Metadata ({count} files)",
progressLabel: "Stripping metadata",
},
"convert-audio": {
format: "Output format",
bitrate: "Bitrate (kbps)",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"trim-audio": {
start: "Start (seconds)",
end: "End (seconds)",
submit: "Trim",
submitBatch: "Trim ({count} files)",
progressLabel: "Trimming",
},
"extract-audio": {
format: "Output format",
submit: "Extract",
submitBatch: "Extract ({count} files)",
progressLabel: "Extracting",
},
"volume-adjust": {
"gain-db": "Gain (dB)",
submit: "Adjust Volume",
submitBatch: "Adjust Volume ({count} files)",
progressLabel: "Adjusting volume",
},
"normalize-audio": {
hint: "EBU R128 loudness normalization",
submit: "Normalize",
submitBatch: "Normalize ({count} files)",
progressLabel: "Normalizing",
},
"fade-audio": {
"fade-in-s": "Fade in (seconds)",
"fade-out-s": "Fade out (seconds)",
submit: "Apply Fade",
submitBatch: "Apply Fade ({count} files)",
progressLabel: "Applying fade",
},
"reverse-audio": {
submit: "Reverse",
submitBatch: "Reverse ({count} files)",
progressLabel: "Reversing",
},
"audio-speed": {
factor: "Speed factor",
submit: "Change Speed",
submitBatch: "Change Speed ({count} files)",
progressLabel: "Changing speed",
},
"pitch-shift": {
semitones: "Semitones",
hint: "0 semitones is not allowed",
submit: "Shift Pitch",
submitBatch: "Shift Pitch ({count} files)",
progressLabel: "Shifting pitch",
},
"audio-channels": {
mode: "Channel mode",
"stereo-to-mono": "Stereo to mono",
"mono-to-stereo": "Mono to stereo",
swap: "Swap left/right",
submit: "Convert Channels",
submitBatch: "Convert Channels ({count} files)",
progressLabel: "Converting channels",
},
"silence-removal": {
"threshold-db": "Silence threshold (dB)",
"min-silence-s": "Minimum silence duration (seconds)",
submit: "Remove Silence",
submitBatch: "Remove Silence ({count} files)",
progressLabel: "Removing silence",
},
"noise-reduction": {
strength: "Strength",
light: "Light",
medium: "Medium",
strong: "Strong",
submit: "Reduce Noise",
submitBatch: "Reduce Noise ({count} files)",
progressLabel: "Reducing noise",
},
"merge-audio": {
format: "Output format",
mp3: "MP3",
wav: "WAV",
flac: "FLAC",
m4a: "M4A",
"order-hint": "Files will be joined in upload order",
submit: "Merge Audio",
submitBatch: "Merge Audio ({count} files)",
progressLabel: "Merging audio",
},
"split-audio": {
mode: "Split mode",
time: "By time",
parts: "Equal parts",
silence: "By silence",
"segment-s": "Segment length (seconds)",
"num-parts": "Number of parts",
"threshold-db": "Silence threshold (dB)",
"min-silence-s": "Minimum silence duration (seconds)",
submit: "Split Audio",
submitBatch: "Split Audio ({count} files)",
progressLabel: "Splitting audio",
},
"ringtone-maker": {
"start-s": "Start time (seconds)",
"duration-s": "Duration (seconds)",
"max-hint": "Maximum 30 seconds",
submit: "Create Ringtone",
submitBatch: "Create Ringtone ({count} files)",
progressLabel: "Creating ringtone",
},
"waveform-image": {
width: "Width (px)",
height: "Height (px)",
color: "Waveform color",
submit: "Generate Waveform",
submitBatch: "Generate Waveform ({count} files)",
progressLabel: "Generating waveform",
},
"audio-metadata": {
strip: "Strip all metadata",
title: "Title",
artist: "Artist",
album: "Album",
submit: "Apply Metadata",
submitBatch: "Apply Metadata ({count} files)",
progressLabel: "Applying metadata",
},
"merge-pdf": {
addFiles: "Add PDFs to merge",
needTwo: "At least two PDFs are required",
orderHint: "{count} PDFs will merge in this order",
submit: "Merge",
submitBatch: "Merge ({count} files)",
progressLabel: "Merging",
},
"split-pdf": {
mode: "Split mode",
range: "Page range",
rangeHint: "e.g. 1-3, 5, 7-z",
everyN: "Pages per part",
submit: "Split",
submitBatch: "Split ({count} files)",
progressLabel: "Splitting",
},
"compress-pdf": {
preset: "Quality preset",
screen: "Screen (smallest)",
ebook: "Ebook (balanced)",
printer: "Printer (best quality)",
submit: "Compress",
submitBatch: "Compress ({count} files)",
progressLabel: "Compressing",
},
"rotate-pdf": {
angle: "Rotation angle",
range: "Page range",
rangeHint: "e.g. 1-3, 5, 1-z (all pages)",
submit: "Rotate",
submitBatch: "Rotate ({count} files)",
progressLabel: "Rotating",
},
"convert-document": {
format: "Output format",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"convert-presentation": {
format: "Output format",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"convert-spreadsheet": {
format: "Output format",
hint: "Multi-sheet workbooks export the first sheet to CSV.",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"excel-to-pdf": {
submit: "Convert to PDF",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"powerpoint-to-pdf": {
submit: "Convert to PDF",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"word-to-pdf": {
submit: "Convert to PDF",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"extract-pages": {
range: "Page range",
rangeHint: "e.g. 1-3, 5, 7-z",
submit: "Extract",
submitBatch: "Extract ({count} files)",
progressLabel: "Extracting",
},
"remove-pages": {
pages: "Pages to remove",
pagesHint: "e.g. 2, 4-6, z (last page)",
submit: "Remove",
submitBatch: "Remove ({count} files)",
progressLabel: "Removing",
},
"organize-pdf": {
order: "Page order",
orderHint: "e.g. 3,1,2 or 1-z (identity)",
submit: "Reorder",
submitBatch: "Reorder ({count} files)",
progressLabel: "Reordering",
},
"protect-pdf": {
userPassword: "User password",
ownerPassword: "Owner password (optional)",
ownerPasswordHint: "Defaults to user password if empty",
submit: "Protect",
submitBatch: "Protect ({count} files)",
progressLabel: "Encrypting",
},
"unlock-pdf": {
password: "Password",
submit: "Unlock",
submitBatch: "Unlock ({count} files)",
progressLabel: "Decrypting",
},
"repair-pdf": {
submit: "Repair",
submitBatch: "Repair ({count} files)",
progressLabel: "Repairing",
},
"linearize-pdf": {
submit: "Optimize",
submitBatch: "Optimize ({count} files)",
progressLabel: "Linearizing",
},
"grayscale-pdf": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"pdfa-convert": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"crop-pdf": {
margin: "Margin (points)",
submit: "Crop",
submitBatch: "Crop ({count} files)",
progressLabel: "Cropping",
},
"nup-pdf": {
perSheet: "Pages per sheet",
submit: "Arrange",
submitBatch: "Arrange ({count} files)",
progressLabel: "Arranging",
},
"booklet-pdf": {
perSheet: "Pages per sheet",
submit: "Create Booklet",
submitBatch: "Create Booklet ({count} files)",
progressLabel: "Creating booklet",
},
"watermark-pdf": {
text: "Watermark text",
position: "Position",
fontSize: "Font size",
opacity: "Opacity",
rotation: "Rotation",
submit: "Watermark",
submitBatch: "Watermark ({count} files)",
progressLabel: "Watermarking",
},
"pdf-page-numbers": {
position: "Position",
fontSize: "Font size",
submit: "Add Numbers",
submitBatch: "Add Numbers ({count} files)",
progressLabel: "Numbering",
},
"flatten-pdf": {
submit: "Flatten",
submitBatch: "Flatten ({count} files)",
progressLabel: "Flattening",
},
"redact-pdf": {
terms: "Terms to redact",
termsHint: "One term per line (max 50)",
caseSensitive: "Case sensitive",
submit: "Redact",
submitBatch: "Redact ({count} files)",
progressLabel: "Redacting",
},
"pdf-to-text": {
submit: "Extract Text",
submitBatch: "Extract Text ({count} files)",
progressLabel: "Extracting",
},
"pdf-to-word": {
hint: "Best for text-based PDFs; scanned pages need OCR",
submit: "Convert to Word",
submitBatch: "Convert to Word ({count} files)",
progressLabel: "Converting",
},
"pdf-metadata": {
title: "Title",
author: "Author",
subject: "Subject",
keywords: "Keywords",
submit: "Set Metadata",
submitBatch: "Set Metadata ({count} files)",
progressLabel: "Setting metadata",
},
"html-to-pdf": {
hint: "Remote resources are disabled for privacy.",
submit: "Convert to PDF",
submitBatch: "Convert to PDF ({count} files)",
progressLabel: "Converting",
},
"markdown-to-docx": {
submit: "Convert to DOCX",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"markdown-to-html": {
hint: "Remote images in the source are left as-is in the output.",
submit: "Convert to HTML",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"markdown-to-pdf": {
hint: "Remote resources are disabled for privacy.",
submit: "Convert to PDF",
submitBatch: "Convert to PDF ({count} files)",
progressLabel: "Converting",
},
"epub-convert": {
format: "Output format",
hint: "Remote resources inside the book are not fetched.",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"to-epub": {
submit: "Convert to EPUB",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"csv-excel": {
sheet: "Worksheet number",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"csv-json": {
pretty: "Pretty print",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"json-xml": {
pretty: "Pretty print",
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"split-csv": {
rowsPerFile: "Rows per file",
keepHeader: "Keep header in each file",
submit: "Split",
submitBatch: "Split ({count} files)",
progressLabel: "Splitting",
},
"merge-csvs": {
submit: "Merge",
submitBatch: "Merge ({count} files)",
progressLabel: "Merging",
},
"yaml-json": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"xml-to-csv": {
submit: "Convert",
submitBatch: "Convert ({count} files)",
progressLabel: "Converting",
},
"create-zip": {
submit: "Create ZIP",
submitBatch: "Create ZIP ({count} files)",
progressLabel: "Zipping",
},
"extract-zip": {
submit: "Extract",
submitBatch: "Extract ({count} files)",
progressLabel: "Extracting",
},
},
urlImport: {
title: "从 URL 导入",
placeholder: "粘贴图片 URL,每行一个...",
importButton: "导入 URL",
addButton: "添加 {count} 个文件",
adding: "正在添加...",
retryButton: "重试",
cancelButton: "取消",
readyCount: "{count} 个就绪",
failedStatus: "失败",
},
comparison: {
original: "原图",
processed: "处理后",
before: "之前",
after: "之后",
savings: "节省",
},
toolPage: {
emptyPrompt: "拖放或上传图片开始",
filesCount: "文件({count}",
addMore: "+ 添加更多",
clearAll: "清除全部",
acceptDescription: "仅支持 {exts} 文件",
notFound: "未找到工具",
configureAndGenerate: "配置设置并生成。",
processingFailed: "此文件处理失败",
conversionComplete: "转换完成",
cannotPreviewDownload: "{type} 文件无法在浏览器中预览。请使用下载按钮保存文件。",
generatingPreview: "正在生成预览...",
cannotPreviewWillProcess: "{ext} 文件无法在浏览器中预览。该工具仍会正常处理此文件。",
previousImage: "上一张图片",
nextImage: "下一张图片",
imageCounter: "{current} / {total}",
settingsLabel: "设置",
downloadAllZip: "全部下载(ZIP",
hideSettings: "隐藏设置",
imageArea: "图片区域",
},
homePage: {
generatingPreview: "正在生成预览...",
loadingPreview: "正在加载预览...",
changeFile: "更换文件",
quickActions: "快捷操作",
allTools: "所有工具",
},
fullscreenGrid: {
searchPlaceholder: "搜索工具...",
hideDetails: "隐藏详情",
showDetails: "显示详情",
switchToSidebar: "切换到侧边栏视图",
sidebarButton: "侧边栏",
noToolsFound: "未找到工具",
tryDifferent: "请尝试其他搜索词",
},
editor: {
menu: {
file: {
label: "文件",
new: "新建",
open: "打开",
save: "保存",
exportAs: "导出为...",
quickExportPng: "快速导出为 PNG",
close: "关闭",
},
edit: {
label: "编辑",
undo: "撤销",
redo: "重做",
cut: "剪切",
copy: "复制",
copyMerged: "合并复制",
paste: "粘贴",
pasteInPlace: "原位粘贴",
delete: "删除",
freeTransform: "自由变换",
transform: {
label: "变换",
scale: "缩放",
rotate: "旋转",
skew: "倾斜",
flipHorizontal: "水平翻转",
flipVertical: "垂直翻转",
},
},
image: {
label: "图像",
imageSize: "图像大小...",
canvasSize: "画布大小...",
rotation: {
label: "图像旋转",
cw90: "顺时针 90°",
ccw90: "逆时针 90°",
r180: "180°",
flipHorizontal: "水平翻转",
flipVertical: "垂直翻转",
},
trim: "裁切",
adjustments: {
label: "调整",
brightnessContrast: "亮度/对比度",
hueSaturation: "色相/饱和度",
colorBalance: "色彩平衡",
levels: "色阶",
curves: "曲线",
},
},
layer: {
label: "图层",
newLayer: "新建图层",
duplicateLayer: "复制图层",
deleteLayer: "删除图层",
arrange: {
label: "排列",
bringToFront: "置于顶层",
bringForward: "上移一层",
sendBackward: "下移一层",
sendToBack: "置于底层",
},
mergeDown: "向下合并",
flattenImage: "拼合图像",
},
select: {
label: "选择",
all: "全选",
deselect: "取消选择",
inverse: "反选",
colorRange: "色彩范围...",
},
filter: {
label: "滤镜",
blur: {
label: "模糊",
gaussian: "高斯模糊",
motion: "动感模糊",
radial: "径向模糊",
surface: "表面模糊",
},
sharpen: {
label: "锐化",
sharpen: "锐化",
unsharpMask: "USM 锐化",
},
noise: {
label: "噪点",
addNoise: "添加噪点",
reduceNoise: "降低噪点",
},
pixelate: {
label: "像素化",
pixelate: "像素化",
mosaic: "马赛克",
},
stylize: {
label: "风格化",
emboss: "浮雕",
solarize: "曝光过度",
posterize: "色调分离",
},
grayscale: "灰度",
sepia: "怀旧",
invert: "反相",
},
view: {
label: "视图",
zoomIn: "放大",
zoomOut: "缩小",
fitOnScreen: "适合屏幕",
actualPixels: "实际像素",
rulers: "标尺",
grid: "网格",
guides: "参考线",
snap: "对齐",
panels: "面板",
},
},
menuBar: {
backTitle: "返回 SnapOtter",
},
welcome: {
ariaLabel: "图片拖放区域",
heading: "图片编辑器",
dropDescription: "拖放图片到此处开始编辑",
openImageButton: "打开图片",
newDocumentButton: "新建文档",
pasteHint: "或从剪贴板粘贴(Ctrl+V",
},
mobile: {
heading: "建议使用桌面设备",
description: "图片编辑器在桌面屏幕上效果最佳。请切换到更大显示屏的设备以获得完整的编辑体验。",
},
errors: {
serverDecodeFailed: "服务器解码失败",
},
shapes: {
shape: "Shape",
fill: "Fill",
stroke: "Stroke",
strokeWidth: "Width",
cornerRadius: "Radius",
sides: "Sides",
points: "Points",
dashStyle: "Dash",
solid: "Solid",
dashed: "Dashed",
dotted: "Dotted",
none: "None",
opacity: "Opacity",
rectangle: "Rectangle",
ellipse: "Ellipse",
line: "Line",
arrow: "Arrow",
polygon: "Polygon",
star: "Star",
},
},
settings: {
heading: "设置",
nav: {
general: "通用",
systemSettings: "系统设置",
security: "安全",
people: "成员",
teams: "团队",
roles: "角色",
auditLog: "审计日志",
usage: "Usage",
apiKeys: "API 密钥",
aiFeatures: "AI 功能",
tools: "工具",
productAnalytics: "产品分析",
about: "关于",
},
general: {
heading: "通用",
description: "用户偏好与显示设置。",
loading: "加载中...",
logOut: "退出登录",
defaultToolViewLabel: "默认工具视图",
defaultToolViewDescription: "首页工具的展示方式",
sidebarOption: "侧边栏",
fullscreenGridOption: "全屏网格",
appVersionLabel: "应用版本",
appVersionDescription: "SnapOtter 当前版本",
saveButton: "保存设置",
saveSuccess: "设置已保存。",
saveFailed: "保存设置失败。",
},
system: {
heading: "系统设置",
description: "服务器端配置和限制。",
fileUploadLimitLabel: "文件上传限制(MB",
fileUploadLimitDescription: "每次上传的最大文件大小",
defaultThemeLabel: "默认主题",
defaultThemeDescription: "新会话应用的主题",
lightOption: "浅色",
darkOption: "深色",
systemOption: "跟随系统",
languageLabel: "语言",
languageDescription: "界面语言",
loginAttemptLimitLabel: "登录尝试限制",
loginAttemptLimitDescription: "每分钟最大登录失败次数,超过后锁定",
fileManagementHeading: "文件管理",
maxFileAgeLabel: "文件最大保留时间(小时)",
maxFileAgeDescription: "处理后的文件在自动清理前保留的时间",
startupCleanupLabel: "启动时清理",
startupCleanupDescription: "服务器启动时清理旧的临时文件",
saveButton: "保存设置",
saveSuccess: "设置已保存。",
saveFailed: "保存设置失败。",
limitsAndResources: "限制与资源",
maxFileSize: "最大文件大小",
maxBatchSize: "最大批量大小",
concurrentJobs: "并发任务数",
workerThreads: "工作线程数",
maxPipelineSteps: "最大 Pipeline 步骤数",
processingTimeout: "处理超时",
rateLimitPerMin: "速率限制(请求/分钟)",
unlimited: "无限制",
auto: "自动",
envOverride: "由环境变量设定",
maxCanvasPixels: "最大画布像素数",
maxSvgSize: "最大 SVG 大小",
maxSplitGrid: "最大分割网格",
maxPdfPages: "最大 PDF 页数",
sessionDuration: "会话持续时间",
supportBundleButton: "Download Support Bundle",
supportBundleDescription:
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting.",
supportBundleFailed: "Failed to download support bundle.",
},
security: {
heading: "安全",
description: "密码和认证设置。",
changePasswordHeading: "修改密码",
currentPasswordPlaceholder: "当前密码",
newPasswordPlaceholder: "新密码",
confirmPasswordPlaceholder: "确认新密码",
passwordsMismatch: "两次密码输入不一致",
passwordTooShort: "密码长度至少为 4 个字符",
changeSuccess: "密码修改成功",
changeFailed: "密码修改失败",
currentPasswordIncorrect: "当前密码不正确",
changePasswordButton: "修改密码",
loginAttemptLimitNote: "登录尝试限制可在系统设置中配置。",
},
people: {
heading: "成员",
description: "管理工作区成员及其权限",
userCount: "{count} 个用户",
userCountPlural: "{count} 个用户",
searchPlaceholder: "搜索成员...",
addMembersButton: "添加成员",
newMemberHeading: "新成员",
usernamePlaceholder: "用户名",
passwordPlaceholder: "密码",
roleUserOption: "用户",
roleEditorOption: "编辑者",
roleAdminOption: "管理员",
roleUserDescription: "基本工具访问",
roleEditorDescription: "所有文件和 Pipeline",
roleAdminDescription: "完全访问",
noDescription: "无描述",
defaultTeamOption: "默认",
createButton: "创建",
cancelButton: "取消",
createSuccess: "用户创建成功",
createFailed: "用户创建失败",
userLimitReached: "已达到用户上限(最多 {max}",
deleteConfirm: "删除用户「{username}」?此操作无法撤销。",
deleteSuccess: "用户「{username}」已删除",
deleteFailed: "用户删除失败",
editHeading: "编辑 {username}",
updateSuccess: "用户已更新",
updateFailed: "用户更新失败",
cannotRemoveOwnAdmin: "无法移除自己的管理员角色",
resetPasswordHeading: "重置 {username} 的密码",
newPasswordLabel: "新密码(至少 8 个字符)",
resetPasswordButton: "重置密码",
resetPasswordWarning: "此操作将使该用户的所有会话和 API 密钥失效。",
resetSuccess: "密码重置成功",
resetFailed: "密码重置失败",
tableHeaderUser: "用户",
tableHeaderRole: "角色",
tableHeaderTeam: "团队",
noSearchResults: "没有匹配的成员。",
noUsersFound: "未找到用户。",
authBadgeLocalOidc: "本地 + OIDC",
authBadgeOidc: "OIDC",
editRoleTeamAction: "编辑角色 / 团队",
resetPasswordAction: "重置密码",
deleteUserAction: "删除用户",
saveButton: "保存",
copyPasswordButton: "复制密码",
passwordCopied: "已复制!",
copyPasswordWarning: "请立即复制此密码。创建用户后将无法再次查看。",
},
teams: {
heading: "团队",
description: "将成员组织到团队中以便管理。",
createButton: "创建新团队",
newTeamHeading: "新团队",
teamNamePlaceholder: "团队名称",
createSubmitButton: "创建",
cancelButton: "取消",
createSuccess: "团队创建成功",
createFailed: "团队创建失败",
duplicateTeamError: "该名称的团队已存在",
renameSuccess: "团队已重命名",
renameFailed: "团队重命名失败",
deleteConfirm: "删除团队「{name}」?成员将被取消分配。",
deleteSuccess: "团队「{name}」已删除",
deleteFailed: "团队删除失败",
cannotDeleteDefault: "无法删除默认团队或有成员的团队",
tableHeaderTeamName: "团队名称",
tableHeaderMembers: "成员",
emptyState: "未找到团队。",
renameSaveButton: "保存",
renameCancelButton: "取消",
renameAction: "重命名",
deleteAction: "删除",
totalMembers: "总成员数",
nameRequired: "团队名称为必填项",
nameTooLong: "团队名称不能超过 50 个字符",
duplicateName: "该名称的团队已存在",
},
roles: {
heading: "角色",
description: "管理角色及其权限。内置角色无法修改。",
createButton: "创建自定义角色",
newRoleHeading: "新角色",
roleNamePlaceholder: "角色名称",
descriptionPlaceholder: "描述(可选)",
permissionsLabel: "权限",
createSubmitButton: "创建",
cancelButton: "取消",
createSuccess: "角色创建成功",
createFailed: "角色创建失败",
duplicateRoleError: "该名称的角色已存在",
editHeading: "编辑角色:{name}",
editSaveButton: "保存",
editCancelButton: "取消",
updateSuccess: "角色已更新",
updateFailed: "角色更新失败",
deleteConfirm: "删除角色「{name}」?{count} 个用户需要重新分配角色。",
deleteConfirmSimple: "删除角色「{name}」?",
deleteSuccess: "角色「{name}」已删除",
deleteFailed: "角色删除失败",
emptyState: "未找到角色。",
builtInBadge: "内置",
userCountBadge: "{count} 个用户",
editRoleTitle: "编辑角色",
deleteRoleTitle: "删除角色",
permGroup: {
tools: "工具",
files: "文件",
apiKeys: "API 密钥",
pipelines: "Pipeline",
settings: "设置",
users: "用户",
teams: "团队",
system: "系统",
},
},
auditLog: {
heading: "审计日志",
allActionsFilter: "所有操作",
emptyState: "暂无审计日志记录。",
tableHeaderTime: "时间",
tableHeaderUser: "用户",
tableHeaderAction: "操作",
tableHeaderTarget: "目标",
paginationInfo: "第 {page} 页,共 {totalPages} 页({total} 条记录)",
previousButton: "上一页",
nextButton: "下一页",
justNow: "刚刚",
minutesAgo: "{mins} 分钟前",
hoursAgo: "{hrs} 小时前",
daysAgo: "{days} 天前",
},
usage: {
heading: "Usage",
description: "Local usage statistics from jobs and file storage.",
periodLabel: "Period",
days7: "7 days",
days30: "30 days",
days90: "90 days",
jobsPerDayHeading: "Jobs per day",
topToolsHeading: "Top tools",
perUserHeading: "Per-user volume",
durationsHeading: "Duration percentiles",
noData: "No data for this period.",
dayColumn: "Day",
totalColumn: "Total",
completedColumn: "Completed",
failedColumn: "Failed",
toolColumn: "Tool",
runsColumn: "Runs",
userColumn: "User",
bytesInColumn: "Bytes in",
poolColumn: "Pool",
p50Column: "p50",
p95Column: "p95",
storageHeading: "Library storage",
storageFiles: "{count} files",
unknownUser: "(unknown)",
},
apiKeys: {
heading: "API 密钥",
description: "管理用于程序化访问 SnapOtter 的 API 密钥。",
keyNamePlaceholder: "密钥名称(可选)",
generateButton: "生成 API 密钥",
removeScopingLabel: "移除权限范围限制",
restrictPermissionsLabel: "限制权限(可选)",
expiresLabel: "过期时间:",
clearButton: "清除",
copyTitle: "复制",
keyWarning: "请妥善保管此密钥。它将不再显示。",
existingKeysHeading: "现有密钥",
createdPrefix: "创建于 {date}",
scopedPrefix: "权限范围:",
expiresPrefix: "过期于 {date}",
deleteKeyTitle: "删除密钥",
deleteConfirm: "删除此 API 密钥?使用该密钥的集成将停止工作。",
emptyState: "暂无 API 密钥。生成一个开始使用。",
},
tools: {
heading: "工具",
description: "启用或禁用单个工具。禁用的工具对所有用户隐藏。",
restartBanner: "需要重启才能使更改生效。",
searchPlaceholder: "搜索工具...",
noSearchResults: "没有匹配的工具。",
loadFailedError: "加载工具设置失败。为防止数据丢失,保存功能已禁用。",
saveButton: "保存工具设置",
disabledCount: "{count} 个工具已禁用",
},
experimental: {
label: "启用实验性工具",
description: "显示仍在开发中的工具。这些工具可能不稳定。",
},
fileManagement: {
title: "文件管理",
maxAge: "文件最大保留时间(小时)",
maxAgeDescription: "处理后的文件在自动清理前保留的时间",
startupCleanup: "启动时清理",
startupCleanupDescription: "服务器启动时清理旧的临时文件",
},
analytics: {
heading: "产品分析",
description: "分享匿名使用数据,帮助改进 SnapOtter。",
privacyNote: "您的图片永远不会离开您的机器。",
disabledByAdmin: "产品分析已被服务器管理员禁用。",
enabledLabel: "分析已启用",
disabledLabel: "分析已禁用",
learnMore: "了解更多",
},
aiFeatures: {
title: "AI Features",
description: "Manage AI model bundles for advanced image processing.",
installAll: "Install All",
diskUsage: "Disk usage:",
installed: "Installed",
notInstalled: "Not installed",
queued: "Queued",
install: "Install",
repair: "Repair",
uninstall: "Uninstall",
installing: "Installing...",
importBundle: "Import Bundle",
importDescription: "Upload a .tar.gz bundle archive exported from another installation.",
importButton: "Import from file",
importing: "Importing...",
importSuccess: "Bundle imported successfully.",
importError: "Bundle import failed: {error}",
},
about: {
heading: "关于",
appName: "SnapOtter",
appDescription:
"自托管、隐私优先的图片处理套件,包含 70+ 种工具。调整大小、压缩、转换、加水印,自动化您的图片工作流,无需将数据发送到云端。",
versionLabel: "版本:",
linksHeading: "链接",
githubLink: "GitHub 仓库",
docsLink: "文档",
apiRefLink: "API 参考(Swagger",
licenseLabel: "License:",
licenseDescription:
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3).",
},
},
auth: {
login: "登录",
logout: "退出登录",
username: "用户名",
password: "密码",
loginButton: "登录",
loggingIn: "正在登录...",
invalidCredentials: "用户名或密码错误",
connectionError: "连接错误",
signInWith: "使用 {provider} 登录",
signInWithSso: "使用 SSO 登录",
or: "或",
methodLocal: "本地",
methodOidc: "OIDC",
methodBoth: "本地 + OIDC",
oidcAuthFailed: "认证失败。请重试。",
oidcProviderUnreachable: "无法连接身份提供商。请稍后再试。",
oidcSessionExpired: "登录会话已过期。请重试。",
oidcUserNotAuthorized: "您的账号无权访问此应用。请联系管理员。",
oidcUserLimitReached: "用户数量已达上限。请联系管理员。",
oidcGenericError: "认证错误。请重试。",
passwordManagedByProvider: "密码修改由您的身份提供商管理。",
enterUsername: "输入用户名",
enterPassword: "输入密码",
heroTitle: "您的图片,由您掌控。",
heroSubtitle: "您需要的每一种图片工具。",
rotatingPhrases: [
"无需注册,无需账号。",
"永不上传到云端。",
"100% 本地处理。",
"免费,永远免费。",
"无限制,无隐藏上限。",
"完全离线可用。",
"无限批量处理。",
"70+ 种图片工具。",
"15 个 AI 模型,在你自己的设备上运行。",
"基于 Sharp 构建,闪电般快速。",
"支持内网隔离部署。",
"一个 Docker 容器搞定一切。",
"开源,始终如一。",
"每一个像素都留在你的设备上。",
"你的服务器,你做主。",
"一行 docker pull 即可部署。",
"自托管的替代方案。",
"调整大小、压缩、转换,全部在本地完成。",
"免费图片编辑器,无水印。",
"批量图片处理,无限制。",
"离线移除背景。",
"自托管的 Canva 替代品。",
"无需 API 密钥。",
"从设计上符合 GDPR。",
"无需互联网即可使用。",
],
},
changePassword: {
title: "修改密码",
description: "继续之前需要设置新密码。密码至少 8 个字符,需包含大小写字母和数字。",
usernameLabel: "用户名",
currentPasswordLabel: "当前密码",
currentPasswordPlaceholder: "输入当前密码",
newPasswordLabel: "新密码",
generateButton: "生成强密码",
newPasswordPlaceholder: "至少 8 个字符",
confirmPasswordLabel: "确认新密码",
confirmPasswordPlaceholder: "再次输入新密码",
passwordsMismatch: "两次密码输入不一致",
failedError: "密码修改失败",
connectionError: "连接错误",
changingButton: "正在修改...",
changeButton: "修改密码",
sidebarTitle: "快要完成了",
sidebarDescription: "设置一个强密码来保护您的账号,然后就可以开始使用了。",
},
automate: {
title: "自动化",
invalidPipelineFile: "不是有效的 SnapOtter Pipeline 文件",
newerVersion: "此 Pipeline 由更新版本的 SnapOtter 创建",
missingName: "Pipeline 文件缺少名称",
noSteps: "Pipeline 文件没有步骤",
importFailed: "导入失败",
couldNotRead: "无法读取 Pipeline 文件",
fileCount: "{count} 个文件",
fileCountPlural: "{count} 个文件",
importFromLibrary: "从库中导入",
addButton: "+ 添加",
libraryButton: "库",
clearButton: "清除",
processingFailed: "此文件处理失败",
processingMultiple: "正在处理 {count} 个文件...",
processingPipeline: "正在处理 Pipeline...",
processButton: "处理",
processButtonMultiple: "处理({count}",
processAllButton: "全部处理({count}",
addTool: "添加工具",
toolPalette: "工具面板",
clickToAdd: "点击添加到 Pipeline",
savedLabel: "已保存",
importButton: "导入",
noSavedPipelines: "暂无已保存的 Pipeline",
stepCount: "{count} 个步骤)",
stepCountPlural: "{count} 个步骤)",
exportPipeline: "导出 Pipeline",
deletePipeline: "删除 Pipeline",
moreCount: "还有 {count} 项",
pipelineBuilder: "Pipeline 构建器",
addToolsPrompt: "从工具面板添加工具开始",
stepsConfigured: "已配置 {count} 个步骤",
stepsConfiguredPlural: "已配置 {count} 个步骤",
noFilesLoaded: "未加载文件",
downloadZip: "下载 ZIP",
saveButton: "保存",
pipelineNamePlaceholder: "Pipeline 名称",
descriptionPlaceholder: "描述",
savingIndicator: "...",
cancelButton: "取消",
preview: "预览",
previousImage: "上一张图片",
nextImage: "下一张图片",
imageCounter: "{current} / {total}",
imageArea: "图片区域",
templateSocialMedia: "社交媒体适配",
templatePrivacyClean: "隐私清理",
templateWebOptimization: "网页优化",
templateProfilePicture: "头像制作",
templateWatermarkBatch: "批量水印",
createNew: "创建新自动化",
savedAutomations: "已保存的自动化",
templates: "模板",
addStep: "添加步骤",
removeStep: "移除",
moveUp: "上移",
moveDown: "下移",
savePipeline: "保存 Pipeline",
runPipeline: "处理",
pipelineName: "Pipeline 名称",
pipelineDescription: "描述(可选)",
noStepsPrompt: "添加步骤来构建自动化流程",
noStepsHeading: "No steps yet",
searchToolsPlaceholder: "Search tools...",
step: "步骤",
},
nav: {
tools: "工具",
reader: "阅读器",
automate: "自动化",
editor: "编辑器",
files: "文件",
help: "帮助",
settings: "设置",
grid: "网格",
},
files: {
myFiles: "My Files",
recentTab: "Recent",
uploadTab: "Upload Files",
fileDetailsAriaLabel: "File Details",
fileDetailsHeading: "File Details",
searchPlaceholder: "Search files...",
selectedCount: "{count} selected",
fileCount: "{count} files",
fileCountSingular: "{count} file",
noFilesFound: "No files found",
selectFilePrompt: "Select a file to view details",
openFile: "Open File",
openInPipeline: "Open in Pipeline",
name: "Name",
format: "Format",
size: "Size",
dimensions: "Dimensions",
version: "Version",
toolsUsed: "Tools Used",
none: "None",
delete: "Delete",
pipeline: "Pipeline",
download: "Download",
},
dropzone: {
unsupportedFileType: "此工具不支持该文件类型",
urlFetchFailed: "无法从 URL 获取图片",
ariaLabel: "文件拖放区域",
dropPrompt: "将图片拖放到此处",
browseOrPaste: "点击任意位置浏览,或从剪贴板粘贴",
uploadButton: "上传",
defaultFormats: "PNG、JPG、WebP、HEIC、RAW、PSD 及 65+ 种格式",
orSeparator: "或",
urlPlaceholder: "粘贴图片 URL...",
urlLoadingIndicator: "...",
addUrlButton: "添加",
importMultipleUrls: "导入多个 URL...",
filesSelected: "已选择 {count} 个文件",
},
reviewPanel: {
processedResultAlt: "处理结果",
sizeLabel: "大小:{size}",
typeLabel: "类型:{type}",
processedLabel: "处理时间:{time}",
undoButton: "撤销",
downloadButton: "下载",
openInEditor: "在编辑器中打开",
reviewHeading: "审查",
continueEditing: "继续编辑",
},
features: {
notEnabledTitle: "功能未启用",
notEnabledDescription: "此功能未启用。请让管理员在设置中启用。",
requiresDownload: "此功能需要额外下载(约 {size}",
retryButton: "重试",
queued: "已加入安装队列...",
enableButton: "启用 {name}",
repairRequired: "Repair Required",
repairDescription: "Some model files are missing or corrupted. Repair will re-download them.",
repairButton: "Repair {name}",
lessThanMinute: "不到一分钟",
oneMinuteLeft: "约 1 分钟",
minutesLeft: "约 {mins} 分钟",
progressMessages: [
"快好了... 大概吧...",
"好东西需要等一等...",
"总比看油漆变干快...",
"您的耐心令人钦佩...",
"比看起来忙碌得多...",
"这是最精彩的部分,相信我...",
"正在做一些重要的幕后工作...",
"如果你看到这条,说明一切正常...",
"正在准备一些很棒的东西...",
"等待是值得的,拉勾保证...",
"悬念也是体验的一部分...",
"正在教你的电脑学新本事...",
"正在为你配置超能力...",
"你的图片以后会感谢你的...",
"加载中... 但要加点仪式感...",
"现在正适合去泡杯咖啡...",
"罗马也不是一天建成的...",
"嘘... 天才正在工作...",
"让你的照片提前嫉妒一下...",
"正在集结梦之队...",
"正在拆箱精彩内容...",
"差不多要开始想要不要开始了... 开玩笑的...",
"反转来了:这真的在干活...",
"正在预热创意引擎...",
"想象力加载中...",
"这不是屏保,我们保证...",
"伟大的艺术安装需要时间...",
"未来的你会感谢现在的自己...",
"正在获取一些非常聪明的文件...",
"稍安勿躁,精彩即将到来...",
],
},
help: {
heading: "帮助",
gettingStarted: {
heading: "快速入门",
description: "从侧边栏选择工具或搜索。将图片拖到页面上或点击上传区域。调整设置后下载结果。",
},
keyboardShortcuts: {
heading: "键盘快捷键",
focusSearchBar: "聚焦搜索栏",
goToTools: "前往工具",
toggleTheme: "切换主题",
goToResize: "前往调整大小",
goToCrop: "前往裁剪",
goToCompress: "前往压缩",
goToConvert: "前往转换",
goToRemoveBackground: "前往移除背景",
goToWatermarkText: "前往文字水印",
goToStripMetadata: "前往移除元数据",
goToImageInfo: "前往图片信息",
},
resources: {
heading: "资源",
githubLink: "GitHub 仓库",
reportIssueLink: "报告问题",
docsLink: "文档",
apiRefLink: "API 参考(Swagger",
},
versionLabel: "SnapOtter v{version}",
},
errors: {
generic: "发生错误",
offline: "您已离线",
reconnecting: "正在重新连接服务器...",
connected: "已连接",
processingFailed: "此文件处理失败",
timeout: "请求超时。服务器可能过载。请重试。",
networkError: "网络错误。请检查您的连接。",
invalidCredentials: "用户名或密码错误",
connectionError: "连接错误",
},
analytics: {
consentTitle: "帮助改进 SnapOtter",
consentDescription:
"匿名使用统计帮助我们修复问题并构建您真正需要的工具。您的图片和文件始终留在您的设备上。",
consentChangeable: "您可以随时在设置中关闭。",
acceptButton: "好的,没问题",
declineButton: "暂时不了",
settingsTitle: "产品分析",
settingsDescription: "分享匿名使用数据,帮助改进 SnapOtter。",
settingsPrivacy: "您的图片永远不会离开您的机器。",
settingsDisabledByAdmin: "产品分析已被服务器管理员禁用。",
learnMore: "了解更多",
},
sidebar: {
tools: "工具",
grid: "网格",
automate: "自动化",
editor: "编辑器",
files: "文件",
help: "帮助",
settings: "设置",
},
toolCard: {
addToFavourites: "添加到收藏",
},
appLayout: {
mobileNavTools: "工具",
mobileNavAutomate: "自动化",
mobileNavEditor: "编辑器",
mobileNavFiles: "文件",
mobileNavSettings: "设置",
},
a11y: {
skipToContent: "Skip to main content",
openSidebar: "Open sidebar",
closeSidebar: "Close sidebar",
closeSettings: "Close settings",
closeHelp: "Close help",
closeDialog: "Close dialog",
zoomIn: "Zoom in",
zoomOut: "Zoom out",
fitToView: "Fit to view",
actualSize: "Actual size",
previousImage: "Previous image",
nextImage: "Next image",
imageArea: "Image area",
imageViewer: "Image viewer",
fileDropZone: "File drop zone",
imageDropZone: "Image drop zone",
beforeAfterSlider: "Before/after comparison slider",
imageControls: "Image controls",
zoomControls: "Zoom controls",
dragToReorder: "Drag to reorder",
whiteBackground: "White background",
blackBackground: "Black background",
expandPanel: "Expand panel",
collapsePanel: "Collapse panel",
swapDimensions: "Swap dimensions",
applyCrop: "Apply crop",
cancelCrop: "Cancel crop",
fontFamily: "Font family",
textColor: "Text color",
flipHorizontal: "Flip horizontal",
flipVertical: "Flip vertical",
hexColorValue: "Hex color value",
backgroundColor: "Background color",
foregroundColor: "Foreground color",
swapColors: "Swap foreground and background colors",
resetColors: "Reset to default black and white",
foregroundHex: "Foreground color hex value",
undo: "Undo",
redo: "Redo",
layers: "Layers",
addLayer: "Add layer",
deleteLayer: "Delete layer",
cancelOperation: "Cancel operation",
fill: "Fill",
fileDetails: "File details",
language: "Language",
selected: "Selected",
deleteKey: "Delete key",
editRole: "Edit role",
deleteRole: "Delete role",
notInstalled: "Not installed",
queued: "Queued for install",
installing: "Installing",
imageNOfTotal: "Image {n} of {total}",
processingComplete: "Image processed successfully",
processingFailed: "Processing failed",
settingsDialog: "Settings",
helpDialog: "Help",
navigationMenu: "Navigation",
},
} as const;