/** * @param $attributes * @param MissingTranslationEvent $event * @return bool */ protected static function saveMessage($attributes, MissingTranslationEvent $event) { /** @var Message $message */ $message = Message::findOne(['language' => $attributes['language'], 'id' => $attributes['id']]); if (!$message) { $message = new Message(); } $message->attributes = $attributes; if ($event->category === 'app' && $attributes['language'] === Language::getDefaultLanguage()->varCode) { $message->translation = $event->message; } elseif ($event->category === 'admin') { $message->translation = self::$autoTranslate ? (new ApiTranslation($message->language))->run($event->message) : $event->message; } return $message->save(); }
/** * @param $id * @param array $data * @return bool * @throws \Exception * @throws \yii\db\Exception */ public static function addTranslate($id, array $data) { $transaction = self::getDb()->beginTransaction(); try { foreach ($data as $language => $translation) { $model = self::findOne(['id' => $id, 'language' => $language]); if ($model) { $model->translation = $translation; $model->save(); } else { $model = new Message(); $model->id = $id; $model->language = $language; $model->translation = $translation; $model->save(); } } $transaction->commit(); } catch (\Exception $e) { $transaction->rollBack(); throw $e; } return true; }