/**
* 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;
}
}