/**
  * Allows classes which implement i18nEntityProvider to provide
  * additional translation strings.
  *
  * Not all classes can be instanciated without mandatory arguments,
  * so entity collection doesn't work for all SilverStripe classes currently
  *
  * @uses i18nEntityProvider
  * @param string $filePath
  * @param string $module
  * @return array
  */
 public function collectFromEntityProviders($filePath, $module = null)
 {
     $entities = array();
     $classes = ClassInfo::classes_for_file($filePath);
     foreach ($classes as $class) {
         // Skip non-implementing classes
         if (!class_exists($class) || !is_a($class, 'SilverStripe\\i18n\\i18nEntityProvider', true)) {
             continue;
         }
         // Skip abstract classes
         $reflectionClass = new ReflectionClass($class);
         if ($reflectionClass->isAbstract()) {
             continue;
         }
         $obj = singleton($class);
         $entities = array_merge($entities, (array) $obj->provideI18nEntities());
     }
     ksort($entities);
     return $entities;
 }