code: protected function loadMessagesFromDb($category, $language)
      {
          $mainQuery = (new Query())->select(['message' => 't1.message', 'translation' => 't2.translation'])
              ->from(['t1' => $this->sourceMessageTable, 't2' => $this->messageTable])
              ->where([
                  't1.id' => new Expression('[[t2.id]]'),
                  't1.category' => $category,
                  't2.language' => $language,
              ]);
  
          $fallbackLanguage = substr($language, 0, 2);
          $fallbackSourceLanguage = substr($this->sourceLanguage, 0, 2);
  
          if ($fallbackLanguage !== $language) {
              $mainQuery->union($this->createFallbackQuery($category, $language, $fallbackLanguage), true);
          } elseif ($language === $fallbackSourceLanguage) {
              $mainQuery->union($this->createFallbackQuery($category, $language, $fallbackSourceLanguage), true);
          }
  
          $messages = $mainQuery->createCommand($this->db)->queryAll();
  
          return ArrayHelper::map($messages, 'message', 'translation');
      }
docs: Loads the messages from database.
  You may override this method to customize the message storage in the database.
  @param string $category the message category.
  @param string $language the target language.
  @return array the messages loaded from database.