/** * Gets the i18n directories to use globally. * * @return array An array of i18n directories */ public function getI18NGlobalDirs() { // if there is a configuration dimension if ($this->hasDimension()) { $cacheKey = 'sf_i18n_global_dirs'; // if there is a cache return it if ($this->dimension->getCache()->has($cacheKey)) { $dirs = $this->dimension->getCache()->get($cacheKey); } else { $dirs = array(); // application if (is_dir($dir = sfConfig::get('sf_app_dir') . '/i18n')) { array_push($dirs, $dir); } // plugins $pluginDirs = glob(sfConfig::get('sf_plugins_dir') . '/*/i18n'); if (isset($pluginDirs[0])) { array_push($dirs, $pluginDirs[0]); } // save cache $this->dimension->getCache()->set($cacheKey, $dirs); } } else { $dirs = parent::getI18NGlobalDirs(); } return $dirs; }
/** * This method is charged to get the cultures currently installed in the application. * It parses the mgmt/i18n/ directory and determine which languages are available. * @param sfApplicationConfiguration $configuration * @return an array of symbols (such as 'en', 'fr', 'de',...) representing the languages currently installed. */ public static function getInstalledCultures(sfApplicationConfiguration $configuration) { //Get the i18n directories and check if there's any, or it's not empty: $i18n_dirs = $configuration->getI18NGlobalDirs(); if (is_null($i18n_dirs) || empty($i18n_dirs)) { self::setError('An error occured while opening the languages folder. Check if the i18n directory exists.'); return null; } $installed_cultures = array(); //Get the first one: apps/mgmt/i18n/ $i18n_dir = dir($i18n_dirs[0]); //Get all of the subdirectories but ignore '.' and '..' directories while (false !== ($culture_dir = $i18n_dir->read())) { if (is_dir($i18n_dirs[0] . '/' . $culture_dir) && $culture_dir[0] != '.') { $installed_cultures[] = $culture_dir; } } return $installed_cultures; }
/** * Gets the i18n directories to use globally. * * @return array An array of i18n directories */ public function getI18NGlobalDirs() { $dirs = array(); $dirs = array_merge($dirs, array(sfConfig::get('sf_root_dir') . '/i18n')); $dirs = array_merge($dirs, parent::getI18NGlobalDirs()); return $dirs; }