From 7daaa11e7dd4c1138bd12c81b356a5b9bb2efd8d Mon Sep 17 00:00:00 2001 From: SnapOtter Date: Sat, 13 Jun 2026 14:45:06 +0800 Subject: [PATCH] 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. --- packages/shared/src/constants.ts | 237 ++++++++++++++++-------------- packages/shared/src/i18n/ar.ts | 24 ++- packages/shared/src/i18n/de.ts | 24 ++- packages/shared/src/i18n/en.ts | 29 +++- packages/shared/src/i18n/es.ts | 24 ++- packages/shared/src/i18n/fr.ts | 24 ++- packages/shared/src/i18n/hi.ts | 24 ++- packages/shared/src/i18n/id.ts | 24 ++- packages/shared/src/i18n/it.ts | 24 ++- packages/shared/src/i18n/ja.ts | 24 ++- packages/shared/src/i18n/ko.ts | 24 ++- packages/shared/src/i18n/nl.ts | 24 ++- packages/shared/src/i18n/pl.ts | 24 ++- packages/shared/src/i18n/pt-BR.ts | 24 ++- packages/shared/src/i18n/ru.ts | 24 ++- packages/shared/src/i18n/sv.ts | 24 ++- packages/shared/src/i18n/th.ts | 24 ++- packages/shared/src/i18n/tr.ts | 24 ++- packages/shared/src/i18n/uk.ts | 24 ++- packages/shared/src/i18n/vi.ts | 24 ++- packages/shared/src/i18n/zh-CN.ts | 24 ++- packages/shared/src/i18n/zh-TW.ts | 24 ++- packages/shared/src/types.ts | 27 +++- 23 files changed, 532 insertions(+), 241 deletions(-) diff --git a/packages/shared/src/constants.ts b/packages/shared/src/constants.ts index c0e16c30..68ca7589 100644 --- a/packages/shared/src/constants.ts +++ b/packages/shared/src/constants.ts @@ -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", diff --git a/packages/shared/src/i18n/ar.ts b/packages/shared/src/i18n/ar.ts index 0bd43901..40c84931 100644 --- a/packages/shared/src/i18n/ar.ts +++ b/packages/shared/src/i18n/ar.ts @@ -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", diff --git a/packages/shared/src/i18n/de.ts b/packages/shared/src/i18n/de.ts index cc01a48a..6f5fcd03 100644 --- a/packages/shared/src/i18n/de.ts +++ b/packages/shared/src/i18n/de.ts @@ -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", diff --git a/packages/shared/src/i18n/en.ts b/packages/shared/src/i18n/en.ts index f65da456..87826636 100644 --- a/packages/shared/src/i18n/en.ts +++ b/packages/shared/src/i18n/en.ts @@ -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", diff --git a/packages/shared/src/i18n/es.ts b/packages/shared/src/i18n/es.ts index b2b60b12..1de29123 100644 --- a/packages/shared/src/i18n/es.ts +++ b/packages/shared/src/i18n/es.ts @@ -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", diff --git a/packages/shared/src/i18n/fr.ts b/packages/shared/src/i18n/fr.ts index 9edb9298..d977c38a 100644 --- a/packages/shared/src/i18n/fr.ts +++ b/packages/shared/src/i18n/fr.ts @@ -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", diff --git a/packages/shared/src/i18n/hi.ts b/packages/shared/src/i18n/hi.ts index 92c51949..5caa03bb 100644 --- a/packages/shared/src/i18n/hi.ts +++ b/packages/shared/src/i18n/hi.ts @@ -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", diff --git a/packages/shared/src/i18n/id.ts b/packages/shared/src/i18n/id.ts index 102c13e7..d2539146 100644 --- a/packages/shared/src/i18n/id.ts +++ b/packages/shared/src/i18n/id.ts @@ -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", diff --git a/packages/shared/src/i18n/it.ts b/packages/shared/src/i18n/it.ts index 5c3deab7..aa45ff26 100644 --- a/packages/shared/src/i18n/it.ts +++ b/packages/shared/src/i18n/it.ts @@ -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", diff --git a/packages/shared/src/i18n/ja.ts b/packages/shared/src/i18n/ja.ts index 5d1e70b3..ed19ae77 100644 --- a/packages/shared/src/i18n/ja.ts +++ b/packages/shared/src/i18n/ja.ts @@ -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", diff --git a/packages/shared/src/i18n/ko.ts b/packages/shared/src/i18n/ko.ts index f22a9e80..41e03227 100644 --- a/packages/shared/src/i18n/ko.ts +++ b/packages/shared/src/i18n/ko.ts @@ -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", diff --git a/packages/shared/src/i18n/nl.ts b/packages/shared/src/i18n/nl.ts index 551c4b47..20c5735b 100644 --- a/packages/shared/src/i18n/nl.ts +++ b/packages/shared/src/i18n/nl.ts @@ -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", diff --git a/packages/shared/src/i18n/pl.ts b/packages/shared/src/i18n/pl.ts index a5fbadc2..ec7ca377 100644 --- a/packages/shared/src/i18n/pl.ts +++ b/packages/shared/src/i18n/pl.ts @@ -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", diff --git a/packages/shared/src/i18n/pt-BR.ts b/packages/shared/src/i18n/pt-BR.ts index 045bff39..67bae159 100644 --- a/packages/shared/src/i18n/pt-BR.ts +++ b/packages/shared/src/i18n/pt-BR.ts @@ -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", diff --git a/packages/shared/src/i18n/ru.ts b/packages/shared/src/i18n/ru.ts index 29381a7a..9f9711ee 100644 --- a/packages/shared/src/i18n/ru.ts +++ b/packages/shared/src/i18n/ru.ts @@ -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", diff --git a/packages/shared/src/i18n/sv.ts b/packages/shared/src/i18n/sv.ts index 15bb958b..9179c0da 100644 --- a/packages/shared/src/i18n/sv.ts +++ b/packages/shared/src/i18n/sv.ts @@ -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", diff --git a/packages/shared/src/i18n/th.ts b/packages/shared/src/i18n/th.ts index 6554519b..a32b4eb2 100644 --- a/packages/shared/src/i18n/th.ts +++ b/packages/shared/src/i18n/th.ts @@ -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", diff --git a/packages/shared/src/i18n/tr.ts b/packages/shared/src/i18n/tr.ts index 98d5c6c6..5c0e49f2 100644 --- a/packages/shared/src/i18n/tr.ts +++ b/packages/shared/src/i18n/tr.ts @@ -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", diff --git a/packages/shared/src/i18n/uk.ts b/packages/shared/src/i18n/uk.ts index 9d3f3855..def31d7e 100644 --- a/packages/shared/src/i18n/uk.ts +++ b/packages/shared/src/i18n/uk.ts @@ -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", diff --git a/packages/shared/src/i18n/vi.ts b/packages/shared/src/i18n/vi.ts index 43e30f9d..3c78e855 100644 --- a/packages/shared/src/i18n/vi.ts +++ b/packages/shared/src/i18n/vi.ts @@ -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", diff --git a/packages/shared/src/i18n/zh-CN.ts b/packages/shared/src/i18n/zh-CN.ts index 1d0a31da..5d77cf8c 100644 --- a/packages/shared/src/i18n/zh-CN.ts +++ b/packages/shared/src/i18n/zh-CN.ts @@ -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", diff --git a/packages/shared/src/i18n/zh-TW.ts b/packages/shared/src/i18n/zh-TW.ts index b98d26ef..94c047f2 100644 --- a/packages/shared/src/i18n/zh-TW.ts +++ b/packages/shared/src/i18n/zh-TW.ts @@ -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", diff --git a/packages/shared/src/types.ts b/packages/shared/src/types.ts index a70b465a..71312adc 100644 --- a/packages/shared/src/types.ts +++ b/packages/shared/src/types.ts @@ -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;