/** * Initializes the DbMessageSource component. */ public function init() { parent::init(); if ($this->autoInsert) { $this->on(static::EVENT_MISSING_TRANSLATION, function ($event) { if (!isset($this->messagesId[$event->message])) { $query = new Query(); $id = $query->select("id")->from($this->sourceMessageTable)->where(['category' => $event->category, 'message' => $event->message])->scalar($this->db); if ($id === false) { $this->db->createCommand()->insert($this->sourceMessageTable, ['category' => $event->category, 'message' => $event->message])->execute(); $id = $this->db->lastInsertID; } /* @var $i18n I18N */ $i18n = Yii::$app->i18n; $languages = $i18n->getLanguages(); foreach ($languages as $language_id => $language) { $query = new Query(); $exists = $query->from($this->messageTable)->where(['id' => $id, 'language_id' => $language_id])->exists($this->db); if (!$exists) { $this->db->createCommand()->insert($this->messageTable, ['id' => $id, 'language_id' => $language_id, 'translation' => ''])->execute(); } } $this->messagesId[$event->message] = $id; } $event->translatedMessage = $event->message; }); } }