refactor(shared): modality-scoped tool categories, dissolve ai category

Replace the flat 12-category structure with 27 modality-scoped
sub-categories. The cross-modality "ai" category is dissolved: each
AI tool moves into its natural modality's sub-category (e.g.
remove-background -> image/enhance, auto-subtitles -> video/subtitles,
ocr -> documents/convert, transcribe-audio -> audio/convert).

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

No tool IDs, routes, or backend behavior changed. Category labels
updated across all 21 locales.
This commit is contained in:
SnapOtter
2026-06-13 14:45:06 +08:00
parent 492da820f8
commit 7daaa11e7d
23 changed files with 532 additions and 241 deletions
+127 -110
View File
@@ -2,18 +2,35 @@ import { AUDIO_INPUTS, IMAGE_INPUTS, SUBTITLE_INPUTS, VIDEO_INPUTS } from "./mod
import type { CategoryInfo, SocialMediaPreset, Tool } from "./types.js";
export const CATEGORIES: CategoryInfo[] = [
// Image
{ id: "essentials", name: "Essentials", icon: "Layers", color: "#3B82F6" },
{ id: "optimization", name: "Optimization", icon: "Zap", color: "#10B981" },
{ id: "adjustments", name: "Adjustments", icon: "SlidersHorizontal", color: "#8B5CF6" },
{ id: "enhance", name: "Enhance & AI", icon: "Sparkles", color: "#F59E0B" },
{ id: "watermark", name: "Watermark & Overlay", icon: "Stamp", color: "#EF4444" },
{ id: "utilities", name: "Utilities", icon: "Wrench", color: "#6366F1" },
{ id: "layout", name: "Layout & Composition", icon: "LayoutGrid", color: "#EC4899" },
{ id: "utilities", name: "Utilities", icon: "Wrench", color: "#6366F1" },
{ id: "optimization", name: "Optimization", icon: "Zap", color: "#10B981" },
{ id: "format", name: "Format & Conversion", icon: "FileType", color: "#14B8A6" },
{ id: "video", name: "Video", icon: "Video", color: "#EF4444" },
{ id: "audio", name: "Audio", icon: "AudioLines", color: "#10B981" },
{ id: "documents", name: "PDF & Documents", icon: "FileText", color: "#8B5CF6" },
// Video
{ id: "video-edit", name: "Edit", icon: "Video", color: "#EF4444" },
{ id: "video-convert", name: "Convert", icon: "FileVideo", color: "#F97316" },
{ id: "video-effects", name: "Effects & Compose", icon: "Wand2", color: "#EC4899" },
{ id: "video-subtitles", name: "Subtitles", icon: "Captions", color: "#8B5CF6" },
{ id: "video-metadata", name: "Metadata", icon: "Tags", color: "#6366F1" },
// Audio
{ id: "audio-edit", name: "Edit", icon: "AudioLines", color: "#10B981" },
{ id: "audio-convert", name: "Convert", icon: "FileAudio", color: "#14B8A6" },
{ id: "audio-effects", name: "Effects & Compose", icon: "Waves", color: "#06B6D4" },
{ id: "audio-metadata", name: "Metadata", icon: "Tags", color: "#6366F1" },
// Documents
{ id: "pdf-organize", name: "Organize", icon: "FolderOpen", color: "#8B5CF6" },
{ id: "pdf-edit", name: "Edit & Annotate", icon: "PenLine", color: "#3B82F6" },
{ id: "pdf-security", name: "Security", icon: "Lock", color: "#EF4444" },
{ id: "pdf-optimize", name: "Optimize", icon: "Zap", color: "#10B981" },
{ id: "doc-convert", name: "Convert", icon: "FileType", color: "#14B8A6" },
// Data & Files
{ id: "data", name: "Data Files", icon: "Table", color: "#F59E0B" },
{ id: "ai", name: "AI Tools", icon: "Sparkles", color: "#F59E0B" },
{ id: "archives", name: "Archives", icon: "FolderArchive", color: "#6366F1" },
];
export const TOOLS: Tool[] = [
@@ -186,12 +203,12 @@ export const TOOLS: Tool[] = [
acceptedInputs: IMAGE_INPUTS,
executionHint: "fast",
},
// AI Tools
// Enhance & AI
{
id: "remove-background",
name: "Remove Background",
description: "AI-powered background removal",
category: "ai",
category: "enhance",
icon: "Eraser",
route: "/remove-background",
modality: "image",
@@ -202,7 +219,7 @@ export const TOOLS: Tool[] = [
id: "upscale",
name: "Image Upscaling",
description: "AI super-resolution enhancement",
category: "ai",
category: "enhance",
icon: "ZoomIn",
route: "/upscale",
modality: "image",
@@ -213,7 +230,7 @@ export const TOOLS: Tool[] = [
id: "erase-object",
name: "Object Eraser",
description: "Remove unwanted objects with AI",
category: "ai",
category: "enhance",
icon: "Wand",
route: "/erase-object",
modality: "image",
@@ -224,7 +241,7 @@ export const TOOLS: Tool[] = [
id: "ocr",
name: "OCR / Text Extraction",
description: "Extract text from images",
category: "ai",
category: "doc-convert",
icon: "ScanText",
route: "/ocr",
modality: "image",
@@ -235,7 +252,7 @@ export const TOOLS: Tool[] = [
id: "ocr-pdf",
name: "PDF OCR",
description: "Extract text from PDF documents using AI-powered OCR",
category: "ai",
category: "doc-convert",
icon: "ScanText",
route: "/ocr-pdf",
modality: "document",
@@ -246,7 +263,7 @@ export const TOOLS: Tool[] = [
id: "blur-faces",
name: "Face / PII Blur",
description: "Auto-detect and blur faces and sensitive info",
category: "ai",
category: "enhance",
icon: "EyeOff",
route: "/blur-faces",
modality: "image",
@@ -257,7 +274,7 @@ export const TOOLS: Tool[] = [
id: "smart-crop",
name: "Smart Crop",
description: "Smart subject, face, or trim-based cropping",
category: "ai",
category: "enhance",
icon: "Crosshair",
route: "/smart-crop",
modality: "image",
@@ -268,7 +285,7 @@ export const TOOLS: Tool[] = [
id: "image-enhancement",
name: "Image Enhancement",
description: "One-click auto-improve with smart analysis",
category: "ai",
category: "enhance",
icon: "Sparkles",
route: "/image-enhancement",
modality: "image",
@@ -279,7 +296,7 @@ export const TOOLS: Tool[] = [
id: "enhance-faces",
name: "Face Enhancement",
description: "Restore and enhance faces with AI",
category: "ai",
category: "enhance",
icon: "ScanFace",
route: "/enhance-faces",
modality: "image",
@@ -290,7 +307,7 @@ export const TOOLS: Tool[] = [
id: "colorize",
name: "AI Colorization",
description: "Convert B&W photos to full color with AI",
category: "ai",
category: "enhance",
icon: "Palette",
route: "/colorize",
modality: "image",
@@ -301,7 +318,7 @@ export const TOOLS: Tool[] = [
id: "noise-removal",
name: "Noise Removal",
description: "AI-powered noise and grain removal",
category: "ai",
category: "enhance",
icon: "AudioLines",
route: "/noise-removal",
modality: "image",
@@ -312,7 +329,7 @@ export const TOOLS: Tool[] = [
id: "red-eye-removal",
name: "Red Eye Removal",
description: "AI-detect and fix red eye in flash photos",
category: "ai",
category: "enhance",
icon: "ScanEye",
route: "/red-eye-removal",
modality: "image",
@@ -323,7 +340,7 @@ export const TOOLS: Tool[] = [
id: "restore-photo",
name: "Photo Restoration",
description: "Fix scratches, tears, and damage on old photos with AI",
category: "ai",
category: "enhance",
icon: "Undo2",
route: "/restore-photo",
modality: "image",
@@ -334,7 +351,7 @@ export const TOOLS: Tool[] = [
id: "passport-photo",
name: "Passport Photo",
description: "AI-powered passport and ID photo generator",
category: "ai",
category: "utilities",
icon: "UserCheck",
route: "/passport-photo",
modality: "image",
@@ -345,7 +362,7 @@ export const TOOLS: Tool[] = [
id: "content-aware-resize",
name: "Content-Aware Resize",
description: "Seam carving resize that preserves important content with face protection",
category: "ai",
category: "enhance",
icon: "Scaling",
route: "/content-aware-resize",
modality: "image",
@@ -356,7 +373,7 @@ export const TOOLS: Tool[] = [
id: "ai-canvas-expand",
name: "AI Canvas Expand",
description: "Expand canvas with AI-powered fill",
category: "ai",
category: "enhance",
icon: "Expand",
route: "/ai-canvas-expand",
modality: "image",
@@ -367,7 +384,7 @@ export const TOOLS: Tool[] = [
id: "transcribe-audio",
name: "Transcribe Audio",
description: "Convert speech to text with AI-powered transcription",
category: "ai",
category: "audio-convert",
icon: "MicVocal",
route: "/transcribe-audio",
modality: "audio",
@@ -378,7 +395,7 @@ export const TOOLS: Tool[] = [
id: "auto-subtitles",
name: "Auto Subtitles",
description: "Generate subtitle files from video audio tracks",
category: "ai",
category: "video-subtitles",
icon: "Captions",
route: "/auto-subtitles",
modality: "video",
@@ -389,7 +406,7 @@ export const TOOLS: Tool[] = [
id: "transparency-fixer",
name: "PNG Transparency Fixer",
description: "Fix fake transparent PNGs in one click",
category: "ai",
category: "enhance",
icon: "ShieldCheck",
route: "/transparency-fixer",
modality: "image",
@@ -400,7 +417,7 @@ export const TOOLS: Tool[] = [
id: "background-replace",
name: "Background Replace",
description: "Replace image background with a solid color",
category: "ai",
category: "enhance",
icon: "PaintBucket",
route: "/background-replace",
modality: "image",
@@ -411,7 +428,7 @@ export const TOOLS: Tool[] = [
id: "blur-background",
name: "Blur Background",
description: "Blur the background while keeping the subject sharp",
category: "ai",
category: "enhance",
icon: "Focus",
route: "/blur-background",
modality: "image",
@@ -768,7 +785,7 @@ export const TOOLS: Tool[] = [
id: "pdf-to-image",
name: "PDF to Image",
description: "Convert PDF pages to images",
category: "documents",
category: "pdf-organize",
icon: "BookImage",
route: "/pdf-to-image",
modality: "document",
@@ -780,7 +797,7 @@ export const TOOLS: Tool[] = [
id: "convert-video",
name: "Convert Video",
description: "Convert videos between MP4, MOV, and WebM",
category: "video",
category: "video-convert",
icon: "Video",
route: "/convert-video",
modality: "video",
@@ -791,7 +808,7 @@ export const TOOLS: Tool[] = [
id: "compress-video",
name: "Compress Video",
description: "Shrink video file size with quality control",
category: "video",
category: "video-convert",
icon: "FileVideo",
route: "/compress-video",
modality: "video",
@@ -802,7 +819,7 @@ export const TOOLS: Tool[] = [
id: "trim-video",
name: "Trim Video",
description: "Cut a clip out of a video",
category: "video",
category: "video-edit",
icon: "Scissors",
route: "/trim-video",
modality: "video",
@@ -813,7 +830,7 @@ export const TOOLS: Tool[] = [
id: "mute-video",
name: "Mute Video",
description: "Remove the audio track from a video",
category: "video",
category: "video-edit",
icon: "VolumeX",
route: "/mute-video",
modality: "video",
@@ -824,7 +841,7 @@ export const TOOLS: Tool[] = [
id: "video-to-gif",
name: "Video to GIF",
description: "Turn a video clip into an animated GIF",
category: "video",
category: "video-convert",
icon: "Film",
route: "/video-to-gif",
modality: "video",
@@ -835,7 +852,7 @@ export const TOOLS: Tool[] = [
id: "resize-video",
name: "Resize Video",
description: "Scale a video to a new resolution or preset size",
category: "video",
category: "video-edit",
icon: "Scaling",
route: "/resize-video",
modality: "video",
@@ -846,7 +863,7 @@ export const TOOLS: Tool[] = [
id: "crop-video",
name: "Crop Video",
description: "Crop a region out of a video",
category: "video",
category: "video-edit",
icon: "Crop",
route: "/crop-video",
modality: "video",
@@ -857,7 +874,7 @@ export const TOOLS: Tool[] = [
id: "rotate-video",
name: "Rotate Video",
description: "Rotate or flip a video",
category: "video",
category: "video-edit",
icon: "RotateCw",
route: "/rotate-video",
modality: "video",
@@ -868,7 +885,7 @@ export const TOOLS: Tool[] = [
id: "change-fps",
name: "Change FPS",
description: "Change the frame rate of a video",
category: "video",
category: "video-edit",
icon: "Gauge",
route: "/change-fps",
modality: "video",
@@ -879,7 +896,7 @@ export const TOOLS: Tool[] = [
id: "video-color",
name: "Video Color",
description: "Adjust brightness, contrast, saturation, and gamma",
category: "video",
category: "video-edit",
icon: "SlidersHorizontal",
route: "/video-color",
modality: "video",
@@ -890,7 +907,7 @@ export const TOOLS: Tool[] = [
id: "video-speed",
name: "Video Speed",
description: "Speed up or slow down a video",
category: "video",
category: "video-edit",
icon: "FastForward",
route: "/video-speed",
modality: "video",
@@ -901,7 +918,7 @@ export const TOOLS: Tool[] = [
id: "reverse-video",
name: "Reverse Video",
description: "Play a video clip backwards",
category: "video",
category: "video-edit",
icon: "Rewind",
route: "/reverse-video",
modality: "video",
@@ -912,7 +929,7 @@ export const TOOLS: Tool[] = [
id: "video-loudnorm",
name: "Normalize Audio",
description: "Normalize video audio volume to broadcast standard",
category: "video",
category: "video-edit",
icon: "Volume2",
route: "/video-loudnorm",
modality: "video",
@@ -923,7 +940,7 @@ export const TOOLS: Tool[] = [
id: "aspect-pad",
name: "Aspect Pad",
description: "Add solid-color bars to fit a target aspect ratio",
category: "video",
category: "video-effects",
icon: "RectangleHorizontal",
route: "/aspect-pad",
modality: "video",
@@ -934,7 +951,7 @@ export const TOOLS: Tool[] = [
id: "blur-pad",
name: "Blur Pad",
description: "Fill bars with a blurred copy of the video",
category: "video",
category: "video-effects",
icon: "GalleryHorizontalEnd",
route: "/blur-pad",
modality: "video",
@@ -945,7 +962,7 @@ export const TOOLS: Tool[] = [
id: "watermark-video",
name: "Watermark Video",
description: "Burn a text watermark onto video frames",
category: "video",
category: "video-effects",
icon: "Stamp",
route: "/watermark-video",
modality: "video",
@@ -956,7 +973,7 @@ export const TOOLS: Tool[] = [
id: "stabilize-video",
name: "Stabilize Video",
description: "Reduce camera shake with two-pass stabilization",
category: "video",
category: "video-effects",
icon: "Anchor",
route: "/stabilize-video",
modality: "video",
@@ -967,7 +984,7 @@ export const TOOLS: Tool[] = [
id: "gif-to-video",
name: "GIF to Video",
description: "Convert an animated GIF into an MP4 or WebM video",
category: "video",
category: "video-convert",
icon: "Film",
route: "/gif-to-video",
modality: "video",
@@ -978,7 +995,7 @@ export const TOOLS: Tool[] = [
id: "video-to-webp",
name: "Video to WebP",
description: "Convert a video clip into an animated WebP image",
category: "video",
category: "video-convert",
icon: "Image",
route: "/video-to-webp",
modality: "video",
@@ -989,7 +1006,7 @@ export const TOOLS: Tool[] = [
id: "video-to-frames",
name: "Video to Frames",
description: "Extract frames from a video as a ZIP of images",
category: "video",
category: "video-convert",
icon: "Images",
route: "/video-to-frames",
modality: "video",
@@ -1000,7 +1017,7 @@ export const TOOLS: Tool[] = [
id: "merge-videos",
name: "Merge Videos",
description: "Join multiple video clips into one file",
category: "video",
category: "video-effects",
icon: "Combine",
route: "/merge-videos",
modality: "video",
@@ -1011,7 +1028,7 @@ export const TOOLS: Tool[] = [
id: "replace-audio",
name: "Replace Audio",
description: "Swap the audio track of a video with another file",
category: "video",
category: "video-effects",
icon: "MicVocal",
route: "/replace-audio",
modality: "video",
@@ -1022,7 +1039,7 @@ export const TOOLS: Tool[] = [
id: "burn-subtitles",
name: "Burn Subtitles",
description: "Permanently render subtitles onto video frames",
category: "video",
category: "video-subtitles",
icon: "Captions",
route: "/burn-subtitles",
modality: "video",
@@ -1033,7 +1050,7 @@ export const TOOLS: Tool[] = [
id: "embed-subtitles",
name: "Embed Subtitles",
description: "Mux a subtitle track into the video container",
category: "video",
category: "video-subtitles",
icon: "MessageSquareText",
route: "/embed-subtitles",
modality: "video",
@@ -1044,7 +1061,7 @@ export const TOOLS: Tool[] = [
id: "extract-subtitles",
name: "Extract Subtitles",
description: "Pull the subtitle track out of a video as an SRT file",
category: "video",
category: "video-subtitles",
icon: "FileText",
route: "/extract-subtitles",
modality: "video",
@@ -1055,7 +1072,7 @@ export const TOOLS: Tool[] = [
id: "images-to-video",
name: "Images to Video",
description: "Turn a set of images into a slideshow video",
category: "video",
category: "video-effects",
icon: "GalleryThumbnails",
route: "/images-to-video",
modality: "video",
@@ -1066,7 +1083,7 @@ export const TOOLS: Tool[] = [
id: "video-metadata",
name: "Clean Video Metadata",
description: "Strip metadata from a video and report what was found",
category: "video",
category: "video-metadata",
icon: "Tags",
route: "/video-metadata",
modality: "video",
@@ -1078,7 +1095,7 @@ export const TOOLS: Tool[] = [
id: "convert-audio",
name: "Convert Audio",
description: "Convert audio between MP3, WAV, OGG, and more",
category: "audio",
category: "audio-convert",
icon: "AudioLines",
route: "/convert-audio",
modality: "audio",
@@ -1089,7 +1106,7 @@ export const TOOLS: Tool[] = [
id: "trim-audio",
name: "Trim Audio",
description: "Cut a section out of an audio file",
category: "audio",
category: "audio-edit",
icon: "Scissors",
route: "/trim-audio",
modality: "audio",
@@ -1100,7 +1117,7 @@ export const TOOLS: Tool[] = [
id: "extract-audio",
name: "Extract Audio",
description: "Pull the audio track out of a video",
category: "audio",
category: "audio-edit",
icon: "FileAudio",
route: "/extract-audio",
modality: "video",
@@ -1111,7 +1128,7 @@ export const TOOLS: Tool[] = [
id: "volume-adjust",
name: "Volume Adjust",
description: "Increase or decrease audio volume by a fixed gain",
category: "audio",
category: "audio-edit",
icon: "Volume2",
route: "/volume-adjust",
modality: "audio",
@@ -1122,7 +1139,7 @@ export const TOOLS: Tool[] = [
id: "normalize-audio",
name: "Normalize Audio",
description: "Even out loudness to broadcast standard levels",
category: "audio",
category: "audio-edit",
icon: "AudioWaveform",
route: "/normalize-audio",
modality: "audio",
@@ -1133,7 +1150,7 @@ export const TOOLS: Tool[] = [
id: "fade-audio",
name: "Fade Audio",
description: "Add fade-in and fade-out effects to audio",
category: "audio",
category: "audio-edit",
icon: "Waves",
route: "/fade-audio",
modality: "audio",
@@ -1144,7 +1161,7 @@ export const TOOLS: Tool[] = [
id: "reverse-audio",
name: "Reverse Audio",
description: "Play audio backwards",
category: "audio",
category: "audio-edit",
icon: "Rewind",
route: "/reverse-audio",
modality: "audio",
@@ -1155,7 +1172,7 @@ export const TOOLS: Tool[] = [
id: "audio-speed",
name: "Audio Speed",
description: "Speed up or slow down audio playback",
category: "audio",
category: "audio-edit",
icon: "FastForward",
route: "/audio-speed",
modality: "audio",
@@ -1166,7 +1183,7 @@ export const TOOLS: Tool[] = [
id: "pitch-shift",
name: "Pitch Shift",
description: "Raise or lower pitch by semitones without changing speed",
category: "audio",
category: "audio-edit",
icon: "Music",
route: "/pitch-shift",
modality: "audio",
@@ -1177,7 +1194,7 @@ export const TOOLS: Tool[] = [
id: "audio-channels",
name: "Audio Channels",
description: "Convert between mono, stereo, or swap left and right channels",
category: "audio",
category: "audio-edit",
icon: "Split",
route: "/audio-channels",
modality: "audio",
@@ -1188,7 +1205,7 @@ export const TOOLS: Tool[] = [
id: "silence-removal",
name: "Silence Removal",
description: "Strip silent sections from audio",
category: "audio",
category: "audio-edit",
icon: "VolumeX",
route: "/silence-removal",
modality: "audio",
@@ -1199,7 +1216,7 @@ export const TOOLS: Tool[] = [
id: "noise-reduction",
name: "Noise Reduction",
description: "Reduce background noise with FFT-based denoising",
category: "audio",
category: "audio-edit",
icon: "Sparkles",
route: "/noise-reduction",
modality: "audio",
@@ -1210,7 +1227,7 @@ export const TOOLS: Tool[] = [
id: "merge-audio",
name: "Merge Audio",
description: "Combine multiple audio files into one",
category: "audio",
category: "audio-effects",
icon: "Combine",
route: "/merge-audio",
modality: "audio",
@@ -1221,7 +1238,7 @@ export const TOOLS: Tool[] = [
id: "split-audio",
name: "Split Audio",
description: "Split audio by time, equal parts, or silence detection",
category: "audio",
category: "audio-effects",
icon: "Scissors",
route: "/split-audio",
modality: "audio",
@@ -1232,7 +1249,7 @@ export const TOOLS: Tool[] = [
id: "ringtone-maker",
name: "Ringtone Maker",
description: "Create a ringtone clip from any audio file",
category: "audio",
category: "audio-convert",
icon: "BellRing",
route: "/ringtone-maker",
modality: "audio",
@@ -1243,7 +1260,7 @@ export const TOOLS: Tool[] = [
id: "waveform-image",
name: "Waveform Image",
description: "Generate a waveform visualization as a PNG image",
category: "audio",
category: "audio-effects",
icon: "Activity",
route: "/waveform-image",
modality: "audio",
@@ -1254,7 +1271,7 @@ export const TOOLS: Tool[] = [
id: "audio-metadata",
name: "Audio Metadata",
description: "View, edit, or strip audio tags (ID3)",
category: "audio",
category: "audio-metadata",
icon: "Tags",
route: "/audio-metadata",
modality: "audio",
@@ -1266,7 +1283,7 @@ export const TOOLS: Tool[] = [
id: "merge-pdf",
name: "Merge PDFs",
description: "Combine multiple PDFs into one",
category: "documents",
category: "pdf-organize",
icon: "Combine",
route: "/merge-pdf",
modality: "document",
@@ -1277,7 +1294,7 @@ export const TOOLS: Tool[] = [
id: "split-pdf",
name: "Split PDF",
description: "Extract pages or split into parts",
category: "documents",
category: "pdf-organize",
icon: "Split",
route: "/split-pdf",
modality: "document",
@@ -1288,7 +1305,7 @@ export const TOOLS: Tool[] = [
id: "compress-pdf",
name: "Compress PDF",
description: "Shrink PDF file size",
category: "documents",
category: "pdf-optimize",
icon: "FileArchive",
route: "/compress-pdf",
modality: "document",
@@ -1299,7 +1316,7 @@ export const TOOLS: Tool[] = [
id: "rotate-pdf",
name: "Rotate PDF",
description: "Rotate pages in a PDF",
category: "documents",
category: "pdf-edit",
icon: "RotateCw",
route: "/rotate-pdf",
modality: "document",
@@ -1310,7 +1327,7 @@ export const TOOLS: Tool[] = [
id: "convert-document",
name: "Convert Document",
description: "Convert between Word, OpenDocument, RTF, and plain text formats",
category: "documents",
category: "doc-convert",
icon: "FileType2",
route: "/convert-document",
modality: "document",
@@ -1321,7 +1338,7 @@ export const TOOLS: Tool[] = [
id: "convert-presentation",
name: "Convert Presentation",
description: "Convert between PowerPoint and OpenDocument presentation formats",
category: "documents",
category: "doc-convert",
icon: "Presentation",
route: "/convert-presentation",
modality: "document",
@@ -1333,7 +1350,7 @@ export const TOOLS: Tool[] = [
name: "Convert Spreadsheet",
description:
"Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV.",
category: "documents",
category: "doc-convert",
icon: "Grid3x3",
route: "/convert-spreadsheet",
modality: "document",
@@ -1344,7 +1361,7 @@ export const TOOLS: Tool[] = [
id: "excel-to-pdf",
name: "Excel to PDF",
description: "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages.",
category: "documents",
category: "doc-convert",
icon: "Table",
route: "/excel-to-pdf",
modality: "document",
@@ -1355,7 +1372,7 @@ export const TOOLS: Tool[] = [
id: "word-to-pdf",
name: "Word to PDF",
description: "Convert Word documents to PDF",
category: "documents",
category: "doc-convert",
icon: "FileText",
route: "/word-to-pdf",
modality: "document",
@@ -1366,7 +1383,7 @@ export const TOOLS: Tool[] = [
id: "extract-pages",
name: "Extract Pages",
description: "Pull selected pages into a new PDF",
category: "documents",
category: "pdf-organize",
icon: "FileOutput",
route: "/extract-pages",
modality: "document",
@@ -1377,7 +1394,7 @@ export const TOOLS: Tool[] = [
id: "remove-pages",
name: "Remove Pages",
description: "Delete specific pages from a PDF",
category: "documents",
category: "pdf-organize",
icon: "FileX",
route: "/remove-pages",
modality: "document",
@@ -1388,7 +1405,7 @@ export const TOOLS: Tool[] = [
id: "organize-pdf",
name: "Organize PDF",
description: "Reorder pages with an explicit page order",
category: "documents",
category: "pdf-organize",
icon: "ListOrdered",
route: "/organize-pdf",
modality: "document",
@@ -1399,7 +1416,7 @@ export const TOOLS: Tool[] = [
id: "protect-pdf",
name: "Protect PDF",
description: "Add password protection (AES-256 encryption)",
category: "documents",
category: "pdf-security",
icon: "Lock",
route: "/protect-pdf",
modality: "document",
@@ -1410,7 +1427,7 @@ export const TOOLS: Tool[] = [
id: "unlock-pdf",
name: "Unlock PDF",
description: "Remove password protection from a PDF",
category: "documents",
category: "pdf-security",
icon: "LockOpen",
route: "/unlock-pdf",
modality: "document",
@@ -1421,7 +1438,7 @@ export const TOOLS: Tool[] = [
id: "repair-pdf",
name: "Repair PDF",
description: "Attempt to repair a damaged or corrupted PDF",
category: "documents",
category: "pdf-optimize",
icon: "Wrench",
route: "/repair-pdf",
modality: "document",
@@ -1432,7 +1449,7 @@ export const TOOLS: Tool[] = [
id: "linearize-pdf",
name: "Web-Optimize PDF",
description: "Linearize a PDF for fast web viewing",
category: "documents",
category: "pdf-optimize",
icon: "Zap",
route: "/linearize-pdf",
modality: "document",
@@ -1443,7 +1460,7 @@ export const TOOLS: Tool[] = [
id: "grayscale-pdf",
name: "Grayscale PDF",
description: "Convert all colors to grayscale",
category: "documents",
category: "pdf-optimize",
icon: "Contrast",
route: "/grayscale-pdf",
modality: "document",
@@ -1454,7 +1471,7 @@ export const TOOLS: Tool[] = [
id: "pdfa-convert",
name: "PDF/A Convert",
description: "Convert to archival PDF/A-2",
category: "documents",
category: "pdf-optimize",
icon: "Archive",
route: "/pdfa-convert",
modality: "document",
@@ -1465,7 +1482,7 @@ export const TOOLS: Tool[] = [
id: "crop-pdf",
name: "Crop PDF",
description: "Crop all pages with a uniform margin",
category: "documents",
category: "pdf-optimize",
icon: "Crop",
route: "/crop-pdf",
modality: "document",
@@ -1476,7 +1493,7 @@ export const TOOLS: Tool[] = [
id: "nup-pdf",
name: "N-up PDF",
description: "Arrange multiple pages per sheet",
category: "documents",
category: "pdf-optimize",
icon: "LayoutGrid",
route: "/nup-pdf",
modality: "document",
@@ -1487,7 +1504,7 @@ export const TOOLS: Tool[] = [
id: "booklet-pdf",
name: "Booklet PDF",
description: "Arrange pages for folding into a booklet",
category: "documents",
category: "pdf-optimize",
icon: "BookOpen",
route: "/booklet-pdf",
modality: "document",
@@ -1498,7 +1515,7 @@ export const TOOLS: Tool[] = [
id: "watermark-pdf",
name: "Watermark PDF",
description: "Add a text watermark to every page",
category: "documents",
category: "pdf-edit",
icon: "Stamp",
route: "/watermark-pdf",
modality: "document",
@@ -1509,7 +1526,7 @@ export const TOOLS: Tool[] = [
id: "pdf-page-numbers",
name: "PDF Page Numbers",
description: "Add page numbers to every page",
category: "documents",
category: "pdf-edit",
icon: "Hash",
route: "/pdf-page-numbers",
modality: "document",
@@ -1520,7 +1537,7 @@ export const TOOLS: Tool[] = [
id: "flatten-pdf",
name: "Flatten PDF",
description: "Bake forms and annotations into page content",
category: "documents",
category: "pdf-edit",
icon: "Layers2",
route: "/flatten-pdf",
modality: "document",
@@ -1531,7 +1548,7 @@ export const TOOLS: Tool[] = [
id: "redact-pdf",
name: "Redact PDF",
description: "Permanently remove text occurrences (verified true redaction)",
category: "documents",
category: "pdf-edit",
icon: "EyeOff",
route: "/redact-pdf",
modality: "document",
@@ -1542,7 +1559,7 @@ export const TOOLS: Tool[] = [
id: "pdf-to-text",
name: "PDF to Text",
description: "Extract plain text from a PDF",
category: "documents",
category: "doc-convert",
icon: "FileText",
route: "/pdf-to-text",
modality: "document",
@@ -1553,7 +1570,7 @@ export const TOOLS: Tool[] = [
id: "pdf-to-word",
name: "PDF to Word",
description: "Best for text-based PDFs; scanned pages need OCR",
category: "documents",
category: "doc-convert",
icon: "FileType",
route: "/pdf-to-word",
modality: "document",
@@ -1564,7 +1581,7 @@ export const TOOLS: Tool[] = [
id: "pdf-metadata",
name: "PDF Metadata",
description: "Read and write PDF document metadata",
category: "documents",
category: "doc-convert",
icon: "Tags",
route: "/pdf-metadata",
modality: "document",
@@ -1575,7 +1592,7 @@ export const TOOLS: Tool[] = [
id: "powerpoint-to-pdf",
name: "PowerPoint to PDF",
description: "Convert presentations to PDF",
category: "documents",
category: "doc-convert",
icon: "Presentation",
route: "/powerpoint-to-pdf",
modality: "document",
@@ -1586,7 +1603,7 @@ export const TOOLS: Tool[] = [
id: "html-to-pdf",
name: "HTML to PDF",
description: "Convert an HTML file to PDF. Remote resources are disabled for privacy.",
category: "documents",
category: "doc-convert",
icon: "FileCode",
route: "/html-to-pdf",
modality: "document",
@@ -1597,7 +1614,7 @@ export const TOOLS: Tool[] = [
id: "markdown-to-docx",
name: "Markdown to Word",
description: "Convert a Markdown file to a Word document (DOCX)",
category: "documents",
category: "doc-convert",
icon: "FileType",
route: "/markdown-to-docx",
modality: "document",
@@ -1609,7 +1626,7 @@ export const TOOLS: Tool[] = [
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.",
category: "documents",
category: "doc-convert",
icon: "FileCode",
route: "/markdown-to-html",
modality: "document",
@@ -1621,7 +1638,7 @@ export const TOOLS: Tool[] = [
name: "Markdown to PDF",
description:
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy.",
category: "documents",
category: "doc-convert",
icon: "FileCode2",
route: "/markdown-to-pdf",
modality: "document",
@@ -1633,7 +1650,7 @@ export const TOOLS: Tool[] = [
name: "Convert EPUB",
description:
"Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched.",
category: "documents",
category: "doc-convert",
icon: "BookOpen",
route: "/epub-convert",
modality: "document",
@@ -1644,7 +1661,7 @@ export const TOOLS: Tool[] = [
id: "to-epub",
name: "Convert to EPUB",
description: "Convert Word, Markdown, HTML, or plain text files to EPUB",
category: "documents",
category: "doc-convert",
icon: "Book",
route: "/to-epub",
modality: "document",
@@ -1745,7 +1762,7 @@ export const TOOLS: Tool[] = [
id: "create-zip",
name: "Create ZIP",
description: "Bundle multiple files into a single ZIP archive",
category: "data",
category: "archives",
icon: "FolderArchive",
route: "/create-zip",
modality: "file",
@@ -1757,7 +1774,7 @@ export const TOOLS: Tool[] = [
name: "Extract ZIP",
description:
"Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly.",
category: "data",
category: "archives",
icon: "FolderOpen",
route: "/extract-zip",
modality: "file",
+18 -6
View File
@@ -41,17 +41,29 @@ export const ar: TranslationKeys = {
},
categories: {
essentials: "الأساسيات",
optimization: "التحسين",
adjustments: "التعديلات",
enhance: "Enhance & AI",
watermark: "العلامة المائية والتراكب",
utilities: "الأدوات المساعدة",
layout: "التخطيط والتكوين",
utilities: "الأدوات المساعدة",
optimization: "التحسين",
format: "التنسيق والتحويل",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "أدوات AI",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const de: TranslationKeys = {
},
categories: {
essentials: "Grundlagen",
optimization: "Optimierung",
adjustments: "Anpassungen",
enhance: "Enhance & AI",
watermark: "Wasserzeichen & Overlay",
utilities: "Hilfswerkzeuge",
layout: "Layout & Komposition",
utilities: "Hilfswerkzeuge",
optimization: "Optimierung",
format: "Format & Konvertierung",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI-Werkzeuge",
archives: "Archives",
},
modalities: {
image: "Image",
+23 -6
View File
@@ -38,18 +38,35 @@ export const en = {
pageNotFoundDescription: "The page you are looking for does not exist or has been moved.",
},
categories: {
// Image
essentials: "Essentials",
optimization: "Optimization",
adjustments: "Adjustments",
enhance: "Enhance & AI",
watermark: "Watermark & Overlay",
utilities: "Utilities",
layout: "Layout & Composition",
utilities: "Utilities",
optimization: "Optimization",
format: "Format & Conversion",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
// Video
"video-edit": "Edit",
"video-convert": "Convert",
"video-effects": "Effects & Compose",
"video-subtitles": "Subtitles",
"video-metadata": "Metadata",
// Audio
"audio-edit": "Edit",
"audio-convert": "Convert",
"audio-effects": "Effects & Compose",
"audio-metadata": "Metadata",
// Documents
"pdf-organize": "Organize",
"pdf-edit": "Edit & Annotate",
"pdf-security": "Security",
"pdf-optimize": "Optimize",
"doc-convert": "Convert",
// Data & Files
data: "Data Files",
ai: "AI Tools",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const es: TranslationKeys = {
},
categories: {
essentials: "Esenciales",
optimization: "Optimizacion",
adjustments: "Ajustes",
enhance: "Enhance & AI",
watermark: "Marca de agua y superposicion",
utilities: "Utilidades",
layout: "Diseno y composicion",
utilities: "Utilidades",
optimization: "Optimizacion",
format: "Formato y conversion",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "Herramientas de AI",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const fr: TranslationKeys = {
},
categories: {
essentials: "Essentiels",
optimization: "Optimisation",
adjustments: "Reglages",
enhance: "Enhance & AI",
watermark: "Filigrane et superposition",
utilities: "Utilitaires",
layout: "Mise en page et composition",
utilities: "Utilitaires",
optimization: "Optimisation",
format: "Format et conversion",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "Outils AI",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const hi: TranslationKeys = {
},
categories: {
essentials: "आवश्यक टूल्स",
optimization: "ऑप्टिमाइज़ेशन",
adjustments: "समायोजन",
enhance: "Enhance & AI",
watermark: "वॉटरमार्क और ओवरले",
utilities: "सहायक टूल्स",
layout: "लेआउट और कंपोज़िशन",
utilities: "सहायक टूल्स",
optimization: "ऑप्टिमाइज़ेशन",
format: "फॉर्मेट और कन्वर्शन",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI टूल्स",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const id: TranslationKeys = {
},
categories: {
essentials: "Dasar",
optimization: "Optimasi",
adjustments: "Penyesuaian",
enhance: "Enhance & AI",
watermark: "Watermark & Overlay",
utilities: "Utilitas",
layout: "Tata Letak & Komposisi",
utilities: "Utilitas",
optimization: "Optimasi",
format: "Format & Konversi",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "Alat AI",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const it: TranslationKeys = {
},
categories: {
essentials: "Essenziali",
optimization: "Ottimizzazione",
adjustments: "Regolazioni",
enhance: "Enhance & AI",
watermark: "Filigrana e sovrapposizione",
utilities: "Utilita",
layout: "Layout e composizione",
utilities: "Utilita",
optimization: "Ottimizzazione",
format: "Formato e conversione",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "Strumenti IA",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const ja: TranslationKeys = {
},
categories: {
essentials: "基本ツール",
optimization: "最適化",
adjustments: "調整",
enhance: "Enhance & AI",
watermark: "ウォーターマークとオーバーレイ",
utilities: "ユーティリティ",
layout: "レイアウトと構図",
utilities: "ユーティリティ",
optimization: "最適化",
format: "フォーマットと変換",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AIツール",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const ko: TranslationKeys = {
},
categories: {
essentials: "기본 도구",
optimization: "최적화",
adjustments: "조정",
enhance: "Enhance & AI",
watermark: "워터마크 및 오버레이",
utilities: "유틸리티",
layout: "레이아웃 및 구도",
utilities: "유틸리티",
optimization: "최적화",
format: "포맷 및 변환",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI 도구",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const nl: TranslationKeys = {
},
categories: {
essentials: "Basistools",
optimization: "Optimalisatie",
adjustments: "Aanpassingen",
enhance: "Enhance & AI",
watermark: "Watermerk & Overlay",
utilities: "Hulptools",
layout: "Lay-out & Compositie",
utilities: "Hulptools",
optimization: "Optimalisatie",
format: "Formaat & Conversie",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI-tools",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const pl: TranslationKeys = {
},
categories: {
essentials: "Podstawowe",
optimization: "Optymalizacja",
adjustments: "Korekta",
enhance: "Enhance & AI",
watermark: "Znak wodny i nakładka",
utilities: "Narzędzia",
layout: "Układ i kompozycja",
utilities: "Narzędzia",
optimization: "Optymalizacja",
format: "Format i konwersja",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "Narzędzia AI",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const ptBR: TranslationKeys = {
},
categories: {
essentials: "Essenciais",
optimization: "Otimizacao",
adjustments: "Ajustes",
enhance: "Enhance & AI",
watermark: "Marca d'agua e sobreposicao",
utilities: "Utilitarios",
layout: "Layout e composicao",
utilities: "Utilitarios",
optimization: "Otimizacao",
format: "Formato e conversao",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "Ferramentas de AI",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const ru: TranslationKeys = {
},
categories: {
essentials: "Основные",
optimization: "Оптимизация",
adjustments: "Коррекция",
enhance: "Enhance & AI",
watermark: "Водяной знак и наложение",
utilities: "Утилиты",
layout: "Компоновка и композиция",
utilities: "Утилиты",
optimization: "Оптимизация",
format: "Формат и конвертация",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI-инструменты",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const sv: TranslationKeys = {
},
categories: {
essentials: "Grundlaggande",
optimization: "Optimering",
adjustments: "Justeringar",
enhance: "Enhance & AI",
watermark: "Vattenstampel & Overlay",
utilities: "Verktyg",
layout: "Layout & Komposition",
utilities: "Verktyg",
optimization: "Optimering",
format: "Format & Konvertering",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI-verktyg",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const th: TranslationKeys = {
},
categories: {
essentials: "พื้นฐาน",
optimization: "การเพิ่มประสิทธิภาพ",
adjustments: "การปรับแต่ง",
enhance: "Enhance & AI",
watermark: "ลายน้ำและการซ้อนทับ",
utilities: "เครื่องมือเสริม",
layout: "เค้าโครงและการจัดองค์ประกอบ",
utilities: "เครื่องมือเสริม",
optimization: "การเพิ่มประสิทธิภาพ",
format: "รูปแบบและการแปลง",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "เครื่องมือ AI",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const tr: TranslationKeys = {
},
categories: {
essentials: "Temel Araçlar",
optimization: "Optimizasyon",
adjustments: "Ayarlamalar",
enhance: "Enhance & AI",
watermark: "Filigran ve Kaplama",
utilities: "Yardımcı Araçlar",
layout: "Düzen ve Kompozisyon",
utilities: "Yardımcı Araçlar",
optimization: "Optimizasyon",
format: "Biçim ve Dönüştürme",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI Araçları",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const uk: TranslationKeys = {
},
categories: {
essentials: "Основні",
optimization: "Оптимізація",
adjustments: "Корекція",
enhance: "Enhance & AI",
watermark: "Водяний знак і накладання",
utilities: "Утиліти",
layout: "Компонування та композиція",
utilities: "Утиліти",
optimization: "Оптимізація",
format: "Формат і конвертація",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI-інструменти",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const vi: TranslationKeys = {
},
categories: {
essentials: "Cơ bản",
optimization: "Tối ưu hóa",
adjustments: "Điều chỉnh",
enhance: "Enhance & AI",
watermark: "Hình mờ & Lớp phủ",
utilities: "Tiện ích",
layout: "Bố cục & Kết hợp",
utilities: "Tiện ích",
optimization: "Tối ưu hóa",
format: "Định dạng & Chuyển đổi",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "Công cụ AI",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const zhCN: TranslationKeys = {
},
categories: {
essentials: "基础工具",
optimization: "优化",
adjustments: "调整",
enhance: "Enhance & AI",
watermark: "水印与叠加",
utilities: "实用工具",
layout: "布局与排版",
utilities: "实用工具",
optimization: "优化",
format: "格式与转换",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI 工具",
archives: "Archives",
},
modalities: {
image: "Image",
+18 -6
View File
@@ -41,17 +41,29 @@ export const zhTW: TranslationKeys = {
},
categories: {
essentials: "基本工具",
optimization: "最佳化",
adjustments: "調整",
enhance: "Enhance & AI",
watermark: "浮水印與覆疊",
utilities: "實用工具",
layout: "版面與構圖",
utilities: "實用工具",
optimization: "最佳化",
format: "格式與轉換",
video: "Video",
audio: "Audio",
documents: "PDF & Documents",
"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",
ai: "AI工具",
archives: "Archives",
},
modalities: {
image: "Image",
+22 -5
View File
@@ -17,18 +17,35 @@ export interface Tool {
}
export type ToolCategory =
// Image
| "essentials"
| "optimization"
| "adjustments"
| "ai"
| "enhance"
| "watermark"
| "utilities"
| "layout"
| "format"
| "video"
| "audio"
| "documents"
| "data";
// Video
| "video-edit"
| "video-convert"
| "video-effects"
| "video-subtitles"
| "video-metadata"
// Audio
| "audio-edit"
| "audio-convert"
| "audio-effects"
| "audio-metadata"
// Documents
| "pdf-organize"
| "pdf-edit"
| "pdf-security"
| "pdf-optimize"
| "doc-convert"
// Data & Files
| "data"
| "archives";
export interface CategoryInfo {
id: ToolCategory;