/**
  * @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();
 }
Esempio n. 2
0
 /**
  * @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;
 }