/** * Load catalogue data from source. * * @param string $locale * @return Catalogue */ protected function loadCatalogue($locale) { $catalogue = new Catalogue($locale, $this->memory); if (array_key_exists($locale, $this->loadedLocales) && $this->config->cacheLocales()) { //Has been loaded return $catalogue; } $benchmark = $this->benchmark('load', $locale); try { //Loading catalogue data from source foreach ($this->source->loadLocale($locale) as $messageCatalogue) { $catalogue->mergeFrom($messageCatalogue); } //To remember that locale already loaded $this->loadedLocales[$locale] = $catalogue->getDomains(); $this->memory->saveData(static::MEMORY, $this->loadedLocales); //Saving domains memory $catalogue->saveDomains(); } finally { $this->benchmark($benchmark); } return $catalogue; }