/**
  * Finds SourceMessage model by quering or creating new one
  * @param  string $field       Name of the owner's field that's linked
  * @param  bool   $onlyMessage Whether to return model instance or string
  * @param  bool   $translation Whether to return translated message. Be sure
  *                             that $language param is set and it differs
  *                             from $defaultLanguage
  * @return mixed               \common\models\SourceMessage or string
  *                             depending on the $onlyMessage param
  */
 public function findSourceMessage($field, $onlyMessage = true, $translation = true)
 {
     if (!empty($this->_messages[$field])) {
         $model = $this->_messages[$field];
         return $onlyMessage ? $model->message : $model;
     }
     $owner = $this->owner;
     $model = null;
     if (!empty($owner->{$field})) {
         $model = SourceMessage::findOne($owner->{$field});
     }
     if ($model === null) {
         $model = new SourceMessage(['category' => $owner::tableName(), 'message' => null]);
     }
     $this->_messages[$field] = $model;
     $language = $this->language;
     $defaultLanguage = $this->defaultLanguage;
     // Get translated model if $model->language is set
     if (!empty($language && $language !== $defaultLanguage) && $translation) {
         return $model->getTranslation($language, $onlyMessage);
     }
     return $onlyMessage === true ? $model->message : $model;
 }