first(); // بارگذاری مهارت‌ها و ترجمه‌ها return response()->json($aboutMe); } public function show($id) { $aboutMe = AboutMe::with('skills.translations')->findOrFail($id); return response()->json($aboutMe); } public function store(StoreAboutMeRequest $request) { $aboutMe = AboutMe::create($request->validated()); return response()->json($aboutMe, 201); } public function update(UpdateAboutMeRequest $request, $id) { $aboutMe = AboutMe::findOrFail($id); $aboutMe->update($request->validated()); return response()->json($aboutMe); } public function destroy($id) { AboutMe::destroy($id); return response()->json(null, 204); } // متد جدید برای دریافت ترجمه بر اساس locale از کوکی public function getTranslation($id, $locale) { // بارگذاری AboutMe با ترجمه‌های مربوط به locale و مهارت‌ها $aboutMe = AboutMe::with(['translations' => function ($query) use ($locale) { $query->where('locale', $locale); }, 'skills.translations' => function ($query) use ($locale) { $query->where('locale', $locale); }])->findOrFail($id); // اگر ترجمه موجود نیست، می‌توانید ترجمه پیش‌فرض یا خطا را برگردانید if ($aboutMe->translations->isEmpty()) { return response()->json(['message' => 'Translation not found', 'locale' => $locale], 404); } // ترکیب اطلاعات AboutMe و ترجمه $translation = $aboutMe->translations->first(); // فقط یک ترجمه دریافت می‌کنیم $skills = $aboutMe->skills->map(function ($skill) use ($locale) { $translation = $skill->getTranslation($locale); // گرفتن ترجمه برای هر مهارت return [ 'id' => $skill->id, 'title' => $translation ? $translation->title : null, // عنوان از ترجمه 'description' => $translation ? $translation->description : null, // توضیحات از ترجمه 'image' => $skill->image, // تصویر 'link' => $skill->link, // لینک 'percentage' => $skill->percentage, // درصد ]; }); $data = [ 'id' => $aboutMe->id, 'title' => $translation->title, 'description' => $translation->description, 'image' => $aboutMe->image, 'skills' => $skills, // مهارت‌ها اکنون بارگذاری شده‌اند ]; return response()->json($data); } }