コード例 #1
0
 /**
  * @since 2.5
  *
  * @param string $languageCode
  *
  * @return string
  */
 public function getFallbackLanguageBy($languageCode = '')
 {
     $languageCode = strtolower(trim($languageCode));
     if (isset($this->fallbackLanguages[$languageCode])) {
         return $this->fallbackLanguages[$languageCode];
     }
     $index = 'fallbackLanguage';
     // Unknown, use the default
     if ($languageCode === '') {
         return $this->canonicalFallbackLanguageCode;
     }
     try {
         $contents = $this->languageJsonFileContentsReader->readByLanguageCode($languageCode);
     } catch (RuntimeException $e) {
         $this->fallbackLanguages[$languageCode] = $this->canonicalFallbackLanguageCode;
     }
     // Get customized fallbackLanguage
     if (isset($contents[$index])) {
         $this->fallbackLanguages[$languageCode] = $contents[$index];
     }
     // The ultimate defense line, fallback was not set, or is false or empty
     // which means use the canonicalFallbackLanguageCode
     if (!isset($contents[$index]) || $this->fallbackLanguages[$languageCode] === false || $this->fallbackLanguages[$languageCode] === '') {
         $this->fallbackLanguages[$languageCode] = $this->canonicalFallbackLanguageCode;
     }
     return $this->fallbackLanguages[$languageCode];
 }
コード例 #2
0
 private function getCanonicalContentsFrom($languageCode, $index)
 {
     // Last resort before throwing the towel, make sure we really have
     // something when the default FallbackLanguageCode is used
     if (!isset($this->contents[$languageCode][$index])) {
         $this->contents[$languageCode] = $this->languageJsonFileContentsReader->readByLanguageCode($languageCode, true);
     }
     if (isset($this->contents[$languageCode][$index])) {
         return $this->contents[$languageCode][$index];
     }
     throw new RuntimeException("Unknown or invalid `{$index}` index for `{$languageCode}`");
 }
 /**
  * This method is just for convenience so that one can quickly add contents to files
  * without requiring an extra class when extending the language content. Normally the
  * test in active
  *
  * @dataProvider dataExtensionProvider
  */
 public function WriteToFile($topic, $extension)
 {
     $instance = new LanguageJsonFileContentsReader();
     $list = 'ar,arz,ca,de,es,fi,fr,he,hu,id,it,nb,nl,pl,pt,ru,sk,zh-cn,zh-tw';
     foreach (explode(',', $list) as $lang) {
         $contents = $instance->readByLanguageCode($lang, true);
         if ($contents === '' || !isset($contents[$topic])) {
             continue;
         }
         $contents[$topic] = $contents[$topic] + $extension;
         $instance->writeByLanguageCode($lang, $contents);
     }
 }