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