cms/app/Http/Controllers/Admin/Translations/TranslationActionController.php

53 lines
1.5 KiB
PHP
Raw Permalink Normal View History

<?php
namespace App\Http\Controllers\Admin\Translations;
use App\Http\Controllers\Controller;
use App\Services\TranslationProviderService;
use App\Services\SettingService;
use Illuminate\Http\Request;
/**
* Controller to handle block-level translation.
*/
class TranslationActionController extends Controller
{
/**
* Handle the incoming request.
*/
public function __invoke(Request $request, TranslationProviderService $translationService, SettingService $settingService)
{
// Basic permission check
if (!auth()->user()->hasPermission('manage-translations')) {
return response()->json(['message' => 'Unauthorized'], 403);
}
$validated = $request->validate([
'text' => 'required|string',
'from' => 'required|string|size:2',
'to' => 'required|string|size:2',
]);
// Check if target locale is supported
if (!in_array($validated['to'], $settingService->getSupportedLocales())) {
return response()->json(['message' => 'Target locale not supported'], 400);
}
$translated = $translationService->translate(
$validated['text'],
$validated['from'],
$validated['to']
);
if ($translated) {
return response()->json([
'translated' => $translated,
'from' => $validated['from'],
'to' => $validated['to']
]);
}
return response()->json(['message' => 'Translation failed'], 500);
}
}