getLocale(); $skills = Skill::with('projects')->ordered()->get(); $grouped = $skills->groupBy('category'); $data = $grouped->map(function ($categorySkills, $category) use ($lang) { return [ 'category' => $category, 'category_label' => $this->getCategoryLabel($category, $lang), 'skills' => SkillResource::collection($categorySkills), ]; })->values(); return response()->json([ 'data' => $data, 'meta' => [ 'lang' => $lang, 'total' => $skills->count(), ], ]); } private function getCategoryLabel(string $category, string $lang): string { $labels = [ 'frontend' => ['fr' => 'Frontend', 'en' => 'Frontend'], 'backend' => ['fr' => 'Backend', 'en' => 'Backend'], 'tools' => ['fr' => 'Outils', 'en' => 'Tools'], 'soft_skills' => ['fr' => 'Soft Skills', 'en' => 'Soft Skills'], ]; return $labels[strtolower($category)][$lang] ?? ucfirst($category); } }