mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(tools)!: SnapOtter 2.0 phase 4 wave 1: 45 core tools across all modalities (#219)
This commit is contained in:
@@ -47,6 +47,10 @@ export const zhCN: TranslationKeys = {
|
||||
utilities: "实用工具",
|
||||
layout: "布局与排版",
|
||||
format: "格式与转换",
|
||||
video: "Video",
|
||||
audio: "Audio",
|
||||
documents: "PDF & Documents",
|
||||
data: "Data Files",
|
||||
ai: "AI 工具",
|
||||
},
|
||||
modalities: {
|
||||
@@ -227,6 +231,74 @@ export const zhCN: TranslationKeys = {
|
||||
name: "图片转 Base64",
|
||||
description: "将图片转换为 Base64 字符串,可嵌入 HTML、CSS 等",
|
||||
},
|
||||
"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",
|
||||
},
|
||||
"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",
|
||||
},
|
||||
"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",
|
||||
},
|
||||
"word-to-pdf": {
|
||||
name: "Word to PDF",
|
||||
description: "Convert Word documents to PDF",
|
||||
},
|
||||
"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",
|
||||
},
|
||||
pipeline: { name: "Pipeline 构建器", description: "将多个工具串联为工作流" },
|
||||
processing: { canceled: "Processing canceled" },
|
||||
mediaPlayer: {
|
||||
@@ -1174,6 +1246,133 @@ export const zhCN: TranslationKeys = {
|
||||
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",
|
||||
},
|
||||
"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",
|
||||
},
|
||||
"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",
|
||||
},
|
||||
"word-to-pdf": {
|
||||
submit: "Convert to PDF",
|
||||
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",
|
||||
},
|
||||
},
|
||||
urlImport: {
|
||||
title: "从 URL 导入",
|
||||
@@ -1715,7 +1914,7 @@ export const zhCN: TranslationKeys = {
|
||||
heading: "关于",
|
||||
appName: "SnapOtter",
|
||||
appDescription:
|
||||
"自托管、隐私优先的图片处理套件,包含 53 种工具。调整大小、压缩、转换、加水印,自动化您的图片工作流,无需将数据发送到云端。",
|
||||
"自托管、隐私优先的图片处理套件,包含 70+ 种工具。调整大小、压缩、转换、加水印,自动化您的图片工作流,无需将数据发送到云端。",
|
||||
versionLabel: "版本:",
|
||||
linksHeading: "链接",
|
||||
githubLink: "GitHub 仓库",
|
||||
@@ -1760,7 +1959,7 @@ export const zhCN: TranslationKeys = {
|
||||
"无限制,无隐藏上限。",
|
||||
"完全离线可用。",
|
||||
"无限批量处理。",
|
||||
"53 种图片工具。",
|
||||
"70+ 种图片工具。",
|
||||
"15 个 AI 模型,在你自己的设备上运行。",
|
||||
"基于 Sharp 构建,闪电般快速。",
|
||||
"支持内网隔离部署。",
|
||||
|
||||
Reference in New Issue
Block a user