loader = $loader; $this->cache = $cache; } /** * {@inheritdoc} */ public function load($language, array $directories) { if (empty($language)) { return array(); } $cacheKey = $this->getCacheKey($language, $directories); $translations = $this->cache->fetch($cacheKey); if (empty($translations) || !is_array($translations)) { $translations = $this->loader->load($language, $directories); $this->cache->save($cacheKey, $translations, 43200); // ttl=12hours } return $translations; } private function getCacheKey($language, array $directories) { $cacheKey = 'Translations-' . $language . '-'; // in case loaded plugins change (ie Tests vs Tracker vs UI etc) $cacheKey .= sha1(implode('', $directories)); return $cacheKey; } }