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