yii\mongodb\i18n\MongoDbMessageSource::loadMessagesFromDb PHP Method

loadMessagesFromDb() protected method

You may override this method to customize the message storage in the MongoDB.
protected loadMessagesFromDb ( string $category, string $language ) : array
$category string the message category.
$language string the target language.
return array the messages loaded from database.
    protected function loadMessagesFromDb($category, $language)
    {
        $fallbackLanguage = substr($language, 0, 2);
        $fallbackSourceLanguage = substr($this->sourceLanguage, 0, 2);
        $languages = [$language, $fallbackLanguage, $fallbackSourceLanguage];
        $rows = (new Query())->select(['language', 'messages'])->from($this->collection)->andWhere(['category' => $category])->andWhere(['language' => array_unique($languages)])->all($this->db);
        if (count($rows) > 1) {
            $languagePriorities = [$language => 1];
            $languagePriorities[$fallbackLanguage] = 2;
            // language key may be already taken
            $languagePriorities[$fallbackSourceLanguage] = 3;
            // language key may be already taken
            usort($rows, function ($a, $b) use($languagePriorities) {
                $languageA = $a['language'];
                $languageB = $b['language'];
                if ($languageA === $languageB) {
                    return 0;
                }
                if ($languagePriorities[$languageA] < $languagePriorities[$languageB]) {
                    return +1;
                }
                return -1;
            });
        }
        $messages = [];
        foreach ($rows as $row) {
            $messages = array_merge($messages, $row['messages']);
        }
        return $messages;
    }