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 ar: TranslationKeys = {
|
||||
utilities: "الأدوات المساعدة",
|
||||
layout: "التخطيط والتكوين",
|
||||
format: "التنسيق والتحويل",
|
||||
video: "Video",
|
||||
audio: "Audio",
|
||||
documents: "PDF & Documents",
|
||||
data: "Data Files",
|
||||
ai: "أدوات AI",
|
||||
},
|
||||
modalities: {
|
||||
@@ -272,6 +276,74 @@ export const ar: 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: "ربط عدة أدوات في سير عمل واحد",
|
||||
@@ -1231,6 +1303,133 @@ export const ar: 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: "استيراد من روابط",
|
||||
@@ -1775,7 +1974,7 @@ export const ar: TranslationKeys = {
|
||||
heading: "حول",
|
||||
appName: "SnapOtter",
|
||||
appDescription:
|
||||
"مجموعة أدوات معالجة صور ذاتية الاستضافة تركز على الخصوصية مع 53 أداة. تغيير الحجم والضغط والتحويل والعلامات المائية وأتمتة سير عمل الصور دون إرسال البيانات إلى السحابة.",
|
||||
"مجموعة أدوات معالجة صور ذاتية الاستضافة تركز على الخصوصية مع 70+ أداة. تغيير الحجم والضغط والتحويل والعلامات المائية وأتمتة سير عمل الصور دون إرسال البيانات إلى السحابة.",
|
||||
versionLabel: "الإصدار:",
|
||||
linksHeading: "روابط",
|
||||
githubLink: "مستودع GitHub",
|
||||
@@ -1820,7 +2019,7 @@ export const ar: TranslationKeys = {
|
||||
"بلا حدود. بلا قيود خفية.",
|
||||
"يعمل بدون إنترنت.",
|
||||
"معالجة جماعية بلا حدود.",
|
||||
"53 أداة للصور.",
|
||||
"70+ أداة للصور.",
|
||||
"15 نموذج AI. على جهازك.",
|
||||
"سريع كالبرق. مبني على Sharp.",
|
||||
"يعمل في بيئات معزولة.",
|
||||
|
||||
Reference in New Issue
Block a user