/**
  * 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 $type culture type, sfCultureInfo::ALL, sfCultureInfo::NEUTRAL
  * or sfCultureInfo::SPECIFIC.
  * @return array list of culture information available. 
  */
 static function getCultures($type = sfCultureInfo::ALL)
 {
     $dataDir = sfCultureInfo::dataDir();
     $dataExt = sfCultureInfo::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 sfCultureInfo::ALL:
             $all = array_merge($neutral, $specific);
             sort($all);
             return $all;
             break;
         case sfCultureInfo::NEUTRAL:
             return $neutral;
             break;
         case sfCultureInfo::SPECIFIC:
             return $specific;
             break;
     }
 }