import type { TranslationKeys } from "./en.js"; export const zhCN: TranslationKeys = { migrationBanner: { successTitle: "已导入 SnapOtter 1.x 数据。", successBody: "已从旧版本迁移 {users} 个用户和 {files} 个已保存文件。", warningTitle: "发现 1.x 数据库,但未导入。", warningBody: "此实例已有数据,因此未导入你的 1.x 数据库。导入需要一个空实例。请参阅升级指南。", dismiss: "关闭", }, common: { upload: "从电脑上传", process: "处理", download: "下载", cancel: "取消", save: "保存", delete: "删除", settings: "设置", search: "搜索工具...", dropFiles: "拖放文件到此处或点击上传按钮", loading: "加载中...", saving: "保存中...", 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: "页面未找到", pageNotFoundDescription: "您查找的页面不存在或已被移动。", }, feedback: { navLabel: "分享反馈", navButtonLabel: "反馈", dialogTitle: "分享反馈", toolDialogTitle: "这个工具好用吗?", failedDialogTitle: "报告工具问题", adminDialogTitle: "安装体验如何?", closeLabel: "关闭反馈对话框", privacyNote: "只有在你提交时才会发送反馈。SnapOtter 不会包含你的文件、文件内容、文件名或私密输出。", typeLabel: "反馈类型", sentimentLabel: "快速评分", messageLabel: "反馈", messagePlaceholder: "告诉我们哪些功能好用、哪些出了问题,或者怎样能让 SnapOtter 更好。", improveFirstLabel: "我们应该优先改进什么?", improveFirstPlaceholder: "告诉我们是什么让安装比预期更麻烦。", contactOkLabel: "可以就此反馈与我联系。", emailPlaceholder: "邮箱(可选)", namePlaceholder: "姓名(可选)", companyPlaceholder: "公司或组织(可选)", submit: "发送反馈", submitting: "发送中...", submitFailed: "反馈发送失败。请重试。", searchMissTitle: "请求工具", searchMissContext: "你搜索了:{query}", searchMissDiscussionsFallback: "我们无法记录。请在 Discussions 中发起请求。", offlineDescription: "此实例已关闭分析功能,因此反馈不会记录在这里。你仍然可以直接联系 SnapOtter 团队。", offlinePublicNote: "GitHub issue 是公开的。", offlineGithubButton: "创建 GitHub issue", offlineEmailButton: "给我们发邮件", thanksTitle: "感谢你的反馈。", thanksDescription: "这能帮助我们改进 SnapOtter,同时不会收集任何文件或私密内容。", quickThanks: "感谢反馈!", reportIssue: "报告问题", toolPromptTitle: "这个工具好用吗?", toolPromptDescription: "一个简单的反馈就能帮助我们改进 SnapOtter。", dismissPrompt: "关闭反馈提示", workedWell: "很好用", dontAskAgain: "不再询问", shareFeedback: "分享反馈", remindLater: "稍后提醒", adminCardTitle: "安装体验如何?", adminCardDescription: "管理员的简短反馈能帮助我们改进 Docker、源码安装和文档。", installMethodLabel: "安装方式", frictionAreaLabel: "最费劲的安装环节", importantAreasLabel: "最重要的方面", sentiments: { great: "很好", okay: "还行", issue: "遇到了问题", missing: "缺少功能", bug: "Bug", idea: "想法", other: "其他", }, types: { bug: "Bug", feature_request: "功能请求", confusing_ux: "体验令人困惑", performance: "性能", other: "其他", }, installMethods: { docker: "Docker", docker_compose: "Docker Compose", source: "从源码构建", cloud: "云端/演示", other: "其他", }, usageTypes: { personal: "仅我自己", team_internal: "小型团队", business_workflow: "公司或组织", education: "教育", evaluating: "评估中", }, frictionAreas: { smooth: "没有,安装很顺利", docker: "Docker/容器配置", environment_variables: "环境变量", auth: "身份验证/SSO", storage: "存储/上传", workers: "工作进程/队列", ai_tools: "AI 工具", docs: "文档", performance: "性能/资源", other: "其他", }, importantAreas: { images: "图片", pdf_docs: "PDF/文档", video_audio: "视频/音频", batch_workflows: "批量工作流", ai_tools: "AI 工具", }, }, onboarding: { usageSurveyTitle: "您如何使用 SnapOtter?", usageSurveyToolsLabel: "您最看重什么?", pickAnyHint: "(可多选)", continueLabel: "继续", }, categories: { essentials: "基础工具", adjustments: "调整", enhance: "增强与 AI", watermark: "水印与叠加", layout: "布局与排版", utilities: "实用工具", optimization: "优化", format: "格式与转换", "video-edit": "Video", "video-convert": "转换", "video-effects": "特效与合成", "video-subtitles": "字幕", "video-metadata": "元数据", "audio-edit": "编辑", "audio-convert": "转换", "audio-effects": "特效与合成", "audio-metadata": "元数据", "pdf-organize": "整理", "pdf-edit": "编辑与注释", "pdf-security": "安全", "pdf-optimize": "优化", "doc-convert": "转换", data: "文件", archives: "压缩包", }, modalities: { image: "图片", video: "视频", audio: "音频", documentsAndFiles: "PDF 与文件", }, tools: { // BEGIN conversion-presets (generated by scripts/generate-conversion-i18n.mjs) "jpg-to-png": { name: "JPG 转 PNG", description: "在线将 JPG 转换为 PNG。快速、免费、私密。" }, "png-to-jpg": { name: "PNG 转 JPG", description: "在线将 PNG 转换为 JPG。快速、免费、私密。" }, "jpg-to-webp": { name: "JPG 转 WebP", description: "在线将 JPG 转换为 WebP。快速、免费、私密。", }, "png-to-webp": { name: "PNG 转 WebP", description: "在线将 PNG 转换为 WebP。快速、免费、私密。", }, "webp-to-jpg": { name: "WebP 转 JPG", description: "在线将 WebP 转换为 JPG。快速、免费、私密。", }, "webp-to-png": { name: "WebP 转 PNG", description: "在线将 WebP 转换为 PNG。快速、免费、私密。", }, "jpg-to-avif": { name: "JPG 转 AVIF", description: "在线将 JPG 转换为 AVIF。快速、免费、私密。", }, "png-to-avif": { name: "PNG 转 AVIF", description: "在线将 PNG 转换为 AVIF。快速、免费、私密。", }, "webp-to-avif": { name: "WebP 转 AVIF", description: "在线将 WebP 转换为 AVIF。快速、免费、私密。", }, "heic-to-jpg": { name: "HEIC 转 JPG", description: "在线将 HEIC 转换为 JPG。快速、免费、私密。", }, "heic-to-png": { name: "HEIC 转 PNG", description: "在线将 HEIC 转换为 PNG。快速、免费、私密。", }, "heic-to-avif": { name: "HEIC 转 AVIF", description: "在线将 HEIC 转换为 AVIF。快速、免费、私密。", }, "jpg-to-gif": { name: "JPG 转 GIF", description: "在线将 JPG 转换为 GIF。快速、免费、私密。" }, "png-to-gif": { name: "PNG 转 GIF", description: "在线将 PNG 转换为 GIF。快速、免费、私密。" }, "gif-to-jpg": { name: "GIF 转 JPG", description: "在线将 GIF 转换为 JPG。快速、免费、私密。" }, "gif-to-png": { name: "GIF 转 PNG", description: "在线将 GIF 转换为 PNG。快速、免费、私密。" }, "webp-to-gif": { name: "WebP 转 GIF", description: "在线将 WebP 转换为 GIF。快速、免费、私密。", }, "jpg-to-tiff": { name: "JPG 转 TIFF", description: "在线将 JPG 转换为 TIFF。快速、免费、私密。", }, "png-to-tiff": { name: "PNG 转 TIFF", description: "在线将 PNG 转换为 TIFF。快速、免费、私密。", }, "tiff-to-jpg": { name: "TIFF 转 JPG", description: "在线将 TIFF 转换为 JPG。快速、免费、私密。", }, "tiff-to-png": { name: "TIFF 转 PNG", description: "在线将 TIFF 转换为 PNG。快速、免费、私密。", }, "psd-to-jpg": { name: "PSD 转 JPG", description: "在线将 PSD 转换为 JPG。快速、免费、私密。" }, "psd-to-png": { name: "PSD 转 PNG", description: "在线将 PSD 转换为 PNG。快速、免费、私密。" }, "png-to-eps": { name: "PNG 转 EPS", description: "在线将 PNG 转换为 EPS。快速、免费、私密。" }, "jpg-to-eps": { name: "JPG 转 EPS", description: "在线将 JPG 转换为 EPS。快速、免费、私密。" }, "eps-to-png": { name: "EPS 转 PNG", description: "在线将 EPS 转换为 PNG。快速、免费、私密。" }, "eps-to-jpg": { name: "EPS 转 JPG", description: "在线将 EPS 转换为 JPG。快速、免费、私密。" }, "png-to-svg": { name: "PNG 转 SVG", description: "在线将 PNG 转换为 SVG。快速、免费、私密。" }, "jpg-to-svg": { name: "JPG 转 SVG", description: "在线将 JPG 转换为 SVG。快速、免费、私密。" }, "tiff-to-svg": { name: "TIFF 转 SVG", description: "在线将 TIFF 转换为 SVG。快速、免费、私密。", }, "psd-to-svg": { name: "PSD 转 SVG", description: "在线将 PSD 转换为 SVG。快速、免费、私密。" }, "eps-to-svg": { name: "EPS 转 SVG", description: "在线将 EPS 转换为 SVG。快速、免费、私密。" }, "svg-to-png": { name: "SVG 转 PNG", description: "在线将 SVG 转换为 PNG。快速、免费、私密。" }, "svg-to-jpg": { name: "SVG 转 JPG", description: "在线将 SVG 转换为 JPG。快速、免费、私密。" }, "jpg-to-pdf": { name: "JPG 转 PDF", description: "在线将 JPG 转换为 PDF。快速、免费、私密。" }, "png-to-pdf": { name: "PNG 转 PDF", description: "在线将 PNG 转换为 PDF。快速、免费、私密。" }, "heic-to-pdf": { name: "HEIC 转 PDF", description: "在线将 HEIC 转换为 PDF。快速、免费、私密。", }, "tiff-to-pdf": { name: "TIFF 转 PDF", description: "在线将 TIFF 转换为 PDF。快速、免费、私密。", }, "webp-to-pdf": { name: "WebP 转 PDF", description: "在线将 WebP 转换为 PDF。快速、免费、私密。", }, "gif-to-pdf": { name: "GIF 转 PDF", description: "在线将 GIF 转换为 PDF。快速、免费、私密。" }, "eps-to-pdf": { name: "EPS 转 PDF", description: "在线将 EPS 转换为 PDF。快速、免费、私密。" }, "pdf-to-jpg": { name: "PDF 转 JPG", description: "在线将 PDF 转换为 JPG。快速、免费、私密。" }, "pdf-to-png": { name: "PDF 转 PNG", description: "在线将 PDF 转换为 PNG。快速、免费、私密。" }, "pdf-to-tiff": { name: "PDF 转 TIFF", description: "在线将 PDF 转换为 TIFF。快速、免费、私密。", }, "mov-to-mp4": { name: "MOV 转 MP4", description: "在线将 MOV 转换为 MP4。快速、免费、私密。" }, "webm-to-mp4": { name: "WEBM 转 MP4", description: "在线将 WEBM 转换为 MP4。快速、免费、私密。", }, "mkv-to-mp4": { name: "MKV 转 MP4", description: "在线将 MKV 转换为 MP4。快速、免费、私密。" }, "avi-to-mp4": { name: "AVI 转 MP4", description: "在线将 AVI 转换为 MP4。快速、免费、私密。" }, "mp4-to-mov": { name: "MP4 转 MOV", description: "在线将 MP4 转换为 MOV。快速、免费、私密。" }, "mp4-to-webm": { name: "MP4 转 WEBM", description: "在线将 MP4 转换为 WEBM。快速、免费、私密。", }, "webm-to-mov": { name: "WEBM 转 MOV", description: "在线将 WEBM 转换为 MOV。快速、免费、私密。", }, "mkv-to-mov": { name: "MKV 转 MOV", description: "在线将 MKV 转换为 MOV。快速、免费、私密。" }, "avi-to-mov": { name: "AVI 转 MOV", description: "在线将 AVI 转换为 MOV。快速、免费、私密。" }, "mp4-to-avi": { name: "MP4 转 AVI", description: "在线将 MP4 转换为 AVI。快速、免费、私密。" }, "mov-to-avi": { name: "MOV 转 AVI", description: "在线将 MOV 转换为 AVI。快速、免费、私密。" }, "mkv-to-avi": { name: "MKV 转 AVI", description: "在线将 MKV 转换为 AVI。快速、免费、私密。" }, "avi-to-mkv": { name: "AVI 转 MKV", description: "在线将 AVI 转换为 MKV。快速、免费、私密。" }, "mp4-to-gif": { name: "MP4 转 GIF", description: "在线将 MP4 转换为 GIF。快速、免费、私密。" }, "mov-to-gif": { name: "MOV 转 GIF", description: "在线将 MOV 转换为 GIF。快速、免费、私密。" }, "mkv-to-gif": { name: "MKV 转 GIF", description: "在线将 MKV 转换为 GIF。快速、免费、私密。" }, "avi-to-gif": { name: "AVI 转 GIF", description: "在线将 AVI 转换为 GIF。快速、免费、私密。" }, "gif-to-mp4": { name: "GIF 转 MP4", description: "在线将 GIF 转换为 MP4。快速、免费、私密。" }, "gif-to-webm": { name: "GIF 转 WEBM", description: "在线将 GIF 转换为 WEBM。快速、免费、私密。", }, "gif-to-mov": { name: "GIF 转 MOV", description: "在线将 GIF 转换为 MOV。快速、免费、私密。" }, "mp4-to-mp3": { name: "MP4 转 MP3", description: "在线将 MP4 转换为 MP3。快速、免费、私密。" }, "mov-to-mp3": { name: "MOV 转 MP3", description: "在线将 MOV 转换为 MP3。快速、免费、私密。" }, "mkv-to-mp3": { name: "MKV 转 MP3", description: "在线将 MKV 转换为 MP3。快速、免费、私密。" }, "webm-to-mp3": { name: "WEBM 转 MP3", description: "在线将 WEBM 转换为 MP3。快速、免费、私密。", }, "avi-to-mp3": { name: "AVI 转 MP3", description: "在线将 AVI 转换为 MP3。快速、免费、私密。" }, "mp4-to-wav": { name: "MP4 转 WAV", description: "在线将 MP4 转换为 WAV。快速、免费、私密。" }, "mov-to-wav": { name: "MOV 转 WAV", description: "在线将 MOV 转换为 WAV。快速、免费、私密。" }, "mp4-to-ogg": { name: "MP4 转 OGG", description: "在线将 MP4 转换为 OGG。快速、免费、私密。" }, "m4a-to-mp3": { name: "M4A 转 MP3", description: "在线将 M4A 转换为 MP3。快速、免费、私密。" }, "m4a-to-wav": { name: "M4A 转 WAV", description: "在线将 M4A 转换为 WAV。快速、免费、私密。" }, "aac-to-mp3": { name: "AAC 转 MP3", description: "在线将 AAC 转换为 MP3。快速、免费、私密。" }, "aac-to-wav": { name: "AAC 转 WAV", description: "在线将 AAC 转换为 WAV。快速、免费、私密。" }, "aac-to-flac": { name: "AAC 转 FLAC", description: "在线将 AAC 转换为 FLAC。快速、免费、私密。", }, "ogg-to-mp3": { name: "OGG 转 MP3", description: "在线将 OGG 转换为 MP3。快速、免费、私密。" }, "ogg-to-wav": { name: "OGG 转 WAV", description: "在线将 OGG 转换为 WAV。快速、免费、私密。" }, "wav-to-mp3": { name: "WAV 转 MP3", description: "在线将 WAV 转换为 MP3。快速、免费、私密。" }, "mp3-to-wav": { name: "MP3 转 WAV", description: "在线将 MP3 转换为 WAV。快速、免费、私密。" }, "flac-to-mp3": { name: "FLAC 转 MP3", description: "在线将 FLAC 转换为 MP3。快速、免费、私密。", }, "excel-to-csv": { name: "Excel 转 CSV", description: "在线将 Excel 转换为 CSV。快速、免费、私密。", }, // END conversion-presets 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 文字识别", 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 转图片", description: "将网页捕获为高质量图片", }, "barcode-read": { name: "条码识别", description: "扫描图片中的 QR 码、条形码和二维码", }, collage: { name: "拼贴和网格", description: "使用 25+ 模板将图片拼成精美网格拼贴", }, stitch: { name: "拼接合并图片", description: "将图片横向、纵向或网格排列拼接", }, split: { name: "分割图片", description: "按网格或像素大小分割图片,支持实时预览", }, border: { name: "边框与相框", description: "添加边框、内边距、圆角和阴影,支持一键预设", }, beautify: { name: "截图美化", description: "为截图添加渐变背景、设备外框、阴影和社交媒体尺寸", }, "circle-crop": { name: "圆形裁剪", description: "将图片裁剪为居中圆形,四角透明", }, duotone: { name: "双色调", description: "应用双色调效果,自定义阴影和高光颜色", }, "image-pad": { name: "图片填充", description: "用纯色背景将图片填充至目标宽高比", }, pixelate: { name: "像素化", description: "对整张图片或指定区域应用像素化效果", }, vignette: { name: "暗角", description: "添加可调节强度和颜色的暗角效果", }, "gif-webp": { name: "GIF/WebP 转换器", description: "在 GIF 和 WebP 动画之间互转,保留所有帧", }, histogram: { name: "直方图", description: "从图片生成 RGB 直方图", }, "lqip-placeholder": { name: "LQIP 占位图", description: "生成带 base64 数据 URI 的低质量缩略占位图", }, "sprite-sheet": { name: "精灵图", description: "将多张图片合并为一张精灵图网格", }, "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: "条形码生成器", description: "生成 Code 128、EAN-13、UPC-A、Code 39、ITF-14 和 Data Matrix 条形码", }, "chart-maker": { name: "图表制作器", description: "从 CSV 或 JSON 数据创建柱状图、折线图或饼图", }, "convert-video": { name: "转换视频", description: "在 MP4、MOV 和 WebM 格式之间转换视频", }, "compress-video": { name: "压缩视频", description: "在控制质量的同时缩小视频文件大小", }, "trim-video": { name: "修剪视频", description: "从视频中截取片段", }, "mute-video": { name: "视频静音", description: "移除视频中的音频轨道", }, "video-to-gif": { name: "视频转 GIF", description: "将视频片段转换为 GIF 动图", }, "resize-video": { name: "调整视频尺寸", description: "将视频缩放至新分辨率或预设尺寸", }, "crop-video": { name: "裁剪视频", description: "裁剪视频中的指定区域", }, "rotate-video": { name: "旋转视频", description: "旋转或翻转视频", }, "change-fps": { name: "更改帧率", description: "更改视频的帧率", }, "video-color": { name: "视频色彩", description: "调整亮度、对比度、饱和度和伽马值", }, "video-speed": { name: "视频速度", description: "加速或减速视频播放", }, "reverse-video": { name: "倒放视频", description: "将视频倒序播放", }, "video-loudnorm": { name: "视频音频标准化", description: "将视频音频音量标准化至广播标准", }, "aspect-pad": { name: "比例填充", description: "添加纯色边框以适配目标宽高比", }, "blur-pad": { name: "模糊填充", description: "用视频的模糊副本填充边框", }, "watermark-video": { name: "视频水印", description: "在视频帧上烧录文字水印", }, "stabilize-video": { name: "视频防抖", description: "通过双通道防抖减少画面抖动", }, "gif-to-video": { name: "GIF 转视频", description: "将 GIF 动图转换为 MP4 或 WebM 视频", }, "video-to-webp": { name: "视频转 WebP", description: "将视频片段转换为 WebP 动图", }, "video-to-frames": { name: "视频提取帧", description: "从视频中提取帧并打包为 ZIP 图片集", }, "merge-videos": { name: "合并视频", description: "将多个视频片段合并为一个文件", }, "replace-audio": { name: "替换音频", description: "将视频的音频轨道替换为其他文件", }, "burn-subtitles": { name: "烧录字幕", description: "将字幕永久渲染到视频帧上", }, "embed-subtitles": { name: "内嵌字幕", description: "将字幕轨道封装到视频容器中", }, "extract-subtitles": { name: "提取字幕", description: "从视频中提取字幕轨道为 SRT 文件", }, "images-to-video": { name: "图片转视频", description: "将一组图片制作成幻灯片视频", }, "video-metadata": { name: "清除视频元数据", description: "清除视频元数据并报告发现的内容", }, "convert-audio": { name: "转换音频", description: "在 MP3、WAV、OGG 等格式之间转换音频", }, "trim-audio": { name: "修剪音频", description: "从音频文件中截取片段", }, "extract-audio": { name: "提取音频", description: "从视频中提取音频轨道", }, "volume-adjust": { name: "音量调节", description: "按固定增益增大或减小音频音量", }, "normalize-audio": { name: "音频标准化", description: "将音量均衡至广播标准水平", }, "fade-audio": { name: "音频淡入淡出", description: "为音频添加淡入和淡出效果", }, "reverse-audio": { name: "倒放音频", description: "将音频倒序播放", }, "audio-speed": { name: "音频速度", description: "加速或减速音频播放", }, "pitch-shift": { name: "变调", description: "按半音升高或降低音调,不改变速度", }, "audio-channels": { name: "音频声道", description: "在单声道和立体声之间转换,或交换左右声道", }, "silence-removal": { name: "静音移除", description: "删除音频中的静音片段", }, "noise-reduction": { name: "降噪", description: "使用基于 FFT 的降噪减少背景噪音", }, "merge-audio": { name: "合并音频", description: "将多个音频文件合并为一个", }, "split-audio": { name: "拆分音频", description: "按时间、等分或静音检测拆分音频", }, "ringtone-maker": { name: "铃声制作器", description: "从任意音频文件创建铃声片段", }, "waveform-image": { name: "波形图", description: "生成 PNG 格式的波形可视化图像", }, "audio-metadata": { name: "音频元数据", description: "查看、编辑或清除音频标签 (ID3)", }, "merge-pdf": { name: "合并 PDF", description: "将多个 PDF 合并为一个", }, "split-pdf": { name: "拆分 PDF", description: "提取页面或拆分为多个部分", }, "compress-pdf": { name: "压缩 PDF", description: "缩小 PDF 文件大小", }, "rotate-pdf": { name: "旋转 PDF", description: "旋转 PDF 中的页面", }, "convert-document": { name: "转换文档", description: "在 Word、OpenDocument、RTF 和纯文本格式之间转换", }, "convert-presentation": { name: "转换演示文稿", description: "在 PowerPoint 和 OpenDocument 演示文稿格式之间转换", }, "convert-spreadsheet": { name: "转换电子表格", description: "在 Excel、OpenDocument 和 CSV 格式之间转换。多工作表工作簿导出第一个工作表为 CSV。", }, "excel-to-pdf": { name: "Excel 转 PDF", description: "将电子表格转换为 PDF。较宽的表格可能分页显示。", }, "word-to-pdf": { name: "Word 转 PDF", description: "将 Word 文档转换为 PDF", }, "extract-pages": { name: "提取页面", description: "将选定页面提取为新的 PDF", }, "remove-pages": { name: "删除页面", description: "从 PDF 中删除指定页面", }, "organize-pdf": { name: "整理 PDF", description: "按指定顺序重新排列页面", }, "protect-pdf": { name: "保护 PDF", description: "添加密码保护(AES-256 加密)", }, "unlock-pdf": { name: "解锁 PDF", description: "移除 PDF 的密码保护", }, "repair-pdf": { name: "修复 PDF", description: "尝试修复损坏的 PDF", }, "linearize-pdf": { name: "Web 优化 PDF", description: "线性化 PDF 以便快速网页浏览", }, "grayscale-pdf": { name: "PDF 灰度化", description: "将所有颜色转换为灰度", }, "pdfa-convert": { name: "PDF/A 转换器", description: "转换为存档格式 PDF/A-2", }, "crop-pdf": { name: "裁剪 PDF", description: "按统一边距裁剪所有页面", }, "nup-pdf": { name: "每张纸多页 (N-up)", description: "在每张纸上排列多个页面", }, "booklet-pdf": { name: "小册子 PDF", description: "排列页面以折叠成小册子", }, "watermark-pdf": { name: "PDF 水印", description: "为每一页添加文字水印", }, "pdf-page-numbers": { name: "PDF 页码", description: "为每一页添加页码", }, "flatten-pdf": { name: "扁平化 PDF", description: "将表单和注释合并到页面内容中", }, "redact-pdf": { name: "PDF 涂黑", description: "永久删除指定文本(经验证的真实涂黑)", }, "pdf-to-text": { name: "PDF 转文本", description: "从 PDF 中提取纯文本", }, "pdf-to-word": { name: "PDF 转 Word", description: "适合文本型 PDF;扫描页面需要 OCR", }, "pdf-metadata": { name: "PDF 元数据", description: "读取和写入 PDF 文档元数据", }, "powerpoint-to-pdf": { name: "PowerPoint 转 PDF", description: "将演示文稿转换为 PDF", }, "html-to-pdf": { name: "HTML 转 PDF", description: "将 HTML 文件转换为 PDF。出于隐私考虑,远程资源已禁用。", }, "markdown-to-docx": { name: "Markdown 转 Word", description: "将 Markdown 文件转换为 Word 文档 (DOCX)", }, "markdown-to-html": { name: "Markdown 转 HTML", description: "将 Markdown 文件转换为独立的 HTML 页面。源文件中的远程图片在输出中保持原样。", }, "markdown-to-pdf": { name: "Markdown 转 PDF", description: "将 Markdown 文件转换为带样式的 PDF。出于隐私考虑,远程资源已禁用。", }, "epub-convert": { name: "从 EPUB 转换", description: "将 EPUB 转换为 PDF、DOCX、HTML 或 Markdown。书中的远程资源不会被获取。", }, "to-epub": { name: "转换为 EPUB", description: "将 Word、Markdown、HTML 或纯文本文件转换为 EPUB", }, "csv-excel": { name: "CSV 转 Excel", description: "在 CSV 和 Excel (XLSX) 之间双向转换", }, "csv-json": { name: "CSV 转 JSON", description: "在 CSV 和 JSON 之间双向转换", }, "json-xml": { name: "JSON 转 XML", description: "在 JSON 和 XML 之间双向转换", }, "split-csv": { name: "拆分 CSV", description: "按行数将 CSV 拆分为多个小文件", }, "merge-csvs": { name: "合并 CSV", description: "将多个列匹配的 CSV 或 TSV 文件合并为一个", }, "yaml-json": { name: "转换 YAML / JSON", description: "在 YAML 和 JSON 之间双向转换", }, "xml-to-csv": { name: "XML 转 CSV", description: "将 XML 中的重复元素提取为 CSV 表格", }, "create-zip": { name: "创建 ZIP", description: "将多个文件打包为一个 ZIP 压缩包", }, "extract-zip": { name: "解压 ZIP", description: "安全解压 ZIP 文件并防御压缩炸弹。单文件压缩包直接返回文件。", }, pipeline: { name: "Pipeline 构建器", description: "将多个工具串联为工作流" }, processing: { canceled: "处理已取消" }, mediaPlayer: { unsupported: "您的浏览器不支持此媒体格式。", }, documentView: { loadFailed: "文档加载失败。", previousPage: "上一页", nextPage: "下一页", inputNotPreviewable: "此文件类型无法预览", }, }, toolSettings: { compress: { compressionMode: "压缩模式", targetSize: "目标大小", quality: "质量", smallestFile: "最小文件", bestQuality: "最佳质量", submit: "压缩", submitBatch: "压缩({count} 个文件)", progressLabel: "压缩中", original: "原始:{size} KB", processed: "处理后:{size} KB", saved: "节省:{percent}%", }, resize: { customSize: "自定义大小", scale: "缩放", presets: "预设", contentAware: "内容感知", aspectRatio: "宽高比", ratioFree: "自由", ratioOriginal: "原始", 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: "已发现位置信息", viewOnMap: "在地图上查看", 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: "输出格式", edgeSmoothing: "边缘平滑", edgeSmoothingOff: "关闭", edgeSmoothingLight: "轻微", edgeSmoothingMedium: "中等", edgeSmoothingStrong: "强烈", colorDecontamination: "颜色去污", rendering: "渲染中...", submit: "移除背景", submitBatch: "移除背景({count} 个文件)", progressLabel: "正在移除背景", }, "remove-gif-background": { quality: "质量", qualityFast: "快速", qualityBalanced: "均衡", qualityBest: "最佳", qualityNote: "每一帧都会经过模型处理,因此质量越高,处理长片段就越慢。", outputFormat: "输出格式", formatWebp: "WebP", formatApng: "APNG", formatGif: "GIF", formatWebpHint: "WebP 和 APNG 可保留平滑、完整的透明度。", gifCaveat: "GIF 仅支持 1 位透明度,因此边缘看起来生硬。", background: "背景", bgTransparent: "透明", bgColor: "颜色", bgGradient: "渐变", bgBlur: "模糊", bgImage: "图片", gradientStart: "起点", gradientEnd: "终点", gradientAngle: "角度({deg}°)", blurStrength: "模糊强度({value})", shadow: "添加阴影", shadowStrength: "阴影不透明度({value})", advanced: "高级", edgeRefine: "边缘细化(级别 {level})", edgeRefineOff: "边缘细化:关闭", decontaminate: "去除颜色溢出", uploadBg: "上传背景图片", frameNote: "会处理每一帧,因此长动画较慢。建议使用 GPU。", submit: "移除背景", submitBatch: "移除背景({count} 个文件)", progressLabel: "正在从帧中移除背景", download: "下载", }, upscale: { scaleFactor: "放大倍数", quality: "质量", enhanceFaces: "增强人脸", noiseReduction: "降噪", noiseReductionHint: "平滑颗粒和噪点。数值越高去噪越强,但可能会模糊细节。", outputFormat: "输出格式", submit: "放大 {scale}x", submitBatch: "放大 {scale}x({count} 个文件)", progressLabel: "正在放大图片", progressLabelBatch: "正在放大 {count} 张图片", }, "erase-object": { qualityFast: "快速", qualityHq: "高质量", qualityHint: "高质量使用扩散模型处理大型物体和精细纹理。", brushMode: "画笔", lassoMode: "套索", brushSize: "画笔大小", fine: "细", wide: "粗", undo: "撤销", clear: "清除", outputFormat: "输出格式", quality: "质量", paintHint: "涂抹要移除的物体。按 Ctrl+Z 撤销。", lassoHint: "在要移除的物体周围画一个圈。按 Ctrl+Z 撤销。", submit: "擦除物体", submitBatch: "全部擦除({count})", progressLabel: "正在擦除物体", }, ocr: { quality: "质量", enhanceBeforeScanning: "扫描前增强", enhanceHint: "识别前改善局部对比度。快速模式会直接应用;均衡和最佳模式仅在校准评分改善结果时保留该版本。", fastKoreanUnsupported: "快速 OCR 不支持韩语。请安装精确 OCR 包,然后选择“均衡”或“最佳”。", language: "语言", autoDetect: "自动检测", extractedText: "提取的文字", noTextDetected: "此图片未检测到文字", characters: "{count} 个字符", submit: "提取文字", submitBatch: "提取文字({count} 个文件)", progressLabel: "正在提取文字", }, "ocr-pdf": { quality: "质量", language: "语言", autoDetect: "自动检测", pages: "页面", pagesPlaceholder: "全部, 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: "下载", defaultText: "在此输入文字", }, 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: "读取信息", reading: "读取中...", channelStats: "通道统计", yes: "是", no: "否", na: "无", failedToRead: "读取信息失败", }, 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: "网址", text: "文本", wifi: "WiFi", vcard: "vCard", email: "邮箱", phone: "电话", sms: "短信", styling: "样式", dotStyle: "点样式", cornerSquareStyle: "角方块样式", cornerDotStyle: "角点样式", foregroundColor: "前景色", bgColor: "背景色", logo: "徽标", downloadFormat: "下载格式", submit: "生成 QR 码", download: "下载 QR 码", }, "html-to-image": { modeUrl: "URL", modeHtml: "HTML 文件", htmlFile: "HTML 文件", url: "URL", urlPlaceholder: "https://snapotter.com", format: "输出格式", quality: "质量", devicePreset: "设备", viewportWidth: "宽度", viewportHeight: "高度", fullPage: "整页", submit: "截图", download: "下载截图", capturing: "正在截取网页...", errorTimeout: "页面加载超时", errorBlocked: "无法截取此 URL", errorUnavailable: "截图服务不可用", errorFailed: "截取页面失败", placeholder: "输入 URL 并点击截图", presets: { desktop: "桌面端", tablet: "平板", mobile: "手机", 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: "圆形裁剪", submitBatch: "圆形裁剪({count} 个文件)", progressLabel: "正在圆形裁剪", }, duotone: { shadow: "阴影颜色", highlight: "高光颜色", submit: "应用双色调", submitBatch: "应用双色调({count} 个文件)", progressLabel: "正在应用双色调", }, "image-pad": { target: "目标比例", color: "背景颜色", submit: "填充图像", submitBatch: "填充图像({count} 个文件)", progressLabel: "正在填充图像", }, pixelate: { blockSize: "块大小", submit: "像素化", submitBatch: "像素化({count} 个文件)", progressLabel: "正在像素化", }, vignette: { strength: "强度", color: "暗角颜色", submit: "应用暗角", submitBatch: "应用暗角({count} 个文件)", progressLabel: "正在应用暗角", }, "gif-webp": { submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换动画", }, histogram: { submit: "生成直方图", submitBatch: "生成直方图({count} 个文件)", progressLabel: "正在生成直方图", }, "lqip-placeholder": { width: "宽度", blur: "模糊", submit: "生成占位图", submitBatch: "生成占位图({count} 个文件)", progressLabel: "正在生成占位图", }, "sprite-sheet": { columns: "列数", padding: "间距", background: "背景颜色", submit: "创建精灵图", submitBatch: "创建精灵图", progressLabel: "正在创建精灵图", }, "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: "徽标", 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: "复制 标签", copyCssUrl: "复制 CSS url()", }, "barcode-generate": { text: "文本", type: "条形码类型", scale: "缩放", includeText: "包含文本", submit: "生成条形码", download: "下载条形码", }, "chart-maker": { kind: "图表类型", title: "标题", width: "宽度", height: "高度", submit: "创建图表", submitBatch: "创建图表({count} 个文件)", progressLabel: "正在创建图表", }, "enhance-faces-standalone": { model: "模型", fast: "快速", balanced: "均衡", best: "极致", }, "convert-video": { format: "输出格式", quality: "质量", high: "高", balanced: "均衡", small: "最小", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "compress-video": { quality: "压缩程度", light: "轻度", balanced: "均衡", strong: "强力", resolution: "分辨率", original: "原始", submit: "压缩", submitBatch: "压缩({count} 个文件)", progressLabel: "正在压缩", }, "trim-video": { start: "开始(秒)", end: "结束(秒)", precise: "逐帧精确(重新编码)", submit: "裁剪", submitBatch: "裁剪({count} 个文件)", progressLabel: "正在裁剪", }, "mute-video": { submit: "移除音频", submitBatch: "移除音频({count} 个文件)", progressLabel: "正在移除音频", }, "video-to-gif": { fps: "每秒帧数", width: "宽度 (px)", start: "开始(秒)", duration: "时长(秒)", submit: "创建 GIF", submitBatch: "创建 GIF({count} 个文件)", progressLabel: "正在创建 GIF", }, "resize-video": { preset: "预设", width: "宽度 (px)", height: "高度 (px)", hint: "留空其中一个维度以保持宽高比", submit: "调整大小", submitBatch: "调整大小({count} 个文件)", progressLabel: "正在调整大小", }, "crop-video": { width: "宽度 (px)", height: "高度 (px)", x: "X 偏移", y: "Y 偏移", submit: "裁剪", submitBatch: "裁剪({count} 个文件)", progressLabel: "正在裁剪", }, "rotate-video": { transform: "变换", cw90: "顺时针旋转 90°", ccw90: "逆时针旋转 90°", rotate180: "旋转 180°", hflip: "水平翻转", vflip: "垂直翻转", submit: "旋转", submitBatch: "旋转({count} 个文件)", progressLabel: "正在旋转", }, "change-fps": { fps: "每秒帧数", submit: "更改帧率", submitBatch: "更改帧率({count} 个文件)", progressLabel: "正在更改帧率", }, "video-color": { brightness: "亮度", contrast: "对比度", saturation: "饱和度", gamma: "伽马", submit: "应用", submitBatch: "应用({count} 个文件)", progressLabel: "正在调整颜色", }, "video-speed": { factor: "速度倍数", keepPitch: "保持原始音调", submit: "更改速度", submitBatch: "更改速度({count} 个文件)", progressLabel: "正在更改速度", }, "reverse-video": { hint: "仅限 5 分钟以内的片段", submit: "倒放", submitBatch: "倒放({count} 个文件)", progressLabel: "正在倒放", }, "video-loudnorm": { hint: "将音频标准化至 EBU R128 广播标准", submit: "标准化", submitBatch: "标准化({count} 个文件)", progressLabel: "正在标准化", }, "aspect-pad": { target: "目标比例", color: "背景颜色", colorHint: "HEX 颜色,例如 #000000", submit: "填充", submitBatch: "填充({count} 个文件)", progressLabel: "正在填充", }, "blur-pad": { target: "目标比例", blur: "模糊强度", submit: "填充", submitBatch: "填充({count} 个文件)", progressLabel: "正在填充", }, "watermark-video": { text: "水印文本", position: "位置", fontSize: "字号", opacity: "不透明度", color: "颜色", colorHint: "HEX 颜色,例如 #ffffff", submit: "添加水印", submitBatch: "添加水印({count} 个文件)", progressLabel: "正在添加水印", }, "stabilize-video": { smoothing: "平滑度", hint: "需要两次处理,耗时较长", submit: "防抖", submitBatch: "防抖({count} 个文件)", progressLabel: "正在防抖", }, "gif-to-video": { format: "输出格式", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "video-to-webp": { fps: "每秒帧数", width: "宽度 (px)", quality: "质量", loop: "循环动画", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "video-to-frames": { mode: "提取模式", modeAll: "所有帧", modeNth: "每隔 N 帧", modeTimestamps: "指定时间点", n: "每隔 N 帧提取", timestamps: "时间点(秒)", timestampsHint: "以逗号分隔,例如 0.5, 2, 4.5", format: "图像格式", submit: "提取帧", submitBatch: "提取帧({count} 个文件)", progressLabel: "正在提取帧", }, "merge-videos": { hint: "文件按上传顺序拼接", submit: "合并", submitBatch: "合并({count} 个文件)", progressLabel: "正在合并", }, "replace-audio": { hint: "先上传视频,再上传音频", submit: "替换音频", submitBatch: "替换音频({count} 个文件)", progressLabel: "正在替换音频", }, "burn-subtitles": { fontSize: "字号", hint: "上传视频和字幕文件(.srt 或 .vtt)", submit: "烧录字幕", submitBatch: "烧录字幕({count} 个文件)", progressLabel: "正在烧录字幕", }, "embed-subtitles": { language: "语言代码", languageHint: "三位 ISO 639-2 代码,例如 eng、spa、fra", submit: "嵌入字幕", submitBatch: "嵌入字幕({count} 个文件)", progressLabel: "正在嵌入字幕", }, "extract-subtitles": { submit: "提取字幕", submitBatch: "提取字幕({count} 个文件)", progressLabel: "正在提取字幕", }, "images-to-video": { secondsPerImage: "每张图片秒数", resolution: "分辨率", fps: "每秒帧数", submit: "创建视频", submitBatch: "创建视频({count} 个文件)", progressLabel: "正在创建幻灯片", }, "video-metadata": { hint: "元数据报告显示在结果中", submit: "清除元数据", submitBatch: "清除元数据({count} 个文件)", progressLabel: "正在清除元数据", }, "convert-audio": { format: "输出格式", bitrate: "比特率 (kbps)", sampleRate: "采样率 (Hz)", sampleRatePreserve: "保留原始", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "trim-audio": { start: "开始(秒)", end: "结束(秒)", submit: "裁剪", submitBatch: "裁剪({count} 个文件)", progressLabel: "正在裁剪", }, "extract-audio": { format: "输出格式", submit: "提取", submitBatch: "提取({count} 个文件)", progressLabel: "正在提取", }, "volume-adjust": { "gain-db": "增益 (dB)", submit: "调整音量", submitBatch: "调整音量({count} 个文件)", progressLabel: "正在调整音量", }, "normalize-audio": { hint: "EBU R128 响度标准化", submit: "标准化", submitBatch: "标准化({count} 个文件)", progressLabel: "正在标准化", }, "fade-audio": { "fade-in-s": "淡入(秒)", "fade-out-s": "淡出(秒)", submit: "应用淡入淡出", submitBatch: "应用淡入淡出({count} 个文件)", progressLabel: "正在应用淡入淡出", }, "reverse-audio": { submit: "倒放", submitBatch: "倒放({count} 个文件)", progressLabel: "正在倒放", }, "audio-speed": { factor: "速度倍数", submit: "更改速度", submitBatch: "更改速度({count} 个文件)", progressLabel: "正在更改速度", }, "pitch-shift": { semitones: "半音", hint: "不允许为 0 半音", submit: "变调", submitBatch: "变调({count} 个文件)", progressLabel: "正在变调", }, "audio-channels": { mode: "声道模式", "stereo-to-mono": "立体声转单声道", "mono-to-stereo": "单声道转立体声", swap: "交换左右声道", submit: "转换声道", submitBatch: "转换声道({count} 个文件)", progressLabel: "正在转换声道", }, "silence-removal": { "threshold-db": "静音阈值 (dB)", "min-silence-s": "最短静音时长(秒)", submit: "移除静音", submitBatch: "移除静音({count} 个文件)", progressLabel: "正在移除静音", }, "noise-reduction": { strength: "强度", light: "轻度", medium: "中度", strong: "强力", submit: "降噪", submitBatch: "降噪({count} 个文件)", progressLabel: "正在降噪", }, "merge-audio": { format: "输出格式", mp3: "MP3", wav: "WAV", flac: "FLAC", m4a: "M4A", "order-hint": "文件将按上传顺序合并", submit: "合并音频", submitBatch: "合并音频({count} 个文件)", progressLabel: "正在合并音频", }, "split-audio": { mode: "分割模式", time: "按时间", parts: "等分", silence: "按静音", "segment-s": "片段时长(秒)", "num-parts": "分割数量", "threshold-db": "静音阈值 (dB)", "min-silence-s": "最短静音时长(秒)", submit: "分割音频", submitBatch: "分割音频({count} 个文件)", progressLabel: "正在分割音频", }, "ringtone-maker": { "start-s": "开始时间(秒)", "duration-s": "时长(秒)", "max-hint": "最长 30 秒", submit: "创建铃声", submitBatch: "创建铃声({count} 个文件)", progressLabel: "正在创建铃声", }, "waveform-image": { width: "宽度 (px)", height: "高度 (px)", color: "波形颜色", submit: "生成波形", submitBatch: "生成波形({count} 个文件)", progressLabel: "正在生成波形", }, "audio-metadata": { strip: "清除所有元数据", title: "标题", artist: "艺术家", album: "专辑", submit: "应用元数据", submitBatch: "应用元数据({count} 个文件)", progressLabel: "正在应用元数据", }, "merge-pdf": { addFiles: "添加要合并的 PDF", needTwo: "至少需要两个 PDF", orderHint: "{count} 个 PDF 将按此顺序合并", submit: "合并", submitBatch: "合并({count} 个文件)", progressLabel: "正在合并", }, "split-pdf": { mode: "分割模式", range: "页码范围", rangeHint: "例如 1-3, 5, 7-z", everyN: "每部分页数", submit: "分割", submitBatch: "分割({count} 个文件)", progressLabel: "正在分割", }, "compress-pdf": { preset: "质量预设", screen: "屏幕(最小体积)", ebook: "电子书(均衡)", printer: "打印(最佳质量)", submit: "压缩", submitBatch: "压缩({count} 个文件)", progressLabel: "正在压缩", bestEffortHint: "尽力压缩的上限。基于图像的 PDF 会接近该大小;纯文本 PDF 可能无法缩小到此大小。", targetReached: "已达到你设定的 {target} 目标(结果:{size})。", targetMissed: "无法达到 {target}。可实现的最小体积为 {size},因为此 PDF 主要由文本或矢量图形组成,图像压缩无法将其缩小。", }, "rotate-pdf": { angle: "旋转角度", range: "页码范围", rangeHint: "例如 1-3, 5, 1-z(所有页面)", submit: "旋转", submitBatch: "旋转({count} 个文件)", progressLabel: "正在旋转", }, "convert-document": { format: "输出格式", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "convert-presentation": { format: "输出格式", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "convert-spreadsheet": { format: "输出格式", hint: "多工作表的工作簿仅导出第一个工作表为 CSV。", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "excel-to-pdf": { submit: "转换为 PDF", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "powerpoint-to-pdf": { submit: "转换为 PDF", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "word-to-pdf": { submit: "转换为 PDF", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "extract-pages": { range: "页码范围", rangeHint: "例如 1-3, 5, 7-z", submit: "提取", submitBatch: "提取({count} 个文件)", progressLabel: "正在提取", }, "remove-pages": { pages: "要删除的页面", pagesHint: "例如 2, 4-6, z(最后一页)", submit: "删除", submitBatch: "删除({count} 个文件)", progressLabel: "正在删除", }, "organize-pdf": { order: "页面顺序", orderHint: "例如 3,1,2 或 1-z(保持原序)", submit: "重新排序", submitBatch: "重新排序({count} 个文件)", progressLabel: "正在重新排序", }, "protect-pdf": { userPassword: "用户密码", ownerPassword: "所有者密码(可选)", ownerPasswordHint: "为空时默认使用用户密码", submit: "加密保护", submitBatch: "加密保护({count} 个文件)", progressLabel: "正在加密", }, "unlock-pdf": { password: "密码", submit: "解锁", submitBatch: "解锁({count} 个文件)", progressLabel: "正在解密", }, "repair-pdf": { submit: "修复", submitBatch: "修复({count} 个文件)", progressLabel: "正在修复", }, "linearize-pdf": { submit: "优化", submitBatch: "优化({count} 个文件)", progressLabel: "正在线性化", }, "grayscale-pdf": { submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "pdfa-convert": { submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "crop-pdf": { margin: "边距(点)", submit: "裁剪", submitBatch: "裁剪({count} 个文件)", progressLabel: "正在裁剪", }, "nup-pdf": { perSheet: "每张纸的页数", submit: "排列", submitBatch: "排列({count} 个文件)", progressLabel: "正在排列", }, "booklet-pdf": { perSheet: "每张纸的页数", submit: "创建小册子", submitBatch: "创建小册子({count} 个文件)", progressLabel: "正在创建小册子", }, "watermark-pdf": { text: "水印文字", position: "位置", fontSize: "字体大小", opacity: "不透明度", rotation: "旋转角度", submit: "添加水印", submitBatch: "添加水印({count} 个文件)", progressLabel: "正在添加水印", }, "pdf-page-numbers": { position: "位置", fontSize: "字体大小", submit: "添加页码", submitBatch: "添加页码({count} 个文件)", progressLabel: "正在添加页码", }, "flatten-pdf": { submit: "拼合", submitBatch: "拼合({count} 个文件)", progressLabel: "正在拼合", }, "sign-pdf": { yourSignatures: "您的签名", newSignature: "新建", clickToPlace: "点击签名即可将其放置到当前页面。", selectedSignature: "选中的签名", dragToAdjust: "拖动控制点可调整大小或旋转。", disclaimer: "添加可见的签名图像。这不是基于证书的数字签名。", signing: "正在签名…", signingPercent: "正在签名… {percent}%", downloadSigned: "下载已签名的 PDF", addFirst: "下载前请至少添加一个签名。", loadFailed: "无法显示此 PDF。文件可能已损坏或受密码保护;如果已加密,请先使用“PDF 解锁”工具移除密码。", pad: { title: "创建签名", draw: "手写", type: "输入", upload: "上传", color: "颜色", pen: "画笔", namePlaceholder: "输入您的姓名", yourName: "您的姓名", remember: "在此设备上记住", save: "保存并放置", uploadHint: "拖入 PNG / JPG,或点击选择。透明 PNG 效果最佳。", }, }, "redact-pdf": { terms: "要涂黑的内容", termsHint: "每行一个词条(最多 50 个)", caseSensitive: "区分大小写", submit: "涂黑", submitBatch: "涂黑({count} 个文件)", progressLabel: "正在涂黑", }, "pdf-to-text": { submit: "提取文本", submitBatch: "提取文本({count} 个文件)", progressLabel: "正在提取", }, "pdf-to-word": { hint: "适用于文字型 PDF;扫描页面需要 OCR", submit: "转换为 Word", submitBatch: "转换为 Word({count} 个文件)", progressLabel: "正在转换", }, "pdf-metadata": { title: "标题", author: "作者", subject: "主题", keywords: "关键词", submit: "设置元数据", submitBatch: "设置元数据({count} 个文件)", progressLabel: "正在设置元数据", }, "html-to-pdf": { hint: "出于隐私考虑,已禁用远程资源。", submit: "转换为 PDF", submitBatch: "转换为 PDF({count} 个文件)", progressLabel: "正在转换", }, "markdown-to-docx": { submit: "转换为 DOCX", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "markdown-to-html": { hint: "源文件中的远程图片将在输出中保持原样。", submit: "转换为 HTML", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "markdown-to-pdf": { hint: "出于隐私考虑,已禁用远程资源。", submit: "转换为 PDF", submitBatch: "转换为 PDF({count} 个文件)", progressLabel: "正在转换", }, "epub-convert": { format: "输出格式", hint: "不会获取书中的远程资源。", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "to-epub": { submit: "转换为 EPUB", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "csv-excel": { sheet: "工作表编号", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "csv-json": { pretty: "美化输出", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "json-xml": { pretty: "美化输出", submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "split-csv": { rowsPerFile: "每个文件的行数", keepHeader: "每个文件保留表头", submit: "分割", submitBatch: "分割({count} 个文件)", progressLabel: "正在分割", }, "merge-csvs": { submit: "合并", submitBatch: "合并({count} 个文件)", progressLabel: "正在合并", }, "yaml-json": { submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "xml-to-csv": { submit: "转换", submitBatch: "转换({count} 个文件)", progressLabel: "正在转换", }, "create-zip": { submit: "创建 ZIP", submitBatch: "创建 ZIP({count} 个文件)", progressLabel: "正在压缩", }, "extract-zip": { submit: "解压", submitBatch: "解压({count} 个文件)", progressLabel: "正在解压", }, }, 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: "预览区域", disabledByAdmin: "此工具已被管理员禁用", browseOtherTools: "浏览其他工具", privacyNote: "文件在您的服务器上处理,不会离开您的网络", applyAndDownload: "应用并下载", andMore: "及其他 {count} 个", importFromFiles: "从文件库导入", saveToFiles: "保存到文件库", savedToFiles: "已保存到文件库", librarySaveTitle: "此文件来自文件库", librarySaveAsNew: "将结果保存为新文件", librarySaveAsNewHint: "原文件保留在文件库中", libraryOverwrite: "覆盖原文件", libraryOverwriteHint: "结果将替换文件库中的原文件", viewInFiles: "在文件库中查看", adjustSettings: "调整设置", startOver: "使用新文件重新开始", newFile: "新文件", previewUnavailable: "处理完成后可预览", generatePreview: "生成预览", previewFailed: "预览生成失败", backToTools: "返回工具", original: "原始", processed: "已处理", saved: "已保存", noChange: "无变化", download: "下载", settingsSaved: "您的设置已保存。", tryAgain: "重试", tryDifferentFile: "尝试其他文件", batchPartialSuccess: "{total} 个中已处理 {success} 个,{failed} 个失败。", dataResultsHint: "结果显示在上方。请使用结果面板中的复制按钮。", downloadAsFile: "下载为文件", downloadAll: "全部下载", downloadFiles: "下载 {count} 个文件", audioDecodeUnsupported: "此音频格式无法在浏览器中预览", }, homePage: { generatingPreview: "正在生成预览...", loadingPreview: "正在加载预览...", changeFile: "更换文件", quickActions: "快捷操作", allTools: "所有工具", searchPlaceholder: "搜索 {count} 个工具...", recent: "最近", pinned: "已固定", popular: "热门", browseByCategory: "按分类浏览", gettingStarted: "开始使用", noToolsMatch: "没有匹配 '{query}' 的工具", clearSearch: "清除搜索", requestToolCta: "请求 '{query}'", requestToolBelowResults: "找不到?请求一个工具", all: "全部", documents: "PDF", data: "文件", pdf: "PDF", files: "文件", toolCount: "{count} 个工具", heading: "SnapOtter 工具", }, 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: "形状", fill: "填充", stroke: "描边", strokeWidth: "宽度", cornerRadius: "圆角", sides: "边数", points: "角数", dashStyle: "线型", solid: "实线", dashed: "虚线", dotted: "点线", none: "无", opacity: "不透明度", rectangle: "矩形", ellipse: "椭圆", line: "直线", arrow: "箭头", polygon: "多边形", star: "星形", }, }, settings: { heading: "设置", nav: { general: "通用", systemSettings: "系统设置", security: "安全", people: "成员", teams: "团队", roles: "角色", auditLog: "审计日志", usage: "使用情况", apiKeys: "API 密钥", aiFeatures: "AI 功能", tools: "工具", 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: "下载支持包", supportBundleDescription: "下载包含脱敏配置、日志和任务数据的诊断压缩包,用于故障排查。", supportBundleFailed: "下载支持包失败。", }, privacy: { title: "隐私", description: "匿名产品分析有助于改进 SnapOtter。该功能默认开启,并由管理员为整个实例统一设置。", analyticsLabel: "匿名产品分析", analyticsDescription: "共享匿名使用数据(运行了哪些工具、时长、错误代码)和崩溃报告。不含 IP 地址,不含账户身份。我们绝不收集您的文件名、文件内容、OCR 输出、图像元数据或文档文本。关闭此项即可停止所有这些收集。", }, security: { heading: "安全", description: "密码和认证设置。", changePasswordHeading: "修改密码", currentPasswordPlaceholder: "当前密码", newPasswordPlaceholder: "新密码", confirmPasswordPlaceholder: "确认新密码", passwordsMismatch: "两次密码输入不一致", passwordTooShort: "密码长度至少为 4 个字符", changeSuccess: "密码修改成功", changeFailed: "密码修改失败", currentPasswordIncorrect: "当前密码不正确", changePasswordButton: "修改密码", loginAttemptLimitNote: "登录尝试限制可在系统设置中配置。", twoFactorHeading: "双重身份验证", twoFactorDescription: "使用身份验证器应用为您的账户添加额外一层安全保护。", twoFactorEnabledStatus: "双重身份验证已启用。", twoFactorDisabledStatus: "双重身份验证尚未启用。", enableTwoFactorButton: "启用双重身份验证", disableTwoFactorButton: "禁用双重身份验证", twoFactorScanQr: "使用您的身份验证器应用(如 Google Authenticator、Authy 或 1Password)扫描此二维码。", twoFactorManualEntry: "无法扫描二维码?请手动输入此密钥:", twoFactorRecoveryCodesHeading: "恢复代码", twoFactorRecoveryCodesDescription: "请将这些代码妥善保存。如果您无法访问身份验证器应用,每个代码均可用于登录一次。", twoFactorCopyRecoveryCodes: "复制代码", twoFactorCodesCopied: "已复制", twoFactorCopyFailed: "无法自动复制。请选择上方的代码并手动复制。", twoFactorEnterCode: "输入应用中的 6 位数验证码以确认设置。", twoFactorCodePlaceholder: "000000", twoFactorConfirmButton: "确认并启用", twoFactorCancelButton: "取消", twoFactorEnableSuccess: "双重身份验证现已启用。", twoFactorDisableSuccess: "双重身份验证已禁用。", twoFactorDisablePrompt: "输入您当前的身份验证器验证码以禁用双重身份验证。", adminHeading: "管理员安全设置", adminDescription: "企业安全策略设置。适用于所有用户。", sessionIdleTimeout: "会话空闲超时(分钟)", sessionIdleTimeoutDesc: "自动注销空闲会话。0 = 禁用。", maxSessionsPerUser: "每用户最大会话数", maxSessionsPerUserDesc: "限制每用户的并发会话数。0 = 无限制。", mfaPolicy: "MFA 策略", mfaPolicyDesc: "要求用户使用多因素认证。", mfaPolicyOptional: "可选", mfaPolicyAdminsOnly: "仅管理员必须", mfaPolicyRequired: "所有用户必须", ssoEnforcement: "SSO 强制登录", ssoEnforcementDesc: "要求所有非紧急访问用户使用 SSO 登录。", ssoBreakGlassUsername: "紧急访问管理员用户名", ssoBreakGlassUsernameDesc: "强制 SSO 时,此管理员仍可使用本地凭据登录。", passwordMinLength: "最小密码长度", passwordMinLengthDesc: "密码所需的最少字符数。", passwordRequireUppercase: "要求大写字母", passwordRequireUppercaseDesc: "要求至少包含一个大写字母。", passwordRequireNumber: "要求数字", passwordRequireNumberDesc: "要求至少包含一个数字。", passwordRequireSpecial: "要求特殊字符", passwordRequireSpecialDesc: "要求至少包含一个特殊字符。", passwordPolicyHeading: "密码策略", securitySettingsSaved: "安全设置已保存", securitySettingsFailed: "保存安全设置失败", }, 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: "该名称的团队已存在", teamStorageQuota: "存储配额 (MB)", teamStorageQuotaDesc: "团队最大存储空间(MB)。留空表示无限制。", teamRetentionHours: "保留时间(小时)", teamRetentionHoursDesc: "此团队的处理文件保留时间。留空使用全局默认值。", quotaSaved: "团队设置已保存", }, 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: "流水线", 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: "使用情况", description: "来自任务和文件存储的本地使用统计。", periodLabel: "时间段", days7: "7 天", days30: "30 天", days90: "90 天", jobsPerDayHeading: "每日任务数", topToolsHeading: "热门工具", perUserHeading: "用户用量", durationsHeading: "耗时百分位", noData: "该时段无数据。", dayColumn: "日期", totalColumn: "总计", completedColumn: "已完成", failedColumn: "失败", toolColumn: "工具", runsColumn: "运行次数", userColumn: "用户", bytesInColumn: "输入字节", poolColumn: "队列", p50Column: "p50", p95Column: "p95", storageHeading: "文件库存储", storageFiles: "{count} 个文件", unknownUser: "(未知)", storageByTeam: "按团队存储", teamColumn: "团队", storageColumn: "存储", usersColumn: "用户", }, 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: "服务器启动时清理旧的临时文件", }, dataRetention: { title: "数据保留", fileMaxAgeHours: "处理文件保留时间(小时)", fileMaxAgeHoursDesc: "上传和处理文件的保留时长。默认:72 小时。", jobsRetentionDays: "任务记录保留时间(天)", jobsRetentionDaysDesc: "任务元数据的保留时长。0 = 永久保留。默认:30 天。", auditRetentionDays: "审计日志保留时间(天)", auditRetentionDaysDesc: "审计日志条目的保留时长。0 = 永久保留。默认:永久。", }, aiFeatures: { title: "AI 功能", description: "管理用于高级文件处理的 AI 模型包。", installAll: "全部安装", diskUsage: "磁盘使用量:{size}", sizeOnDisk: "占用磁盘 {size}", installed: "已安装", notInstalled: "未安装", queued: "排队中", install: "安装", repair: "修复", uninstall: "卸载", installing: "安装中...", importBundle: "导入包", importDescription: "导入已签名的 OCR 运行时或旧版 AI 包以供离线使用。", importButton: "从文件导入", importing: "导入中...", importSuccess: "包导入成功。", importError: "包导入失败:{error}", importType: "包类型", importOcr: "高精度 OCR 包", importLegacy: "旧版 AI 包", importOcrIndex: "已签名的 OCR 索引 (.json)", importOcrArchive: "OCR 运行时归档 (.tar.gz)", importLegacyArchive: "旧版包归档 (.tar.gz)", resetTitle: "重置 AI 环境", resetDescription: "删除所有已安装的 AI 功能和已下载的模型,然后重新开始。如果更新后 AI 工具出现异常,且重新安装包也无法解决问题,请使用此功能。", resetButton: "重置", resetConfirmMessage: "此操作将删除所有已安装的 AI 功能和模型,你需要从 Hugging Face 重新安装它们。此操作无法撤销。", resetFailed: "重置失败:{error}", }, about: { heading: "关于", appName: "SnapOtter", appDescription: "自托管、隐私优先的文件处理套件,包含 200+ 种工具。转换、压缩、编辑、转录、OCR,自动化图片、视频、音频、PDF 和文件工作流,无需将数据发送到云端。", versionLabel: "版本:", linksHeading: "链接", githubLink: "GitHub 仓库", docsLink: "文档", apiRefLink: "API 参考(Swagger)", licenseLabel: "许可证:", licenseDescription: "SnapOtter 是基于 GNU Affero 通用公共许可证 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: "认证错误。请重试。", samlAuthFailed: "SAML 认证失败,请重试。", samlUserNotAuthorized: "您的账户无权访问此应用。请联系管理员。", samlUserLimitReached: "已达用户上限。请联系管理员。", ssoEnforcedLocalRestricted: "本地登录仅限授权管理员使用。", mfaRequired: "请输入验证码", mfaRecoveryHint: "也可以使用恢复码", verify: "验证", verifying: "验证中...", mfaInvalidCode: "验证码无效,请重试。", mfaEnrollmentRequired: "您的组织要求启用多因素认证。请在账户设置中设置 MFA。", methodSaml: "SAML", passwordManagedByProvider: "密码修改由您的身份提供商管理。", enterUsername: "输入用户名", enterPassword: "输入密码", heroTitle: "您的文件,由您掌控。", heroSubtitle: "您需要的每一种工具。", rotatingPhrases: [ "无需注册,无需账号。", "永不上传到云端。", "100% 本地处理。", "免费,永远免费。", "无限制,无隐藏上限。", "完全离线可用。", "无限批量处理。", "200+ 种工具。", "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: "已保存", templatesLabel: "模板", 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: "暂无步骤", searchToolsPlaceholder: "搜索工具...", step: "步骤", modalityWarning: "模态不匹配", modalityWarningTooltip: "此步骤需要 {expected},但接收到 {received};运行管道时可能会失败。", }, nav: { tools: "工具", reader: "阅读器", automate: "自动化", editor: "编辑器", files: "文件", help: "帮助", settings: "设置", grid: "网格", }, files: { myFiles: "我的文件", recentTab: "最近", uploadTab: "上传文件", fileDetailsAriaLabel: "文件详情", fileDetailsHeading: "文件详情", searchPlaceholder: "搜索文件...", selectedCount: "已选择 {count} 个", fileCount: "{count} 个文件", fileCountSingular: "{count} 个文件", noFilesFound: "未找到文件", selectFilePrompt: "选择文件查看详情", openFile: "打开文件", selectFile: "选择文件", openInPipeline: "在流水线中打开", dropFilesHere: "将文件拖放到此处", orClickToSelect: "或点击选择文件", name: "名称", format: "格式", size: "大小", dimensions: "尺寸", version: "版本", toolsUsed: "使用的工具", none: "无", delete: "删除", pipeline: "流水线", download: "下载", }, dropzone: { unsupportedFileType: "此工具不支持该文件类型", urlFetchFailed: "无法从 URL 获取图片", ariaLabel: "文件拖放区域", dropPrompt: "将图片拖放到此处", browseOrPaste: "使用上传按钮,或从剪贴板粘贴", uploadButton: "上传", defaultFormats: "图片、视频、音频、PDF、文件及 150+ 种格式", orSeparator: "或", urlPlaceholder: "粘贴图片 URL...", urlLoadingIndicator: "...", addUrlButton: "添加", importMultipleUrls: "导入多个 URL...", filesSelected: "已选择 {count} 个文件", dropToAdd: "放下以添加文件", dropToReplace: "放下以替换文件", }, reviewPanel: { processedResultAlt: "处理结果", sizeLabel: "大小:{size}", typeLabel: "类型:{type}", processedLabel: "处理时间:{time}", undoButton: "撤销", downloadButton: "下载", openInEditor: "在编辑器中打开", reviewHeading: "审查", continueEditing: "继续编辑", }, features: { notEnabledTitle: "功能未启用", notEnabledDescription: "此功能未启用。请让管理员在设置中启用。", requiresDownload: "此功能需要额外下载(约 {size})", retryButton: "重试", queued: "已加入安装队列...", enableButton: "启用 {name}", repairRequired: "需要修复", repairDescription: "部分模型文件缺失或损坏。修复将重新下载这些文件。", repairButton: "修复 {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: "前往图片信息", processFile: "处理文件", downloadResult: "下载结果", }, resources: { heading: "资源", githubLink: "GitHub 仓库", reportIssueLink: "报告问题", docsLink: "文档", apiRefLink: "API 参考(Swagger)", }, versionLabel: "SnapOtter v{version}", }, errors: { generic: "发生错误", offline: "您已离线", reconnecting: "正在重新连接服务器...", connected: "已连接", processingFailed: "此文件处理失败", timeout: "请求超时。服务器可能过载。请重试。", networkError: "网络错误。请检查您的连接。", invalidCredentials: "用户名或密码错误", connectionError: "连接错误", }, sidebar: { sponsor: "支持我们", tools: "工具", grid: "网格", automate: "自动化", editor: "编辑器", files: "文件", help: "帮助", settings: "设置", }, toolCard: { pin: "固定", unpin: "取消固定", }, appLayout: { mobileNavTools: "工具", mobileNavAutomate: "自动化", mobileNavEditor: "编辑器", mobileNavFiles: "文件", mobileNavSettings: "设置", }, a11y: { sponsorLink: "在 GitHub Sponsors 上支持 SnapOtter", skipToContent: "跳到主要内容", openSidebar: "打开侧边栏", closeSidebar: "关闭侧边栏", closeSettings: "关闭设置", closeHelp: "关闭帮助", closeDialog: "关闭对话框", zoomIn: "放大", zoomOut: "缩小", fitToView: "适应视图", actualSize: "实际大小", pan: "平移", previousImage: "上一个文件", nextImage: "下一个文件", imageArea: "预览区域", imageViewer: "文件查看器", fileDropZone: "文件拖放区域", imageDropZone: "文件拖放区域", beforeAfterSlider: "前后对比滑块", imageControls: "预览控件", zoomControls: "缩放控件", dragToReorder: "拖动以重新排序", whiteBackground: "白色背景", blackBackground: "黑色背景", expandPanel: "展开面板", collapsePanel: "折叠面板", swapDimensions: "交换尺寸", applyCrop: "应用裁剪", cancelCrop: "取消裁剪", fontFamily: "字体", textColor: "文字颜色", flipHorizontal: "水平翻转", flipVertical: "垂直翻转", hexColorValue: "HEX 颜色值", backgroundColor: "背景颜色", foregroundColor: "前景颜色", swapColors: "交换前景和背景颜色", resetColors: "重置为默认黑白", foregroundHex: "前景颜色 HEX 值", undo: "撤销", redo: "重做", layers: "图层", addLayer: "添加图层", deleteLayer: "删除图层", cancelOperation: "取消操作", fill: "填充", fileDetails: "文件详情", language: "语言", selected: "已选择", deleteKey: "删除密钥", editRole: "编辑角色", deleteRole: "删除角色", notInstalled: "未安装", queued: "排队安装中", installing: "安装中", imageNOfTotal: "图片 {n}/{total}", processingComplete: "图片处理成功", processingFailed: "处理失败", settingsDialog: "设置", helpDialog: "帮助", navigationMenu: "导航", homeLink: "SnapOtter 首页", }, pipelineTemplates: { "web-optimize": { name: "网页优化", description: "调整尺寸、转换为 WebP 并压缩图片,以便在网页上快速加载。", }, "email-friendly": { name: "适合邮件", description: "将图片缩小到足够小,以便附加到电子邮件中。", }, "privacy-scrub": { name: "隐私清理", description: "去除 EXIF、GPS 和其他元数据,然后压缩。", }, "social-square": { name: "社交方图", description: "裁剪为 1:1 方形并压缩,用于社交媒体帖子。", }, "watermark-batch": { name: "批量水印", description: "在图片上加盖文字水印,然后压缩。", }, "shrink-pdf-email": { name: "为邮件缩小 PDF", description: "拼合并大力压缩 PDF,使其符合邮件大小限制。", }, "podcast-polish": { name: "播客润色", description: "去除静音、统一响度,并为录音添加淡入淡出。", }, "cut-out-subject": { name: "抠出主体", description: "用 AI 去除背景,并压缩透明的抠图。", }, "restore-old-photo": { name: "修复老照片", description: "用 AI 修复、上色并放大老旧或受损的照片。", }, }, } as const; export default zhCN;