mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
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.
3281 lines
107 KiB
TypeScript
3281 lines
107 KiB
TypeScript
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;
|