/** * Provide menu titles to the i18n entity provider */ public function provideI18nEntities() { $cmsClasses = self::get_cms_classes(); $entities = array(); foreach ($cmsClasses as $cmsClass) { $defaultTitle = LeftAndMain::menu_title($cmsClass, false); $ownerModule = i18n::get_owner_module($cmsClass); $entities["{$cmsClass}.MENUTITLE"] = array($defaultTitle, 'Menu title', $ownerModule); } return $entities; }
/** * Given a partial class name, attempt to determine the best module to assign strings to. * * @param string $class Either a FQN class name, or a non-qualified class name. * @return string Name of module */ protected function findModuleForClass($class) { if (ClassInfo::exists($class)) { return i18n::get_owner_module($class); } // If we can't find a class, see if it needs to be fully qualified if (strpos($class, '\\') !== false) { return null; } // Find FQN that ends with $class $classes = preg_grep('/' . preg_quote("\\{$class}", '\\/') . '$/i', ClassLoader::instance()->getManifest()->getClassNames()); // Find all modules for candidate classes $modules = array_unique(array_map(function ($class) { return i18n::get_owner_module($class); }, $classes)); if (count($modules) === 1) { return reset($modules); } // Couldn't find it! Exists in none, or multiple modules. return null; }