Kdyby\Translation\FallbackResolver::compute PHP Méthode

compute() public méthode

public compute ( Translator $translator, $locale )
$translator Translator
    public function compute(Translator $translator, $locale)
    {
        $locales = [];
        foreach ($this->fallbackLocales as $fallback) {
            if ($fallback === $locale) {
                continue;
            }
            $locales[] = $fallback;
        }
        if (strrchr($locale, '_') !== false) {
            array_unshift($locales, substr($locale, 0, -strlen(strrchr($locale, '_'))));
        }
        foreach ($translator->getAvailableLocales() as $available) {
            if ($available === $locale) {
                continue;
            }
            if (substr($available, 0, 2) === substr($locale, 0, 2)) {
                array_unshift($locales, $available);
                break;
            }
        }
        return array_unique($locales);
    }

Usage Example

 /**
  * @param Translator $translator
  * @param MessageCatalogueInterface[] $availableCatalogues
  * @param string $locale
  * @throws NotFoundResourceException
  * @return MessageCatalogueInterface
  */
 public function createCatalogue(Translator $translator, array &$availableCatalogues, $locale)
 {
     try {
         $this->doLoadCatalogue($availableCatalogues, $locale);
     } catch (NotFoundResourceException $e) {
         if (!$this->fallbackResolver->compute($translator, $locale)) {
             throw $e;
         }
     }
     $current = $availableCatalogues[$locale];
     $chain = array($locale => TRUE);
     foreach ($this->fallbackResolver->compute($translator, $locale) as $fallback) {
         if (!isset($availableCatalogues[$fallback])) {
             $this->doLoadCatalogue($availableCatalogues, $fallback);
         }
         $newFallback = $availableCatalogues[$fallback];
         if (($newFallbackFallback = $newFallback->getFallbackCatalogue()) && isset($chain[$newFallbackFallback->getLocale()])) {
             break;
         }
         $current->addFallbackCatalogue($newFallback);
         $current = $newFallback;
         $chain[$fallback] = TRUE;
     }
     return $availableCatalogues[$locale];
 }
All Usage Examples Of Kdyby\Translation\FallbackResolver::compute