Files
car_info/app/queue/jobs/TranslationJob.php
T

75 lines
2.1 KiB
PHP
Raw Normal View History

2025-05-28 09:50:54 +08:00
<?php
namespace app\queue\jobs;
use app\model\VehicleAr;
use app\model\VehicleEn;
use app\model\VehicleRu;
use app\service\TranslatorService;
use plugin\admin\app\model\Vehicle;
use support\Log;
class TranslationJob
{
protected array $payload;
public function __construct(array $payload)
{
$this->payload = $payload;
}
public function handle(): void
{
$pt = $this->payload;
$entityType = $pt['entityType'];
$sourceFields = $pt['sourceFields'];
$sourceLang = $pt['sourceLang'];
// $locale = $pt['locale'];
$id = $pt['id'];
2025-05-28 17:55:16 +08:00
$toLang = $pt['toLang'];
2025-05-28 09:50:54 +08:00
$translator = new TranslatorService();
if($entityType == 'location'){
$translationModels = [
'cn' => \app\model\Location::class,
'en' => \app\model\LocationEn::class,
'ar' => \app\model\LocationAr::class,
'ru' => \app\model\LocationRu::class
];
}elseif($entityType == 'vehicle'){
$translationModels = [
'cn' => Vehicle::class,
'en' => VehicleEn::class,
'ar' => VehicleAr::class,
'ru' => VehicleRu::class
];
}
2025-05-28 17:38:31 +08:00
$languages = ['cn' => 'cn', 'en' => 'en', 'ru' => 'ru', 'ar' => 'ar'];
2025-05-28 17:55:16 +08:00
$languages = array_merge(['to'=>$toLang],$languages);
2025-05-28 09:50:54 +08:00
unset($languages[$sourceLang]);
2025-05-28 15:33:47 +08:00
log::info('languages', [$languages]);
2025-05-28 09:50:54 +08:00
foreach ($languages as $lang => $xflang) {
if($entityType =='location'){
2025-05-28 17:55:16 +08:00
$fields = $translator->location($sourceFields,$xflang,$sourceLang);
2025-05-28 09:50:54 +08:00
}else{
2025-05-28 17:55:16 +08:00
$fields = $translator->vehicle($sourceFields,$xflang,$sourceLang);
2025-05-28 09:50:54 +08:00
}
$translationModel = $translationModels[$xflang];
if(!empty($id)){
$translation = $translationModel::find($id);
}else{
$translation = new $translationModel();
}
$translation->fill($fields);
$res = $translation->save();
2025-05-28 17:55:16 +08:00
log::info('$languages save '.$xflang, [$res,$fields]);
2025-05-28 09:50:54 +08:00
}
}
}