53 lines
1.5 KiB
PHP
53 lines
1.5 KiB
PHP
|
|
<?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);
|
||
|
|
}
|
||
|
|
}
|