payload = $payload; } public function handle(): void { $pt = $this->payload; $entityType = $pt['entityType']; $sourceFields = $pt['sourceFields']; $sourceLang = $pt['sourceLang']; // $locale = $pt['locale']; $id = $pt['id']; $toLang = $pt['toLang']; $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 ]; } $languages = ['cn' => 'cn', 'en' => 'en', 'ru' => 'ru', 'ar' => 'ar']; $languages = array_merge(['to'=>$toLang],$languages); unset($languages[$sourceLang]); log::info('languages', [$languages]); foreach ($languages as $lang => $xflang) { if($entityType =='location'){ $fields = $translator->location($sourceFields,$xflang,$sourceLang); }else{ $fields = $translator->vehicle($sourceFields,$xflang,$sourceLang); } $translationModel = $translationModels[$xflang]; if(!empty($id)){ $translation = $translationModel::find($id); }else{ $translation = new $translationModel(); } $translation->fill($fields); $res = $translation->save(); log::info('$languages save '.$xflang, [$res,$fields]); } } }