PKPLocale::getLocaleFromIso3 PHP Method

getLocaleFromIso3() static public method

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
return 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);
    }