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
+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",