/** * Gets the list of supported cultures filtered by the specified * culture type. This is an EXPENSIVE function, it needs to traverse * a list of ICU files in the data directory. * This function can be called statically. * @param int culture type, CultureInfo::ALL, CultureInfo::NEUTRAL * or CultureInfo::SPECIFIC. * @return array list of culture information available. */ static function getCultures($type = CultureInfo::ALL) { $dataDir = CultureInfo::dataDir(); $dataExt = CultureInfo::fileExt(); $dir = dir($dataDir); $neutral = array(); $specific = array(); while (false !== ($entry = $dir->read())) { if (is_file($dataDir . $entry) && substr($entry, -4) == $dataExt && $entry != 'root' . $dataExt) { $culture = substr($entry, 0, -4); if (strlen($culture) == 2) { $neutral[] = $culture; } else { $specific[] = $culture; } } } $dir->close(); switch ($type) { case CultureInfo::ALL: $all = array_merge($neutral, $specific); sort($all); return $all; break; case CultureInfo::NEUTRAL: return $neutral; break; case CultureInfo::SPECIFIC: return $specific; break; } }