public function testgetFallbackLanguageByUnknownLanguageCode()
 {
     $languageJsonFileContentsReader = $this->getMockBuilder(LanguageJsonFileContentsReader::class)->disableOriginalConstructor()->getMock();
     $languageJsonFileContentsReader->expects($this->atLeastOnce())->method('readByLanguageCode')->will($this->throwException(new \RuntimeException()));
     $instance = new LanguageFallbackFinder($languageJsonFileContentsReader);
     $this->assertEquals('en', $instance->getFallbackLanguageBy('unknownLanguageCode'));
 }
 private function getFromLanguageWithIndex($languageCode, $index)
 {
     $canonicalFallbackLanguageCode = $this->languageFallbackFinder->getCanonicalFallbackLanguageCode();
     if (!isset($this->contents[$languageCode]) || $this->contents[$languageCode] === array()) {
         // In case a language has no matching file
         try {
             $this->contents[$languageCode] = $this->languageJsonFileContentsReader->readByLanguageCode($languageCode);
         } catch (RuntimeException $e) {
             $this->contents[$languageCode] = array();
             $languageCode = $canonicalFallbackLanguageCode;
         }
     }
     if (isset($this->contents[$languageCode][$index]) && $this->contents[$languageCode][$index] !== array()) {
         return $this->contents[$languageCode][$index];
     }
     if ($languageCode !== $canonicalFallbackLanguageCode) {
         return $this->getFromLanguageWithIndex($this->languageFallbackFinder->getFallbackLanguageBy($languageCode), $index);
     }
     return $this->getCanonicalContentsFrom($canonicalFallbackLanguageCode, $index);
 }