Neos\Flow\I18n\LocaleCollection::getParentLocaleOf PHP Method

getParentLocaleOf() public method

The parent is a locale which is more generic than the one given as parameter. For example, the parent for locale en_GB will be locale en, of course if it exists in the locale tree of available locales. This method returns NULL when no parent locale is available, or when Locale object provided is not in the tree (ie it's not in a group of available locales). Note: to find a best-matching locale to one which doesn't exist in the system, please use findBestMatchingLocale() method of this class.
public getParentLocaleOf ( Locale $locale ) : mixed
$locale Locale The Locale to search parent for
return mixed Existing Locale instance or NULL on failure
    public function getParentLocaleOf(Locale $locale)
    {
        $localeIdentifier = (string) $locale;
        if (!isset($this->localeCollection[$localeIdentifier])) {
            return null;
        }
        if (isset($this->localeParentCollection[$localeIdentifier])) {
            return $this->localeParentCollection[$localeIdentifier];
        }
        $parentLocaleIdentifier = $localeIdentifier;
        do {
            // Remove the last (most specific) part of the locale tag
            $parentLocaleIdentifier = substr($parentLocaleIdentifier, 0, (int) strrpos($parentLocaleIdentifier, '_'));
            if (isset($this->localeCollection[$parentLocaleIdentifier])) {
                return $this->localeParentCollection[$localeIdentifier] = $this->localeCollection[$parentLocaleIdentifier];
            }
        } while (strrpos($parentLocaleIdentifier, '_') !== false);
        return null;
    }

Usage Example

 /**
  * @test
  */
 public function returnsNullWhenNoParentLocaleCouldBeFound()
 {
     foreach ($this->locales as $locale) {
         $this->localeCollection->addLocale($locale);
     }
     $this->assertNull($this->localeCollection->getParentLocaleOf(new I18n\Locale('sv')));
     $this->assertNull($this->localeCollection->getParentLocaleOf($this->locales[0]));
 }
All Usage Examples Of Neos\Flow\I18n\LocaleCollection::getParentLocaleOf