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