public function init() { parent::init(); if (!isset($this->translations['platform']) && !isset($this->translations['platform*'])) { $this->translations['platform'] = ['class' => 'yii\\i18n\\GettextMessageSource', 'sourceLanguage' => P::$app->sourceLanguage, 'basePath' => '@platform/messages']; } if (!isset($this->translations['db']) && !isset($this->translations['db*'])) { $this->translations['db'] = ['class' => 'yii\\i18n\\DbMessageSource', 'sourceLanguage' => P::$app->sourceLanguage, 'sourceMessageTable' => models\MessageSource::tableName(), 'messageTable' => models\Message::tableName()]; } }
/** * TODO: add caching */ public static function initDbMessage($category, $language, $message, $translation) { $transaction = self::getDb()->beginTransaction(); try { $source = MessageSource::findOne(['category' => $category, 'message' => $message]); if ($source === null) { $source = new MessageSource(); $source->setAttributes(['category' => $category, 'message' => $message]); if (!$source->save()) { throw new \yii\base\Exception('Unable to create message source.'); } } self::getDb()->createCommand('INSERT IGNORE INTO ' . self::tableName() . '(id, language, translation, create_time, update_time) VALUES(:id, :language, :translation, :create_time, :update_time)', [':id' => $source->id, ':language' => $language, ':translation' => $translation, ':create_time' => time(), ':update_time' => time()])->execute(); $transaction->commit(); } catch (\Exception $e) { $transaction->rollback(); throw $e; } }
public function down() { $this->dropTable(Message::tableName()); $this->dropTable(MessageSource::tableName()); }