PKPLocale::getLocaleFromIso3 PHP Метод

getLocaleFromIso3() статический публичный Метод

This can be ambiguous if several locales are defined for the same language. In this case we'll use the primary locale to disambiguate. If that still doesn't determine a unique locale then we'll choose the first locale found.
static public getLocaleFromIso3 ( $iso3 ) : string
$iso3 string
Результат string
    static function getLocaleFromIso3($iso3)
    {
        assert(strlen($iso3) == 3);
        $primaryLocale = AppLocale::getPrimaryLocale();
        $localeCandidates = array();
        $locales =& AppLocale::_getAllLocalesCacheContent();
        foreach ($locales as $locale => $localeData) {
            assert(isset($localeData['iso639-3']));
            if ($localeData['iso639-3'] == $iso3) {
                if ($locale == $primaryLocale) {
                    // In case of ambiguity the primary locale
                    // overrides all other options so we're done.
                    return $primaryLocale;
                }
                $localeCandidates[] = $locale;
            }
        }
        // Return null if we found no candidate locale.
        if (empty($localeCandidates)) {
            return null;
        }
        if (count($localeCandidates) > 1) {
            // Check whether one of the candidate locales
            // is a supported locale. If so choose the first
            // supported locale.
            $supportedLocales = AppLocale::getSupportedLocales();
            foreach ($supportedLocales as $supportedLocale => $localeName) {
                if (in_array($supportedLocale, $localeCandidates)) {
                    return $supportedLocale;
                }
            }
        }
        // If there is only one candidate (or if we were
        // unable to disambiguate) then return the unique
        // (first) candidate found.
        return array_shift($localeCandidates);
    }